如何设置一个匹配两张表之间的列的公式,同时无论值如何都返回前两行的空白值

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

背景:

我使用的是带有四个选项卡的 Google 表格电子表格。它使用 AppendRow 函数将 Sheet2 中的特定数据添加到 Sheet3 上,并将数据从那里导出到其他电子表格。 Sheet4 包含联系信息和其他数据。

目标:

我想在下一部分中使用表内公式,而不是脚本。该公式需要填充 Sheet3 的 J 列。它应该采用 Sheet3 的 A 列中的名称字段,将其与 Sheet4 的 A 列相匹配,并显示 Sheet4 的 H 列中的值(这是联系信息)。

澄清编辑:在 Sheet4 上,包含联系信息的数据从第 6 行开始,而不是像 Sheet3 上那样从第 4 行(空白)/第 5 行(第一个附加结果)开始,因为 Sheet4 的标题较长。

这应该很简单。我遇到的挑战是我想将公式放在 Sheet3 的单元格 J3 中,但不显示 J3 或 J4 的任何结果。第一场比赛应在 A5 和 J5 之间进行,依此类推。我无法指定固定的行数,因为 Sheet3 的大小根据用户正在使用的记录数而变化。

公式必须位于第 3 行,因为当用户开始输入数据时,工作表选项卡上仅存在这三行。每个附加行仅在需要时添加,并且由于某种原因第 4 行始终为空。

它应该是这样的: Sample output

尝试:

我尝试了使用 VLOOKUP 或 MATCH/INDEX 函数的一系列选项,但总是遇到错误。我使用 ARRAYFORMULA 作为函数的基础,因为我不能有一个从行到行向下拖动的公式,因为 - 再次 - 这些行仅在用户添加它们时显示。

一次尝试是这样的:

=ARRAYFORMULA(IF(ROW(A3:A) < 5, "", IF(A5:A = "", "", IFERROR(VLOOKUP(A5:A, 'Sheet4'!A$6:H, 8, FALSE), ""))))

偏移结果,以便前三个结果仍然产生地址,但与正确的个体偏移了两行。最后两行只是错误。它看起来像这样:

Failed attempt 1

另一个失败的尝试是这样的:

=ARRAYFORMULA(IF(ROW(A5:A) < 5, "", IFERROR(VLOOKUP(A5:A, 'Sheet3'!$A$6:$H, 8, FALSE), "")))

该尝试至少显示了所有五个地址,但与包含个人姓名的行有偏移。它看起来像这样: Failed attempt 2

使用 INDEX/MATCH 的尝试以类似的结果结束,例如以下代码:

=ARRAYFORMULA(IF(ROW(A5:A) < 5, "", IF(A5:A = "", "", INDEX('Sheet4'!H$6:H, MATCH(A5:A, 'Sheet4'!A$6:A, 0)))))

那一个以所有五个人的相同地址结束,并且像上面的第二个错误一样错位了两行:

Failed attempt 3

其他尝试与上述三种尝试类似,都失败了。

问题:

如何使行保持对齐,但仍然不返回第 3 行和第 4 行的值,然后将名称与 Sheet4 中的实际名称和地址进行匹配?

谢谢!

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

将以下公式放入

J3
单元格中。

=VSTACK("","",MAP(A5:A,LAMBDA(x,IF(x="",,IFERROR(XLOOKUP(x,Sheet4!A:A,Sheet4!H:H,""),"")))))

这里

VSTACK("",""
...将在
XLOOKUP()
的结果之前添加两个空行。所以,你不会得到任何东西(,而是空字符串)到
J3
J4

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