我想将单元格值与工作表名称匹配,然后根据该值返回值。我该怎么做?
例如,有 2 列(A 和 B)
如果范围 A1:A5 中的值 = 其他工作表名称,则返回该其他工作表名称中 B 列的单元格值
先感谢您。
答案1
如果 Sheet1 中的 A2 包含公式,并且 B2 包含工作表名称“Sheet2”,则这将获取 Sheet2!A2 中的值:
=INDIRECT(B2&"!"&ADDRESS(ROW(),COLUMN()))
要获取 Sheet2!B2 中的值,您可以将 1 添加到COLUMN()
:
=INDIRECT(B2&"!"&ADDRESS(ROW(),COLUMN()+1))
解释:
INDIRECT
使用格式化为标准单元格引用的文本(例如“A2”或“Sheet2!$A$2”)返回存储在单元格中的值。现在我们将尝试自动生成该文本。ADDRESS(row, col)
将单元格和列号转换为文本格式的标准单元格引用。ADDRESS(1,1) 返回“$A$1”,依此类推。ROW()
返回公式所在的行号和COLUMN()
列号。由于公式在 A2 中,ROW()
所以等于 2,COLUMN()
等于 1。这些只是普通数字,所以我们可以将列号加 1 得到 B 而不是 A。我们将这些数字提供给ADDRESS(2,2)
得到“$B$2”。- 我们将此地址附加到 B2 中我们想要的 sheet 名称后面:(
B2&!"&ADDRESS(ROW(),COLUMN())
不要忘记中间的感叹号),以获得我们需要的完整单元格引用:“Sheet2!$B$2” - 最后一步,我们将该文本提供给
INDIRECT
,它将去获取该地址的值。