Google Sheet 基于特定条件的动态运行计数/索引数组公式需求
动态数组公式实现特定值的运行计数(插入行无需手动调整)
刚看到你的需求——要做一个能自动适配插入行的运行计数数组公式,不用每次改范围对吧?刚好可以用Excel的动态数组功能来解决,完美适配你的场景。
假设你的目标数据在A列(A1是表头,数据从A2开始),要在B列生成仅匹配'C'的连续索引,直接用这个动态数组公式就行(Excel 365/2021及以上版本支持,回车直接生效,不用Ctrl+Shift+Enter):
=LET( data_range, A2:A, target_value, "C", match_check, data_range=target_value, running_index, SCAN(0, match_check, LAMBDA(current_count, is_match, IF(is_match, current_count+1, ""))), running_index )
公式拆解说明:
data_range, A2:A:用开放式引用锁定要检查的列,插入新行时会自动纳入新数据,彻底告别手动调整范围的麻烦。target_value, "C":这里是你要匹配的特定值,直接改成你实际需要的内容就行,也可以引用单元格(比如$E$1)来动态切换目标。match_check, data_range=target_value:生成一个布尔数组,标记每一行是否匹配目标值。running_index, SCAN(...):核心逻辑!SCAN会逐个遍历布尔数组,初始计数为0,遇到匹配的行就把计数+1,不匹配的行返回空值,完美生成你要的运行索引。
旧版Excel兼容方案(无动态数组支持)
如果你用的是旧版本Excel(不支持LET/LAMBDA),可以用这个数组公式(输入后必须按Ctrl+Shift+Enter确认):
=IF(A2:A="C", COUNTIF($A$2:A2, "C"), "")
不过这个版本插入新行后可能需要重新选中公式范围,按数组组合键刷新,不如动态数组版本省心。
使用小贴士:
- 动态数组版本输入后会自动溢出到B列所有对应行,不用下拉填充。
- 要匹配其他值?直接修改
target_value后面的内容就行,灵活得很。
内容的提问来源于stack exchange,提问作者Nico Roos
相关产品推荐
相关产品推荐

