【问题标题】:Return the range within an array Excel返回数组 Excel 中的范围
【发布时间】:2021-08-31 20:30:15
【问题描述】:

我需要从特定数组中检索由索引分隔的范围

我不能使用 OFFSET,因为它不使用数组作为参数。 然后该范围将用于二次计算

例子:

我想计算列 Numbers 中第 4 到第 11 个值的 SUM。

所以最后公式应该类似于: =SUM(Numbers[4:10]) = 36 4 和 10 是所需的索引。

我尝试过使用 OFFSET 和 INDEX,但不知道该怎么做。

【问题讨论】:

  • =SUM(INDEX(B:B,5):INDEX(B:B,11))?
  • @BigBen 是的,我试过了,问题是我使用的数组没有显示在单元格中,因为它是数组 NUMBERS 中的 FILTER() 它是一个不包含 0s =SUM 的数组(INDEX(FILTER(Numbers,Numbers0),5):INDEX(FILTER(Numbers,Numbers0),10)) = #VALUE!
  • @Allanguzmanf 如果 OP 有FILTER(),那么可以使用=SUM(FILTER(B2:B21,(A2:A21>=StartIndex)*(A2:A21<=EndIndex)))

标签: arrays excel indexing excel-formula range


【解决方案1】:

使用索引和序列:

=SUM(INDEX(FILTER(Numbers,Numbers<>0),SEQUENCE(8)+3))

【讨论】:

    【解决方案2】:

    Index()INDIRECT() 将起作用。 OFFSET() 也可以,但需要应用一些技巧。正如@BigBen 建议的那样,您可以像=SUM(INDEX(B:B,5):INDEX(B:B,11)) 一样使用INDEX(),但我相信您不会喜欢硬编码索引号。因此,您可以使用以下公式动态输入两个索引并获得这些索引之间的总和。试试-

    =SUM(INDEX(B:B, MATCH(F2,A1:A21,0)):INDEX(B:B,MATCH(F3,A1:A21,0)))
    

    INDIREC() 也将以这种方式工作。

    =SUM(INDIRECT("B" & MATCH(F2,A1:A21,0) & ":B" & MATCH(F3,A1:A21,0)))
    

    如果你有Excel365,那么你可以使用FILTER() 来简化公式-

    =SUM(FILTER(B2:B21,(A2:A21>=F2)*(A2:A21<=F3)))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-05
      • 1970-01-01
      • 2016-04-02
      • 2017-03-04
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      相关资源
      最近更新 更多