【问题标题】:Array cell reference in where clause of query查询的 where 子句中的数组单元格引用
【发布时间】:2021-07-10 23:48:03
【问题描述】:

Google 表格示例文件: https://docs.google.com/spreadsheets/d/1WqqiysWdYMAop5uQXZnisuX291wY2PFmAMEKZhya2IM/edit?usp=sharing

我正在尝试计算每个人每个月的平均值。我要匹配的两个变量是日期的名称和月份。目前,如果我使用此公式将公式应用于每个单元格,我可以获得正确的值:

=IFERROR(QUERY(Sheet2!A:C,"Select avg(C) where A = '"&A2&"' and month(B) = month(date '"&TEXT(DATE(2021,MONTH(DATEVALUE($A$1&"1")),1),"yyyy-mm-dd")&"') label avg(C) '' "),"-")

我想要做的是能够做一个数组公式,所以我只需要输入一次公式,而不必担心输入的名称数量。我尝试使用这个公式:

=ARRAYFORMULA(IFERROR(QUERY(Sheet2!A:C,"Select avg(C) where A = '"&A2:A&"' and month(B) = month(date '"&TEXT(DATE(2021,MONTH(DATEVALUE($A$1&"1")),1),"yyyy-mm-dd")&"') label avg(C) '' "),"-"))

,但它只计算该行的平均值。

如果可能,解决方案也应该使用查询,因为在数据中我将使用它,由于某种原因我无法使用 sumifs/averageifs。

【问题讨论】:

    标签: google-sheets google-sheets-formula


    【解决方案1】:

    尝试:

    =QUERY('data source'!A2:C, 
     "select A,avg(C) 
      where month(B)+1 = "&MONTH(A1&1)&" 
      group by A 
      label avg(C)''")
    

    =ARRAYFORMULA({SORT(UNIQUE(FILTER('data source'!A2:A, 'data source'!A2:A<>""))), 
     IFNA(VLOOKUP(SORT(UNIQUE(FILTER('data source'!A2:A, 'data source'!A2:A<>""))), 
     QUERY('data source'!A2:C, "select A,avg(C) where month(B)+1 = "&
     MONTH(A1&1)&" group by A label avg(C)''"), 2, 0), "-")})
    

    【讨论】:

    • 根据需要解决问题!解决问题的解决方案的主要部分是在查询后添加 vlookup。 @player0 再次非常感谢您提供快速而优雅的解决方案!
    猜你喜欢
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 2010-10-24
    • 1970-01-01
    • 2020-06-23
    相关资源
    最近更新 更多