Excel 2007 - 我需要 - 在行中找到第一个非空白单元格,然后对该单元格和下一个单元格求和。这12个细胞中的一些可能是空白的。 我一直在使用这个不起作用的公式:
=SUM(OFFSET(CELL("address",INDEX(B7:BI7,MATCH(FALSE,ISBLANK(B7:BI7),0))),0,12))
在这个特定的行中,第一个填充的单元格是AM7,它在上面的公式的CELL部分中正确返回,但显然我没有正确地将它放在一起。此外,可能需要考虑第一个值在最后12列内的行,因此可能少于12列要求和。该表包含从第7行开始的1270行和包含B列的BI。请问你能告诉我哪里出错了。
答案 0 :(得分:0)
可以构造一个单元格范围,其中一对INDEX函数通过冒号链接,与传统的硬编码单元格范围非常相似。
在A7中作为标准公式,
=SUM(INDEX(B7:BI7, AGGREGATE(15, 6, COLUMN(A:BH)/(B7:BI7<>""), 1)):
INDEX(B7:BI7, MIN(AGGREGATE(15, 6, COLUMN(A:BH)/(B7:BI7<>""), 1)+10, COLUMNS(B:BI))))
AGGREGATE¹ function用于在列B:BI中提供位置以启动。 MIN function确保将10添加到起始位置(对于结束位置)将永远不会超过B:BI中的列数。
对于xl2010之前的安装,可以使用数组公式²复制AGGREGATE函数的SMALL子函数。
在A7中作为数组公式²,
=SUM(INDEX(B7:BI7, SMALL(IF(B7:BI7<>"", COLUMN(A:BH)), 1)):
INDEX(B7:BI7, MIN(SMALL(IF(B7:BI7<>"", COLUMN(A:BH)), 1)+10, 60)))
根据需要填写。
¹ Excel 2010引入了AGGREGATE function。早期版本不提供。
²数组公式需要使用 Ctrl + Shift + Enter↵完成。一旦正确进入第一个单元格,就可以像任何其他公式一样向下或向右填充或复制它们。尝试并减少对更接近表示实际数据范围的范围的全列引用。数组公式以对数方式计算计算周期,因此将参考范围缩小到最小值是一种好习惯。有关详细信息,请参阅Guidelines and examples of array formulas。