根据行号和列号获取单元格的内容


96

我想获得给定其行和列编号的单元格的内容。行号和列号存储在单元格(此处为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?还有其他方法吗?
萨拉丁·阿卡拉

Answers:


141

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

=INDIRECT(ADDRESS(B1,B2))

要么

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

都可以。请注意,INDIRECT和和OFFSET都是易失函数。易失函数可能会减慢计算速度,因为它们是在每次重新计算时都会计算的。


这足够有用,以至于我希望对其进行编辑以使右括号的数量正确。
Wyck

6
鉴于这个问题/答案的流行,在这里简短地说一说什么是易失函数是个很好的选择。
LondonRob

请注意,对于第二种形式,取决于$ a $ 1,要求您在以后的工作表编辑中不要以任何方式移动$ a $ 1。
Erk

INDIRECT+ ADDRESS是必经之路。用我的语言将Excel转换OFFSET成2个单词,中间用句点分隔。那是最糟糕的(与函数名中的变音符一起)!
Bitterblue

29

尝试= index(ARRAY,ROW,COLUMN)

其中:数组:选择整个工作表行,列:您的行和列引用

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


2

我花了一段时间,但是这就是我使之动态的方式。它不依赖于排序表。

首先,我从一列状态名称(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列中的动态值返回状态名称

现在,随着输入更多数据,计数列中的值随时间变化,我一直知道哪个州的飞机数量最多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.