【问题标题】:Get content of a cell given the row and column numbers在给定行号和列号的情况下获取单元格的内容
【发布时间】:2011-06-16 09:07:17
【问题描述】:

我想在给定行号和列号的情况下获取单元格的内容。行号和列号存储在单元格中(此处为 B1,B2)。我知道以下解决方案有效,但它们感觉有点老套。

溶胶 1

=CELL("contents",INDIRECT(ADDRESS(B1,B2)))

溶胶 2

=CELL("contents",OFFSET($A$1, B1-1,B2-1))

没有更冗长的方法吗? (比如 =CellValue(row,col) 或其他)?

编辑/澄清: 我只想使用 excel 工作表公式。没有VBA。简而言之,我几乎在寻找与 VBA Cells() 方法等效的 Excel 公式。

【问题讨论】:

  • 我们能得到更多的上下文吗?您是否只使用 Excel 公式? VBA?其他方法?

标签: excel excel-formula


【解决方案1】:

我花了一些时间,但这是我如何使它变得动态的。它不依赖于排序表。

首先,我从一列州名(A 列)和每个州的一列飞机(B 列)开始。 (第 1 行是标题行)。

找到包含飞机数量的单元格是:

=MATCH(MAX($B$2:$B$54),$B$2:$B$54,0)+MIN(ROW($B$2:$B$54))-1

我把它放到一个单元格中,然后给那个单元格起一个名字,“StateRow” 然后使用上面的提示,我总结了这个:

=INDIRECT(ADDRESS(StateRow,1))

这会从“StateRow”行第 1 列中的动态值返回状态名称

现在,随着输入更多数据,计数列中的值会随着时间变化,我总是知道哪个州拥有最多的飞机。

【讨论】:

    【解决方案2】:

    您不需要公式的 CELL() 部分:

    =INDIRECT(ADDRESS(B1,B2))
    

    =OFFSET($A$1, B1-1,B2-1)
    

    两者都可以。请注意,INDIRECTOFFSET 都是 volatile 函数。易变函数会减慢计算速度,因为它们是在每次重新计算时计算的。

    【讨论】:

    • 这非常有用,我希望看到它被编辑为具有正确数量的右括号。
    • 考虑到这个问题/答案的受欢迎程度,最好能在此介绍一下volatile function 是什么。
    • 请注意,对于第二种形式,根据 $a$1,您在以后的工作表编辑中不得以任何方式移动 $a$1。
    • INDIRECT +ADDRESS 是要走的路。我的语言中的 Excel 将 OFFSET 翻译成两个用句点分隔的单词。这是最糟糕的(连同函数名称中的变音符号)!
    【解决方案3】:

    试试 =index(ARRAY, ROW, COLUMN)

    在哪里: 数组:选择整个工作表 行、列:您的行和列引用

    对于那些看公式的人来说,这应该更容易理解。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多