【问题标题】:How to get a cell reference programatically如何以编程方式获取单元格引用
【发布时间】:2019-05-10 03:45:19
【问题描述】:

我想以编程方式使用特定范围引用来求和(接下来的 25 个单元格),为此我使用 OFFSET(),这需要单元格引用。但是,大多数查找函数返回索引或值,而不是单元格引用,所以我必须使用 INDEX()

我发现我必须这样做只是为了以编程方式查找单元格的单元格引用有点荒谬:

索引(A:A, MATCH(C2, A:A, 0), 1)

有没有更好的方式以编程方式获取单元格引用?

整个事情看起来像:

=SUM(OFFSET(INDEX(A:A, MATCH(C2, A:A, 0), 1), 0, 1, 25, 1))

【问题讨论】:

  • 你能用ADDRESS()吗?
  • Match() 返回匹配单元格的行,您已在其中指定要搜索的列...您可以使用 ADDRESS(MATCH(C2,A:A,0),1) 之类的内容并在偏移量中使用它。
  • @BruceWayne @Cyril OFFSET() 不接受ADDRESS() 的输出,我必须先做INDIRECT()。使用另一张纸上的单元格时会变得特别混乱。
  • @FelipeC 整个 volatile 函数的东西......我在想 indirect() 也是 volatile 并且不能与 offset() 一起使用;如果没有即插即用的技术,就永远无法保持其中一些笔直。最后我记得,index() 也是不稳定的,无法用于偏移量,但我现在可以这样做,所以可能在一个较新的 excel 版本中进行了更改

标签: excel


【解决方案1】:

您将需要使用多个 Match() 及其偏移量...请参阅:

=SUM(OFFSET(A1,MATCH(C2,A:A,0)-1,0):OFFSET(A1,MATCH(C2,A:A,0)+24,0))

分解:

  • 要在第 1 列 (A) 中求和的范围中的第一个单元格,必须从中减去 1,以便使用实际的匹配参考:

    OFFSET(A1,MATCH(C2,A:A,0)-1,0)

  • 要在第 1 列 (A) 中求和的范围内的最后一个单元格,必须从所需的偏移量 (25) 中减去 1,类似于第一个单元格:

    OFFSET(A1,MATCH(C2,A:A,0)+24,0)

  • 然后您可以在偏移之间求和

【讨论】:

    【解决方案2】:

    这对您来说可能看起来很荒谬,但最好的非易失性选项是一对 INDEX/MATCH 函数,它们定义 B 列中总和范围的开始和停止,并完全分配 OFFSET。

    =sum(INDEX(B:B, MATCH(C2, A:A, 0)):INDEX(B:B, MATCH(C2, A:A, 0)+24))
    

    【讨论】:

    • 这是一种有趣的解决问题的方法,但它比我开始的方法还要复杂。我想要单元格引用的原因是为了简化公式。
    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 2014-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多