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

如何用公式为空行分隔的数据区块生成重复计数列D

需求说明

现有表格数据以空行分隔为多个区块,每个区块起始行的C列标注SET A、SET B等标识。需新增D列,为每个区块内的所有行填充对应的连续计数(如SET A区块填1,SET B区块填2,依此类推)。已尝试VLOOKUP、QUERY、COUNTA、FLATTEN等函数未成功,目前可通过Apps Script实现,需纯公式解法。

源数据

A           B           C     

1       mercury     apple       SET A 
2       mars        mars              
3       jupiter     jupiter           
4       venus       haha              
5       saturn      saturn            
6                                     
7       jill        six         SET B 
8       earth       jill              
9       nine        earth             
10      ten         nine              
11                                    
12      thirteen    eleven      SET C 
13      fourteen    nepture           
14      sarah       thirteen          
15      sixteen     fourteen          
16      seventeen   sarah             
17                                    
18      nineteen    sixteen     SET D 
19      twenty      seventeen         
20                                    

期望结果(D列)

A           B           C       D 

1       mercury     apple       SET A   1 
2       mars        mars                1 
3       jupiter     jupiter             1 
4       venus       haha                1 
5       saturn      saturn              1 
6                                         
7       jill        six         SET B   2 
8       earth       jill                2 
9       nine        earth               2 
10      ten         nine                2 
11                                        
12      thirteen    eleven      SET C   3 
13      fourteen    nepture             3 
14      sarah       thirteen            3 
15      sixteen     fourteen            3 
16      seventeen   sarah               3 
17                                        
18      nineteen    sixteen     SET D   4 
19      twenty      seventeen           4 
纯公式解法

简洁版公式(Excel/Google Sheets通用)

在D1单元格输入公式后下拉填充:

=IF(C1="", "", COUNTIF($C$1:C1, "SET*"))

逻辑说明

逐行统计从C1到当前行中以SET开头的单元格数量,该数值即为当前区块的连续计数;若当前行C列为空,则D列留空。

数组版公式(一次性填充整列,Google Sheets适用)

=ARRAYFORMULA(IF(C:C="", "", COUNTIFS(ROW(C:C), "<="&ROW(C:C), C:C, "SET*")))

SCAN函数版解法(Excel 365/Google Sheets适用)

=ARRAYFORMULA(SCAN(0, C:C, LAMBDA(acc, curr, IF(curr="", acc, IF(LEFT(curr, 3)="SET", acc+1, acc)))))

逻辑说明

用SCAN函数维护一个累加器acc:

  • 当C列当前行curr为空时,保持累加器值不变
  • 当curr以SET开头时,累加器加1
  • 其他区块内非起始行场景,保持累加器值不变

内容的提问来源于stack exchange,提问作者spcsLrg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:50:59