filter - 对于没有数据的单元格,Google 表格 Vlookup 结果中出现“不匹配”消息

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

基于 ( 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))), "♦", ),

我希望在结果列的每个空白单元格中显示“未找到匹配项”,而找到的值正是与 {} 中列出的行相对应的值订单。

最佳答案

这是问题的迂回解决方案,而不是对代码的修复。

我所做的是创建一个数据透视表,从sheet1(包含 Google 表单响应的数据透视表)中提取数据,并用 N/A 填充所有空白单元格。我通过在 B1 中使用以下公式并将其一直拖动到名为“Pivot_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'! 替换为新工作表“Pivot_sheet”的名称。像这样:

    ... IF(B3<>"", SUBSTITUTE(TRANSPOSE(SPLIT(TEXTJOIN(CHAR(10)&"♦"&CHAR(10)&"♦", 1, 
    VLOOKUP(B3, {'Pivot_sheet'!AN:AN, 'Pivot_sheet'!A:BN}, ...

关于filter - 对于没有数据的单元格,Google 表格 Vlookup 结果中出现“不匹配”消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431884/

相关文章:

google-apps-script - 将图像(来自 URL)从 Google Sheet Cell 插入到 Google Doc

google-sheets - 用于计算 Google 表格中指数移动平均线的 GoogleFinance 函数

java - Spring Boot 过滤器始终映射到/*

java - 如何过滤 Java 集合(基于谓词)?

java - 如何检测过期 session 与无 session

java - 如何在 Google 电子表格中获取单个工作表的工作表名称 - Google Sheet Api v4 - Java

css - Microsoft Shadow Filter - 没有方向?

google-apps-script - 将多行单元格拆分为不同的行

date - Google Sheets 中的动态日期功能 - 如何实现?

google-sheets - 如何为下一个公式复制每 3 行(带有公式的 2 行单元格和 1 个空白单元格)只需复制 1 个单元格而不是 3 个单元格