不使用 VBA,对取自不同单元格的行号和列号所引用的单元格求和

不使用 VBA,对取自不同单元格的行号和列号所引用的单元格求和

我的问题很简单,但描述起来有些复杂。

我有四个单元格,其中包含四个整数,它们表示两个单元格的行号和列号。例如

     A    B
1    54   23
2    154  123

因此我们有两个单元格:

  • 单元格 #1:第 54 行,第 23 列和
  • 单元格 #2,第 154 行,第 123 列。

我想对单元格 #1 和单元格 #2 之间的所有单元格内容求和。当然,我需要引用单元格 A1、A2、B1、B2,其中包含相关值,而不是实际值。比如,我想把这个总和放在单元格 C3 中。

在 VBA 中它会很简单(尽管很长):

Range("C3").Cells = WorksheetFunction.Sum( _
    Range(Cells(Cells(1,1),Cells(1,2)), _
        Cells(Cells(2,1),Cells(2,2))))

如果没有 VBA 怎么办?

我尝试了类似的东西=SUM(ADDRESS(A1,B1),ADDRESS(A2,B2))。我的问题是,使用 ADDRESS() 返回文本。如果我将此文本放入 SUM() 中,它会返回错误。

答案1

[已编辑 - 我最初误读了这个问题]

一种方法是使用函数OFFSET来定位您想要的范围。

=SUM(OFFSET(A1,A1-1,B1-1,A2-A1+1,B2-B1+1))

OFFSET(A1,A1-1,B1-1)表示一个单元格区域,其行号和列号分别为 A1 和 A2 中的值。最后两个参数(A2-A1+1B2-B1+1)是新区域的行数和列数。

答案2

间接和地址是易失性的使用索引:

=SUM(INDEX(A:AAA,A1,B1):INDEX(A:AAA,A2,B2))

答案3

虽然看上去很管用,但效果并不好。

=SUM(INDIRECT(ADDRESS(ROW(INDIRECT("R"&A1&"C"&B1,FALSE)),COLUMN(INDIRECT("R"&A1&"C"&B1,FALSE)))):INDIRECT(ADDRESS(ROW(INDIRECT("R"&A2&"C"&B2,FALSE)),COLUMN(INDIRECT("R"&A2&"C"&B2,FALSE)))))

它将单元格内容转换为 R1C1 样式引用(即R54C23)。然后,它将其转换为固定引用(即$W$54)。然后,它将其用作间接引用插入SUM()函数。

相关内容