如果您将数据格式化为表格,您可以使用表格公式(例如 [@ABC])而不是 A1 格式(例如 A1、$C2 等)。但是有两个技巧需要考虑。
首先,上一行没有表格公式语法,相反,excel 将默认返回 A1 格式,但您可以使用偏移公式将当前单元格移动到上一行,如下所示。但是在这种情况下,它会返回一个 # 值错误,因为我不能 +1 到“ABC”。
ABC
1 =OFFSET([@ABC],-1,0)+1
2 =OFFSET([@ABC],-1,0)+1
3 =OFFSET([@ABC],-1,0)+1
4 ....
所以第二个技巧是使用 if 语句来初始化值,购买检查前一行值是否 = 标题值。如果相同,则使用初始值,否则添加增量。注意假设表名为 Table1
ABC
1 =IF(OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]],42,OFFSET([@ABC],-1,0)+1)
2 =IF(OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]],42,OFFSET([@ABC],-1,0)+1)
3 =IF(OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]],42,OFFSET([@ABC],-1,0)+1)
4 ....
请注意,您可以将初始值设置为表格外的单元格,以定义初始值(例如 $A$1)和增量(例如 $A$2),如下所示
ABC
1 =IF(OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]],$A$1,OFFSET([@ABC],-1,0)+$A$2)
2 =IF(OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]],$A$1,OFFSET([@ABC],-1,0)+$A$2)
3 =IF(OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]],$A$1,OFFSET([@ABC],-1,0)+$A$2)
4 ....
我一直使用这个 IF OFFSET 组合在表中进行迭代和循环。
如果您有很多列需要确定它们是否是第一行,您可以在第一行进行一列测试,其余的可以使用更简单的 if。例如,ABC 将为第一行给出 true 为其他行 false,然后 DEF 增加初始值
ABC DEF
1 =OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]] =IF([@ABC],$A$1,OFFSET([@DEF],-1,0)+$A$2)
2 =OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]] =IF([@ABC],$A$1,OFFSET([@DEF],-1,0)+$A$2)
3 =OFFSET([@ABC],-1,0)=Table1[[#Headers],[ABC]] =IF([@ABC],$A$1,OFFSET([@DEF],-1,0)+$A$2)
4 ....
希望有帮助