我正在尝试在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的同一行上,当输入新的搜索时,只有该行会更改。
答案 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))), "♦", ), ))))
=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是结果列(根据需要更改)。