如何修改excel公式内所引用的行数?
先看例子:
为了验证公式正确,使用的SUM(),括号里面的部分就是您用来替代COUNTA()里面的部分,先说结论,您需要把C2公式中的COUNTA(B$1:B$30)修改为:
COUNTA(OFFSET(B$1,LOOKUP(1,0/(B$1:B1="出勤"),ROW(B$1:B1)),0,IFERROR(VLOOKUP("出勤",IF({1,0},B2:B33,ROW(B2:B33)),2,0),10000)-LOOKUP(1,0/(B$1:B1="出勤"),ROW(B$1:B1))))
原理:
示例中SUM()内的部分,也就是您需要的COUNTA()里面的部分,本质上是一个OFFSET()函数,此函数需要四个参数,格式是:
OFFSET(标准单元格,下移行数,右移列数,包含行数,包含列数)
本问题里面,我们的四个参数分别如下:
【标准单元格】是B1,行锁定
【下移行数】是公式行之前的B列最后一个“出勤”文本所在行,使用LOOKUP(1,0/(),ROW())的套路,例如C2公式的结果是1、C7公式的结果是6,B$1下移这么多行,就刚好到了本区域第一个出勤数字处
【右移列数】0
【包含总行数】是公式行下面的第一个“出勤”文本所在行减去公式行之前最后一个“出勤”文本所在行,当前行之后第一个“出勤”文本我使用数组公式VLOOKUP("出勤",IF({1,0},B2:B33,ROW(B2:B33)),2,0),考虑到最后一组后面再也没有“出勤”文本,使用IFERROR(,10000)来保证正确计算
【包含列数】没写,默认1
.........有很多类似表格,B$1:B$30每隔特定距离行数就要变一次