【发布时间】:2019-10-19 06:36:56
【问题描述】:
基于 (Search a value from another tab/sheet in google sheets based on cell reference),我在 Google 表格中有 2 个标签/表格,一个从 Google 表单收集数据,另一个是搜索表格。 示例在这里(与上述问题相同,但添加了数据):(https://docs.google.com/spreadsheets/d/1qLcJdCn4EdV7lPOAfZ_CMak1LBkve45FL5SXyqBV3L8/edit#gid=354631176)
在“搜索”表的顶部,我有用户填写的搜索字段,并在另一个单元格中向下我有一个搜索公式,它返回在 Sheet1 的同一行中找到的值的转置列表,与在 Sheet2 中找到的值匹配.但是,当它在工作表 1 中遇到空白单元格时,它要么停止查找值,要么给出下一个非空白单元格的值,而不管要返回的指示行如何。
解释:
在搜索表的顶部,我在单元格 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(在工作表 2 中)输入的值,以将它们与工作表 1 上的数据(称为“Respuestas de formulario 2”)进行匹配,然后返回在该行中找到的值的垂直列表,在每个结果之后按特定顺序跳过一个单元格(这就是 {} 之间的数字不按顺序排列的原因)。
但是,并非工作表 1 中的所有单元格都可能包含数据(例如,如果 Google 表单有一个已跳过的部分,例如“如果“是”,请转到第 2 部分;如果“否”,请转到第 3 部分)。问题在于,当公式遇到空白单元格时,它似乎要么停止寻找其他结果,要么跳转值并从具有值的新单元格返回内容。
我试着用这个来结束它,但它没有用:
...{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 中添加“找不到匹配项”,但也没有用:
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))), "♦", ),
我希望在结果列的每个空白单元格中显示“未找到匹配项”,而找到的值是与 {} 中列出的行相对应的值。
【问题讨论】:
标签: filter google-sheets google-sheets-formula array-formulas gs-vlookup