'No match' 消息 Google 表格中没有数据的单元格的 Vlookup 结果
'No match' message in Google Sheets Vlookup results for cells with no data
基于 (),我在 Google Sheet 中有 2 个 tabs/sheets,其中一个从 Google 表单和另一个是搜索 sheet。
示例在这里(与用于上述问题的示例相同,但添加了数据):(https://docs.google.com/spreadsheets/d/1qLcJdCn4EdV7lPOAfZ_CMak1LBkve45FL5SXyqBV3L8/edit#gid=354631176)
在搜索 sheet 的顶部,我有用户填写的搜索字段,在另一个单元格中我有一个搜索公式,return 是在Sheet1 中的同一行与 Sheet2 中找到的值匹配。但是当它在 sheet 1 中遇到空白单元格时,它要么停止查找值,要么将下一个非空白单元格的值提供给 return.
而不管指示的行
解释:
在搜索的顶部 sheet 我在用户填写的单元格 B3:F3 中有搜索字段(第 3 行),在单元格 B8 的下方我有我的搜索公式:
=ARRAYFORMULA(
IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(B3, {'Respuestas de formulario 2'!AN:AN, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
IF(C3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(C3, {'Respuestas de formulario 2'!AK:AK, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,14,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
IF(D3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(D3, {'Respuestas de formulario 2'!AR:AR, 'Respuestas de formulario 2'!A:BN},
{24,3,20,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
IF(E3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(E3, {'Respuestas de formulario 2'!W:W, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
IF(F3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(F3, {'Respuestas de formulario 2'!Z:Z, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ), ))))))
公式搜索 B3 到 F3(在 Sheet 2)中输入的值,将它们与 Sheet 1(称为 'Respuestas de formulario 2')中的数据相匹配,然后 returns 是在该行中找到的值的垂直列表,在每个结果之后以特定顺序跳过一个单元格(这就是 {} 之间的数字不按顺序排列的原因)。
但是,并非 Sheet 1 中的所有单元格都可能包含数据(例如,如果 Google 表单有一个跳过的部分,如那些 'If 'yes',请转到第 2 部分; 如果 'no' 转到第 3 节)。问题是,当公式遇到空白单元格时,它似乎要么停止寻找其他结果,要么从具有值的新单元格中跳转值和 returns 东西。
我试过用这个结束它,但没有成功:
...{24,34,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ), ))))), "no match found")
然后我尝试在每个 IF 中添加 "no match found",但也没有用:
IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(B3, {'Respuestas de formulario 2'!AN:AN, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0,"no match found")), CHAR(10))), "♦", ),
我希望在结果列的每个单元格中显示一个 "no match found",它是空白的,而找到的值恰好与 {}
中列出的行相对应,顺序完全相同。
这是问题的迂回解决方案,而不是对代码的修复。
我所做的是创建一个枢轴 sheet,它从 sheet1(具有 Google 表单响应的那个)中提取数据并填充所有空白单元格用 N/A 。我通过在 B1 中使用以下公式并将其一直拖到名为 'Pivot_sheet' 的新 sheet 中的单元格 BN1 来完成此操作:
=arrayformula(IF(LEN('Respuestas de formulario 2'!$A:$A), IF('Respuestas de formulario 2'!B:B<>"",'Respuestas de formulario 2'!B:B,"N/A"),""))
注意:在单元格 A1 中,将时间戳作为我仅使用的答案的参考:
=ArrayFormula('Sheet1'!A:A)
然后我将搜索公式代码中的引用从 'Respuestas de formulario 2'!
替换为新 sheet 'Pivot_sheet' 的名称。像这样:
... IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(B3, {'Pivot_sheet'!AN:AN, 'Pivot_sheet'!A:BN}, ...
基于 (
在搜索 sheet 的顶部,我有用户填写的搜索字段,在另一个单元格中我有一个搜索公式,return 是在Sheet1 中的同一行与 Sheet2 中找到的值匹配。但是当它在 sheet 1 中遇到空白单元格时,它要么停止查找值,要么将下一个非空白单元格的值提供给 return.
而不管指示的行解释:
在搜索的顶部 sheet 我在用户填写的单元格 B3:F3 中有搜索字段(第 3 行),在单元格 B8 的下方我有我的搜索公式:
=ARRAYFORMULA(
IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(B3, {'Respuestas de formulario 2'!AN:AN, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
IF(C3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(C3, {'Respuestas de formulario 2'!AK:AK, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,14,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
IF(D3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(D3, {'Respuestas de formulario 2'!AR:AR, 'Respuestas de formulario 2'!A:BN},
{24,3,20,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
IF(E3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(E3, {'Respuestas de formulario 2'!W:W, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ),
IF(F3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(F3, {'Respuestas de formulario 2'!Z:Z, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ), ))))))
公式搜索 B3 到 F3(在 Sheet 2)中输入的值,将它们与 Sheet 1(称为 'Respuestas de formulario 2')中的数据相匹配,然后 returns 是在该行中找到的值的垂直列表,在每个结果之后以特定顺序跳过一个单元格(这就是 {} 之间的数字不按顺序排列的原因)。
但是,并非 Sheet 1 中的所有单元格都可能包含数据(例如,如果 Google 表单有一个跳过的部分,如那些 'If 'yes',请转到第 2 部分; 如果 'no' 转到第 3 节)。问题是,当公式遇到空白单元格时,它似乎要么停止寻找其他结果,要么从具有值的新单元格中跳转值和 returns 东西。
我试过用这个结束它,但没有成功:
...{24,34,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0)), CHAR(10))), "♦", ), ))))), "no match found")
然后我尝试在每个 IF 中添加 "no match found",但也没有用:
IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(B3, {'Respuestas de formulario 2'!AN:AN, 'Respuestas de formulario 2'!A:BN},
{24,3,21,23,13,5,6,9,10,67,53,54,55,56,57,58,59,30,61,27,62,63,64,65,41,38,36,37,31,32,33,34,45}, 0,"no match found")), CHAR(10))), "♦", ),
我希望在结果列的每个单元格中显示一个 "no match found",它是空白的,而找到的值恰好与 {}
中列出的行相对应,顺序完全相同。
这是问题的迂回解决方案,而不是对代码的修复。
我所做的是创建一个枢轴 sheet,它从 sheet1(具有 Google 表单响应的那个)中提取数据并填充所有空白单元格用 N/A 。我通过在 B1 中使用以下公式并将其一直拖到名为 'Pivot_sheet' 的新 sheet 中的单元格 BN1 来完成此操作:
=arrayformula(IF(LEN('Respuestas de formulario 2'!$A:$A), IF('Respuestas de formulario 2'!B:B<>"",'Respuestas de formulario 2'!B:B,"N/A"),""))
注意:在单元格 A1 中,将时间戳作为我仅使用的答案的参考:
=ArrayFormula('Sheet1'!A:A)
然后我将搜索公式代码中的引用从 'Respuestas de formulario 2'!
替换为新 sheet 'Pivot_sheet' 的名称。像这样:
... IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1,
VLOOKUP(B3, {'Pivot_sheet'!AN:AN, 'Pivot_sheet'!A:BN}, ...