【问题标题】:Specifying which cells a formula looks into, with a formula使用公式指定公式查看的单元格
【发布时间】:2019-05-28 15:02:33
【问题描述】:

抱歉标题,不知道如何问这个问题。我正在尝试指定我在 excel 列中的数据范围,其中相关值的范围会发生变化。因此,为了可视化,数据可以在单元格 A1-A4 中,下面有零(或单元格 A1-A3 或 A1-A25 中的数据等)。通过使用 countif,我可以获得变化范围内非零值的数量,这很有用,因为它指定了我想要的范围的结束行。我的问题是我如何在公式中使用这个值。在我的脑海中(如果我将 countif 公式放在 B1 中),范围看起来像这样:$A$1:$A$(B1 的值)但我不确定如何将其付诸实践。有什么想法吗?

【问题讨论】:

  • 那么在感兴趣的范围之下有实际数据以零的形式存在吗?还是该列的其余部分为空?也许一些样本数据和期望的结果将有助于可视化
  • 是的,实际数据。数据基于 if 语句,例如 =IF(x=T, Y, "")

标签: excel excel-formula


【解决方案1】:

间接和偏移是易变的,虽然一个易变的公式不会引起问题,但许多会减慢计算速度。每次 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 并将其上方的单元格设置为范围中的最后一个。

【讨论】:

    【解决方案2】:

    您可以使用INDIRECTOFFSET 函数

    使用INDIRECT 是更简单的方法:要指定从 A 列第 1 行开始到 A 列第 COUNTIF(A:A,">0") 行结束的范围,您只需编写 INDIRECT("A1:A" & COUNTIF(A:A, ">0")) - 所以,如果有 7 个单元格大于 0 的值,则变为 INDIRECT("A1:A7")

    使用OFFSET 更复杂 - 您必须指定要向左/向下移动多少个单元格(00),要获取多少行数据(COUNTIF(A:A, ">0")),以及多少列从您的起始位置 (A1) 获取的数据 (1) - 所以它看起来像这样:OFFSET(A1, 0, 0, COUNTIF(A:A, ">0"), 1)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-06
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多