如何按区域去重CSV行并按组内规则更新状态列(Excel/Python)
可行性结论
仅使用Excel原生功能即可完成该需求,无需编写Python脚本,数千行规模的CSV文件处理无性能压力。
具体操作步骤
- 第一步:提取去重后的区域列表
打开目标CSV文件后,选中A列(区域名称列)的全部有效数据,点击顶部「数据」选项卡下的「高级筛选」按钮:- 弹窗中选择「将筛选结果复制到其他位置」
- 「条件区域」留空不填
- 「复制到」选择空白列的起始单元格(比如D1,提前给D1单元格输入表头「区域」)
- 勾选「选择不重复的记录」后点击确定,即可自动生成所有去重后的区域名称。
如果你使用的是Excel 365/2021及以上支持动态数组的版本,可以跳过高级筛选操作,直接在D2单元格输入公式=UNIQUE(A2:A1048576),回车后会自动溢出填充所有不重复的区域值。
- 第二步:批量计算每个区域的聚合状态
在第一个去重区域对应的状态列单元格(即E2,提前给E1输入表头「最终状态」)输入以下公式:
公式逻辑完全匹配需求规则:=IF(COUNTIFS(A:A,D2,B:B,"Completed")>0,IF(COUNTIFS(A:A,D2,B:B,"In Progress")>0,"Particularly Completed","Completed"),"In Progress")- 先统计当前区域下状态为Completed的条目数,如果计数为0,直接判定为In Progress
- 如果存在Completed的条目,再统计当前区域下状态为In Progress的条目数,计数大于0说明两种状态共存,判定为Particularly Completed,否则判定为Completed
输入公式按回车生效后,鼠标移动到E2单元格右下角,等光标变为黑色十字填充柄时双击,即可自动把公式批量填充到所有区域行,完成全部状态计算。
- 第三步:固化结果导出
选中D、E两列生成的全部结果,右键选择「粘贴为值」,即可去除公式依赖,后续可直接将结果保存为新的CSV或Excel文件。
样例校验
按照上述操作处理提到的样例数据,输出结果完全符合预期:
- Chicago:两种状态同时存在,返回 Particularly Completed
- San Francisco:所有条目均为Completed,返回 Completed
- Los Angeles:所有条目均为In Progress,返回 In Progress
内容的提问来源于stack exchange,提问作者laurimikhael
相关产品推荐
相关产品推荐

