Excel实现列内重复序列仅显示首行值的方法问询
Excel需求:仅保留连续重复值序列的首行对应值
想要实现:当某一列存在连续重复值序列时,仅显示该序列首行的对应值;值发生变化时显示新值,避免重复展示。尝试使用公式 =INDEX(A2:A300,MATCH(0,COUNTIF(B2:B300,C2),0)) 时出现#VALUE!错误。
原始数据:
event_time x1 Nov 22, 2023 @ 10:24:30.001 1 Nov 22, 2023 @ 10:25:00.007 1 Nov 22, 2023 @ 10:25:30.017 1 Nov 22, 2023 @ 10:26:00.017 2 Nov 22, 2023 @ 10:26:30.017 2 Nov 22, 2023 @ 10:27:00.017 0 Nov 22, 2023 @ 10:27:30.017 0 Nov 22, 2023 @ 10:28:00.017 1 Nov 22, 2023 @ 10:28:30.017 1
期望输出:
event_time x1 Nov 22, 2023 @ 10:24:30.001 1 Nov 22, 2023 @ 10:26:00.017 2 Nov 22, 2023 @ 10:27:00.017 0 Nov 22, 2023 @ 10:28:00.017 1
方法1:基础公式法(适配全Excel版本)
假设x1列数据在C2:C10,在D2输入以下公式,下拉填充:
=IF(C2<>C1,C2,"")
填充后D列仅保留连续重复序列的第一个值,其余为空。若要提取非空值到新区域:
- 动态数组版本(Excel 365/2021):
=FILTER(A2:B10,D2:D10<>"") - 非动态数组版本:在新区域首行输入
=INDEX(A:B,SMALL(IF(D2:D10<>"",ROW(D2:D10)),ROW(A1)),COLUMN(A1)),按Ctrl+Shift+Enter结束,横向、纵向下拉至出现#NUM!为止。
方法2:动态数组一步到位(Excel 365/2021)
无需辅助列,直接筛选连续重复序列的首行数据:
=FILTER(A2:B10,ROW(A2:A10)=MATCH(C2:C10,C:C,0))
注:A2:B10是包含event_time和x1的完整数据区域,C2:C10是x1列数据。
方法3:Power Query(适合大量数据)
- 选中数据区域,点击「数据」选项卡→「从表格/区域」,导入Power Query编辑器。
- 添加自定义列,公式为:
=if [x1] = List.Last(Previous([x1])) then null else [x1] - 筛选自定义列的非空值,删除自定义列,关闭并上载数据到Excel。
原公式错误原因
你使用的公式逻辑不匹配需求:COUNTIF(B2:B300,C2)的引用范围与条件不对应,且未针对连续重复做判断,导致无法找到匹配值,最终返回#VALUE!。
内容的提问来源于stack exchange,提问作者DazOver
相关产品推荐
相关产品推荐

