如何动态引用Google表格中的行和列

问题描述 投票:0回答:1

我被 Google 表格问题困扰了一段时间。我有三张表:“九月”、“十月”和“数量”。 9 月和 10 月的表格具有相同的格式,表格来自 B2:Cxxx ,其中 B2 和 C2 是标题(分别是名称和数量)。数量表的 B 列的名称与 9 月和 10 月表的 B 列中的名称相匹配。我希望根据匹配 B 列中的名称,使用 9 月和 10 月工作表 C 列中的值填充“数量”表中的 D 和 E 列。

我目前使用的公式是:

=IF(ISNA(INDEX(September!C:C; MATCH('Quantity'!$B3; September!B:B; 0))); ""; INDEX(September!C:C; MATCH('Quantity'!$B3; September!B:B; 0)))

这适用于 9 月份,但我想让工作表参考动态化。在数量表上,表格的第一行(第 2 行)以月份命名(例如“九月”、“十月”)。有没有办法根据公式所在同一列的第 2 行中的值动态引用工作表名称?

例如,如果我在 C 列中写入公式,它应该引用“九月”(来自单元格 C2),如果我将其拖到 D 列,它应该引用“十月”(来自单元格 D2)。我需要一个允许我动态引用工作表名称的解决方案,可以使用 R1C1 样式之类的公式(其中我在同一列中引用 R2)或使用 INDIRECT 函数。这样,我可以拖动未来几个月的公式,而无需手动更改工作表名称。

总之,我想在动态选择的月份表(例如,九月、十月)的 B 列中查找数量表的 B3 中的值。如果找到匹配项,它将返回该工作表 C 列中的相应值。如果未找到匹配项,则应返回空白。基本上,它就像带有错误处理功能的 VLOOKUP,但我需要工作表名称是动态的。

我尝试使用间接方法,但遇到了“解析公式错误”,公式如下:

=IF(ISNA(INDEX(INDIRECT("'"&INDIRECT(ADDRESS(2, COLUMN(), 4))&"'!C:C"); MATCH(INDIRECT("B"&ROW()); INDIRECT("'"&INDIRECT(ADDRESS(2, COLUMN(), 4))&"'!B:B"); 0))); ""; INDEX(INDIRECT("'"&INDIRECT(ADDRESS(2, COLUMN(), 4))&"'!C:C"); MATCH(INDIRECT("B"&ROW()); INDIRECT("'"&INDIRECT(ADDRESS(2, COLUMN(), 4))&"'!B:B"); 0)))

解释一下,如果这个公式放在数量表的D45中,它应该:

参考数量表 D2 中的表名称。 在 B45 中查找匹配值。 从动态选择的工作表的 C45 返回相应的值(例如,在 D2 中指定的工作表名称)。 我的目标是基于工作表名称的列标题创建动态引用,并使用行号来保持公式完整,即使在对名称进行排序时也是如此。不幸的是,该公式没有按预期工作,我想知道是否有人遇到过类似的问题或可以提供解决此问题的指导。

google-sheets google-sheets-formula
1个回答
0
投票

MAKEARRAY()
INDIRECT()
一起使用。 Makearray 将根据列和行数据缩放公式,您不需要拖放公式。

=MAKEARRAY(ROWS(TOCOL(A3:A,1)),COLUMNS(TOROW(B2:2,1)),
LAMBDA(r,c,XLOOKUP(INDEX(A3:A,r),INDIRECT(INDEX(B2:2,c)&"!B:B"),INDIRECT(INDEX(B2:2,c)&"!C:C"))))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.