背景:
我使用的是带有四个选项卡的 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 行始终为空。
尝试:
我尝试了使用 VLOOKUP 或 MATCH/INDEX 函数的一系列选项,但总是遇到错误。我使用 ARRAYFORMULA 作为函数的基础,因为我不能有一个从行到行向下拖动的公式,因为 - 再次 - 这些行仅在用户添加它们时显示。
一次尝试是这样的:
=ARRAYFORMULA(IF(ROW(A3:A) < 5, "", IF(A5:A = "", "", IFERROR(VLOOKUP(A5:A, 'Sheet4'!A$6:H, 8, FALSE), ""))))
偏移结果,以便前三个结果仍然产生地址,但与正确的个体偏移了两行。最后两行只是错误。它看起来像这样:
另一个失败的尝试是这样的:
=ARRAYFORMULA(IF(ROW(A5:A) < 5, "", IFERROR(VLOOKUP(A5:A, 'Sheet3'!$A$6:$H, 8, FALSE), "")))
该尝试至少显示了所有五个地址,但与包含个人姓名的行有偏移。它看起来像这样:
使用 INDEX/MATCH 的尝试以类似的结果结束,例如以下代码:
=ARRAYFORMULA(IF(ROW(A5:A) < 5, "", IF(A5:A = "", "", INDEX('Sheet4'!H$6:H, MATCH(A5:A, 'Sheet4'!A$6:A, 0)))))
那一个以所有五个人的相同地址结束,并且像上面的第二个错误一样错位了两行:
其他尝试与上述三种尝试类似,都失败了。
问题:
如何使行保持对齐,但仍然不返回第 3 行和第 4 行的值,然后将名称与 Sheet4 中的实际名称和地址进行匹配?
谢谢!
将以下公式放入
J3
单元格中。
=VSTACK("","",MAP(A5:A,LAMBDA(x,IF(x="",,IFERROR(XLOOKUP(x,Sheet4!A:A,Sheet4!H:H,""),"")))))
这里
VSTACK("",""
...将在XLOOKUP()
的结果之前添加两个空行。所以,你不会得到任何东西(,而是空字符串)到J3
和J4
。