根据单元格引用从Google工作表中的另一个标签/工作表中搜索值

时间:2019-05-27 19:56:43

标签: filter google-sheets array-formulas google-sheets-formula gs-vlookup

我正在尝试在Google表格中创建一个搜索页面,在该页面中,用户在一个单元格中输入值,然后其他单元格根据在搜索单元格中输入的值自动填充另一标签/工作表中的值(s)。

我正在尝试在数组中使用VLOOKUP,但它给出了错误或N/A

我有“ sheet1”,其中包含来自Google表单(从A到BN的列)的数据,并且我试图在“ Sheet2”中创建一个搜索页面,用户可以在上面搜索例如ID号,以及我想从“ sheet1”中获取与在“ sheet1”的同一行上写入的ID号匹配的列的值。

我已经检查了:

还有其他人,但我不需要任何脚本。

以简单的形式,公式为:

=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号值的单元格

然后...:

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

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

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

它给我一个#N/A的错误,因为它找不到范围(从A到BN的所有具有值的列的选项卡sheet1)范围内的值(在工作表2中的B3中输入)

包含工作答案的示例表在[here]:  (https://docs.google.com/spreadsheets/d/1qLcJdCn4EdV7lPOAfZ_CMak1LBkve45FL5SXyqBV3L8/edit?usp=sharing

注意::要搜索/返回的值在工作表1的同一行上,当输入新的搜索时,只有该行会更改。

2 个答案:

答案 0 :(得分:1)

=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))), "♦", ), ))))

0


更新:

=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")

答案 1 :(得分:0)

您不能在arrayformula中使用match。 我建议你使用类似的东西

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

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