偏移函数returns#VALUE!小数据集

Offset function returns #VALUE! with small dataset

我在 excel 中有一些数据,想使用偏移函数访问某些行,但是函数 returns #VALUE! 用于我的小数据集。

使用这个,OFFSET(A2;0;0;COUNTA(A2:A99999);1) 我得到 #VALUE!。将公式更改为 OFFSET(A2;0;0;100;1) 时,我得到一个值。

任何建议,我做错了什么?

感谢您的回复!

OFFSET(A2;0;0;(range > 1);1) 将 return 一个数组而不是单个单元格的值。这只有在你将 sum 或其他一些聚合函数放在它周围时才有意义。 (你想用这个公式达到什么目的?)

例如

=SUM(OFFSET(A2;0;0;COUNTA(A2:A99999);1))

如果 =OFFSET(A2;0;0;COUNTA(A2:A99999);1) 是您的完整公式,由于 Inferred Position(我希望这是正确的术语),您将获得带有硬编码数字的结果。这意味着当您引用一个范围但不处理整个范围时,操作单元格是相对于当前位置的单元格。

如果你把 =$A:$A 放在 D2 中并向下填充,你将根据你的行位置与 A 列匹配得到处理结果。继续向下填充,当你去的时候你会得到 #VALUE! 错误过去第 11 行。

这就是 =OFFSET(A2; 0; 0; 100; 1) returns 零和 =OFFSET(A2; 0; 0; COUNTA(A2:A99999); 1) returns #VALUE! 错误的原因。第一个公式与 =$A:$A1 相同,它返回零,因为您将公式放在第 101 行上方的单元格中(引用 A 列中返回值 0 的空白单元格)。第二个(带有 COUNTA function)就像说 =$A:$A 并且您将其放入第 13 行(第 11 行下方)的单元格中。

附录:

相关说明,INDEX 函数MATCH 函数 的这些变体是非易失性的,并且比 OFFSET 函数 同时提供与您使用 OFFSET 和 COUNTA function.

实现的相同的单元格范围引用
'for text in a column
=$A:INDEX($A:$A, MATCH("zzz", $A:$A))

'for numbers in a column
=$A:INDEX($A:$A, MATCH(1e99, $A:$A))

'for unknown in a column
=$A:INDEX($A:$A, IFERROR(MATCH(1e99, $A:$A), MATCH("zzz", $A:$A)))

'for combined in a column
=$A:INDEX($A:$A, MAX(MATCH(1e99, $A:$A), MATCH("zzz", $A:$A)))

'I don't like COUNTA but it works as long as there are no blanks
=$A:INDEX($A:$A, COUNTA($A:$A))

此方法有很多变体。或许您可以使用上述方法之一来达到您的目的。