【问题标题】:Google sheets query select when certain values谷歌表格查询选择某些值时
【发布时间】:2019-02-27 18:55:48
【问题描述】:

我试图使下面的公式按如下方式工作:当 B 与 E 上的值匹配时,获取 A 上的值(对于示例,它将是 1、2、4、5、7、8)。

=QUERY({IMPORTRANGE("1Cg9gx2IhBUYwElNXprNJnihixbMLJcK1DKzIClQDNwc";"DATA!A2:C")};"select Col1 Where Col3 >= date '"&TEXT(TODAY;"yyyy-mm-dd")&"'and Col3 <= date '"&TEXT(TODAY;"yyyy-mm-dd")&"'and Col2="&(E1:E2)&"";0)

样本数据:

A   B   C           E
1   X   27/02/2019  X
2   Y   27/02/2019  Y
3   Z   27/02/2019  
4   X   27/02/2019  
5   Y   27/02/2019  
6   Z   27/02/2019  
7   X   27/02/2019  
8   Y   27/02/2019  

我怎样才能做到这一点?

【问题讨论】:

    标签: google-sheets google-query-language


    【解决方案1】:

    试试“where”子句:

    where  Col2='"&E3&"' or Col2 ='"&E2&"'
    

    【讨论】:

    • 它有效,尽管我需要将它用作数组/范围。谢谢
    【解决方案2】:
    • QUERY 无法处理引用部分内的数组/范围
    • TODAY 需要与 ()TODAY()
    • 今天是 2 月 28 日(至少我的床单所在的地方)

    =QUERY(IMPORTRANGE("1Cg9gx2IhBUYwElNXprNJnihixbMLJcK1DKzIClQDNwc"; "DATA!A2:C");
     "select Col1 
      where Col3 >= date '"&TEXT(TODAY(); "yyyy-MM-dd")&"'
        and Col3 <= date '"&TEXT(TODAY(); "yyyy-MM-dd")&"'
        and (Col2 = '"&E1&"'
         or  Col2 = '"&E2&"')"; 0)
    

    如果您有值的数组/范围,请尝试这样:

    =QUERY(FILTER(IMPORTRANGE("1Cg9gx2IhBUYwElNXprNJnihixbMLJcK1DKzIClQDNwc"; "DATA!A2:C100"); 
     COUNTIF(E1:E100; "="&
     IMPORTRANGE("1Cg9gx2IhBUYwElNXprNJnihixbMLJcK1DKzIClQDNwc"; "DATA!B2:B100"))); 
     "select Col1 
       where Col3 >= date '"&TEXT(TODAY(); "yyyy-MM-dd")&"' 
         and Col3 <= date '"&TEXT(TODAY(); "yyyy-MM-dd")&"'"; 0)
    

    【讨论】:

    • 使用数组/范围会是更好的选择。如果我有很多值要过滤,查询语句会很长......
    • 在这种情况下,您需要先过滤掉然后查询它。喜欢:=QUERY(FILTER(IMPORTRANGE("1Cg9gx2IhBUYwElNXprNJnihixbMLJcK1DKzIClQDNwc"; "DATA!A2:C100"), COUNTIF(E1:E100, "="&amp;IMPORTRANGE("1Cg9gx2IhBUYwElNXprNJnihixbMLJcK1DKzIClQDNwc"; "DATA!B2:B100"))), "select Col1 where Col3 &gt;= date '"&amp;TEXT(TODAY(),"yyyy-MM-dd")&amp;"' and Col3 &lt;= date '"&amp;TEXT(TODAY(),"yyyy-MM-dd")&amp;"'", 0) 请注意,它会延迟,所以忽略该错误几分钟
    • 我相信你需要在原始答案的这部分加上括号 Col2 = '"&E1&"' 或 Col2 = '"&E2&"'" 因为 AND 的优先级高于 OR
    • 汤姆,你是对的。有必要放圆括号。 Tks
    • @JonathanLivingstonSeagull 已修复。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多