我想根据行号和列号获取单元格的内容。行号和列号存储在单元格中(此处为B1,B2)。我知道以下解决方案有效,但他们觉得有点hacky。
Sol 1
=CELL("contents",INDIRECT(ADDRESS(B1,B2)))
Sol 2
=CELL("contents",OFFSET($A$1, B1-1,B2-1))
是否有冗长的方法? (比如= CellValue(row,col)或者其他什么)?
编辑/澄清: 我只想使用excel工作表公式。没有VBA。简而言之,我几乎将VBA Cells()方法视为excel公式。
答案 0 :(得分:140)
您不需要公式的CELL()部分:
=INDIRECT(ADDRESS(B1,B2))
或
=OFFSET($A$1, B1-1,B2-1)
都会奏效。请注意,INDIRECT
和OFFSET
都是易失函数。易失性函数可以减慢计算速度,因为它们是在每次重新计算时计算的。
答案 1 :(得分:29)
Try = index(ARRAY,ROW,COLUMN)
其中: 数组:选择整个工作表 行,列:您的行和列引用
对于那些看公式的人来说,这应该更容易理解。
答案 2 :(得分: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列
中的动态值返回状态名称现在,随着更多数据的输入,计数列中的值随着时间的推移而变化,我总是知道哪个州拥有最多的飞机。