首页 > 解决方案 > 具有多个和空白(忽略)条件的 Google 表格查询功能

问题描述

我有一张表(培训)列出所有员工(超过 4,000 行)的信息,我在另一张表(搜索)上有一个查询功能,允许我根据我的团队选择的标准进行过滤。选择和相应的单元格是:

Company - A3 : First Name - B3 : Last Name - C3 : Email - D3 : PO # - E3 : Class - F3

我需要构建一个 query(),让我只使用具有信息的条件单元格进行过滤,完全忽略任何空白条件。

Query() 将使用单个条件或多个条件(使用“或”和“和”)工作,但我们拥有的信息并不总是一致的(可能有姓氏但不是名字,有电子邮件但不是公司等.) 所以我希望它只使用与我的团队输入的数据匹配的数据进行过滤,如果单元格 (A3:F3) 留空,则忽略标准。

现在编写代码的方式包括与任何标准匹配的行(我这样写是为了知道我有正确的引用然后扩展标准)。我需要它包含仅与输入的确切条件匹配的行。

=Query({Training!A2:AS},"select Col1, Col2, Col3, Col4, Col5, Col6, Col7, Col8, Col9, Col10, Col11, Col12, Col13, Col14, Col15, Col16, Col17, Col19, Col21, Col23, Col25, Col27, Col29, Col31, Col32, Col34, Col37, Col38, Col40, Col42, Col43, Col44, Col45 where Col2 = '"& A3 &"' or Col30= '"& E3 &"' ",0)

举一个我想要的例子。如果我的团队在“搜索”表中输入以下标准:

(A3) 公司 - 地铁 : (B3) 名字 -留空: (C3) 姓 -留空: (D3) 电子邮件 -留空: (E3) PO # - 123456 : (F3) 类别 -留空

我当前的代码将显示在 Col2 中包含 Metro 或在 Col30 中包含 123456 的任何行。我希望它显示其中仅包含 Metro 和 John 的行,忽略仅匹配 1 个条件的行并完全忽略其他条件,因为它们留空。

我在网上找到了一些我认为可行的东西,但要么它们最终不是我需要的,要么我对使它们起作用的功能不够精通。任何对教学目的的解释的帮助都会很棒。

标签: google-sheetsgoogle-sheets-formulagoogle-query-languagetextjoin

解决方案


你可以这样做:

=IFERROR(QUERY({Training!A2:AS},
 "select Col1,Col2,Col3,Col4,Col5,Col6,Col7,Col8,Col9,Col10,Col11,Col12,Col13,Col14,Col15,Col16,Col17,Col19,Col21,Col23,Col25,Col27,Col29,Col31,Col32,Col34,Col37,Col38,Col40,Col42,Col43,Col44,Col45 
  where "&TEXTJOIN(" and ", 1, 
 IF(A3<>"", "Col2 = '"&A3&"'", ), 
 IF(B3<>"", "Col3 = '"&B3&"'", ),  
 IF(C3<>"", "Col4 = '"&C3&"'", ), 
 IF(D3<>"", "Col6 = '"&D3&"'", ),  
 IF(E3<>"", "Col30= '"&E3&"'", ),  
 IF(F3<>"", "Col18= '"&F3&"'", )), 0), "no match")

0


推荐阅读