You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Excel中按城市列条件保留最多1000行数据?

如何在Excel中按城市列条件保留最多1000行数据?

当然可以做到!而且完全不用SQL或Python,用Excel自带的功能就能搞定,操作也不算复杂,适合日常用Excel的朋友。我给你两种实用方法,按需选择就行:

方法一:辅助列手动筛选法(通用所有Excel版本)

这种方法直观易懂,适配所有Excel版本,还能选择固定保留前1000行,或者随机保留1000行(避免每次都选同一批数据):

场景1:保留每个城市的前1000行(按原顺序)

  1. 给数据新增一个辅助列(比如C列),在C2单元格输入公式:
    =COUNTIF($B$2:B2,B2)
    下拉填充到所有行。这个公式会按城市给每行连续编号——比如纽约的第一行是1,第二行是2,直到第5000行是5000;明尼阿波利斯的行就是1到300。
  2. 全选所有数据(包括表头),点击「数据」选项卡的「排序」:先按B列(城市)排序,再按C列(编号)排序,这样同一个城市的行就会按编号整齐排列。
  3. 点击C列的筛选按钮,只勾选「小于或等于1000」的数值。筛选完成后,复制这些行到新工作表,就得到了你想要的结果——纽约、波士顿各留1000行,明尼阿波利斯的所有行都保留。

场景2:随机保留每个城市的1000行(避免固定批次)

如果不想每次都留同一批数据,想要随机筛选,可以调整辅助列:

  1. 先加D列,在D2输入=RAND(),下拉填充给每行生成一个0到1之间的随机数。
  2. 再在C2输入数组公式(Excel 2019及以下版本需要按Ctrl+Shift+Enter确认,365/2021版本直接回车即可):
    =RANK.EQ(D2,IF($B$2:$B$100000=B2,$D$2:$D$100000,""),1)
    这个公式会按城市分组对随机数排名,每个城市里的行都会有1到n的随机排名。
  3. 后续步骤和场景1一致:排序、筛选C列<=1000的数值,复制结果即可。

方法二:动态数组公式法(适合Excel 365/2021)

如果你的Excel是365或2021版本,支持动态数组功能,那可以一步到位,不用手动排序筛选:

在新工作表的A1单元格输入以下公式(直接回车即可,公式会自动扩展生成结果):

=LET(
    all_data, A2:B100001,  // 替换成你的实际数据范围(含内容不含表头)
    city_col, INDEX(all_data,,2),
    row_ids, ROW(all_data),
    // 按城市分组给每行排名,这里用行号排序,要随机的话把ROW换成RANDARRAY
    rank_per_city, BYROW(row_ids, LAMBDA(r, RANK.EQ(r, FILTER(row_ids, city_col=INDEX(city_col,r-ROW(A2)+1)),1))),
    // 筛选出排名<=1000的行
    FILTER(all_data, rank_per_city <= 1000)
)

公式说明:用LET定义变量简化逻辑,BYROW给每个城市的行单独排名,最后用FILTER直接输出符合条件的所有行。如果要随机筛选,把公式里的ROW(all_data)改成RANDARRAY(ROWS(all_data))即可。

备注:内容来源于stack exchange,提问作者J B

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:47:45