对标题表示歉意,不确定如何提出此问题。我正在尝试指定我在excel上的列中的数据范围,其中相关值的范围会更改。因此,为了可视化,数据可以在单元格A1-A4中,而零以下(或单元格A1-A3或A1-A25中的数据,等等)。通过使用countif,我可以获得变化范围内的非零值的数量,这很有用,因为它指定了我想要的范围的结尾行。我的问题是如何在公式中使用此值。在我的脑海中(如果我将countif公式放在B1中),范围看起来像这样:$ A $ 1:$ A $(B1中的值),但是我不确定如何将其付诸实践。有什么想法吗?
答案 0 :(得分:3)
使用INDIRECT
是更简单的方法:要指定从A列第1行开始到A列第COUNTIF(A:A,">0")
行结束的范围,您只需编写INDIRECT("A1:A" & COUNTIF(A:A, ">0"))
-因此,如果有7个单元格的值大于0,则该值将变为INDIRECT("A1:A7")
使用OFFSET
更为复杂-您必须指定要向左/向下移动多少个单元格(0
和0
),要获取多少行数据({{1 }}),以及从起始位置(COUNTIF(A:A, ">0")
)获取多少列数据(1
-因此看起来像这样:A1
答案 1 :(得分:3)
间接和偏移是易变的,虽然一个易变的公式不会引起问题,但许多会减慢计算速度。无论数据是否更改,每次Excel重新计算时,易失函数都会重新计算。
我更喜欢INDEX:
$A$1:INDEX(A:A,COUNTIF(A:A,">0"))
但是,即使COUNTIF()如果使用了太多次,也会减慢计算速度。您可以在这种情况下使用MATCH:
$A$1:INDEX(A:A,MATCH(0,A:A,0)-1)
现在将找到第一个0
并将其上方的单元格设置为范围中的最后一个。