根据单元格引用在 google 个工作表中搜索另一个 tab/sheet 的值

Search a value from another tab/sheet in google sheets based on cell reference

我正在尝试在 google sheet 中创建一个搜索页面,用户在其中的一个或多个单元格中输入值,然后在其他单元格 auto-populate 中输入值来自另一个 tab/sheet 基于在搜索单元格中输入的值。

我试图在数组中使用 VLOOKUP up 但它给出了错误或 N/A.

我有 'sheet1' 的数据来自 google 表单(从 A 到 BN 的列),我正在尝试在 'Sheet2' 中创建一个搜索页面,位于用户的顶部例如可以写 ID-number,我想从 'sheet1' 中获取与写在 'sheet1'.[=22 的同一行上的 ID-number 相匹配的列的值=]

我已经检查过:

还有其他的,但我不是在寻找任何脚本。

在简单形式中,公式为:

=VLOOKUP(B3,'sheet1'!A:BN,40,False)

但是因为我的列太多而且我也需要获取其他值我正在使用:

=ArrayFormula(IF(LEN(B3),VLOOKUP(B3,{'sheet1'!A:BN},{iferror(match("ID-number",'sheet1'!A1:BN1,0),"No match")},FALSE),""))

解释:

B3是用户输入id号值的单元格

然后...:[=​​22=]

{'sheet1'!A:BN},{iferror(match("ID-number",'sheet1'!A1:BN1,0),"No match")}

是我正在寻找我正在寻找的价值标题的列号的地方,在这种情况下,它是 AN,这将是第 40 列,但它可以是任何其他列。

然后 ArrayFormula 是因为 sheet1 是来自 Google 表单的数据,该表单正在使用并不断增加行。

它给我一个 #N/A 的错误,因为它没有找到范围内的值(在 sheet 2 中的 B3 中输入)从 A 到 BN 具有值的列)

示例 sheet 有效答案是 [此处]: (https://docs.google.com/spreadsheets/d/1qLcJdCn4EdV7lPOAfZ_CMak1LBkve45FL5SXyqBV3L8/edit?usp=sharing)

注意: search/return 的值在 sheet 1 中的同一行,当输入新搜索时,只有该行发生变化。

您不能在数组公式中使用匹配。 我建议你使用像

这样的东西
=ArrayFormula(IF(LEN(B3),VLOOKUP(B3,{'sheet1'!AN:AN,'sheet1'!A:BN},column('sheet1'!X:X)-column('sheet1'!A:A)+1,FALSE),""))

其中 X 是结果列(根据您的需要进行更改)。

=ARRAYFORMULA(
 IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(B3,            data!A:E,  {1,2,3,5}, 0)), CHAR(10))), "♦", ),
 IF(C3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(C3, {data!C:C, data!A:E}, {2,3,4,6}, 0)), CHAR(10))), "♦", ), 
 IF(D3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(D3, {data!E:E, data!A:E}, {2,3,4,6}, 0)), CHAR(10))), "♦", ), ))))


更新:

=IFERROR(ARRAYFORMULA(
 IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(B3, {data!AN:AN, data!A:BN},  {41,38,19,11,55}, 0)), CHAR(10))), "♦", ),
 IF(C3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(C3, {data!AK:AK, data!A:BN}, {41,38,19,11,55}, 0)), CHAR(10))), "♦", ), 
 IF(E3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(E3, {data!BJ:BJ, data!A:BN}, {41,38,19,11,55}, 0)), CHAR(10))), "♦", ), 
 IF(D3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
            VLOOKUP(D3, {data!R:R, data!A:BN}, {41,38,19,11,55}, 0)), CHAR(10))), "♦", ), ))))), "no match found")