【问题标题】:Is there a way to auto sum the return of concatenated countifs?有没有办法自动总结连接计数的返回?
【发布时间】:2019-01-15 03:49:16
【问题描述】:

我正在尝试使用自动求和来计算总数。当有多个时,我不知道如何将 countif 数据用于自动求和公式。

countifs 计算一组固定类别的出现次数,这些类别可通过带有数据验证的下拉菜单进行选择。因为在我的情况下,有 5 个选项,最终计算单元格有 5 个countifs。但是,有 5 列具有相同的设置,我希望能够汇总数据。

=CONCATENATE("Jeans: "&COUNTIF(J19:J29, "Jeans"), " " ,"C&J: "&
 COUNTIF(J18:J29, "Coats & Jackets"), " " ,"Tops: "&
 COUNTIF(J18:J29, "Tops"), " " ,"Drs: "&
 COUNTIF(J18:J29, "Dresses & Skirts"), " " ,"Acs: "&
 COUNTIF(J18:J29, "Accessories"))

上述代码的返回如下:

Jeans: 0 C&J: 0 Tops: 0 Drs: 0 Acs: 0

简单地将单元格添加在一起是行不通的。现在我正试图弄清楚如何提取每个值。

将所有 5 列加在一起,我希望得到类似:

Month total: Jeans: 30 C&J: 12 Tops: 45 Drs: 4 Acs: 10

最终,我希望能够将每个总数相加得到一个总计。

【问题讨论】:

    标签: google-sheets formula spreadsheet google-sheets-formula


    【解决方案1】:
    =CONCATENATE("Month total: Jeans: "&
     INDEX(QUERY({SPLIT(LOWER(A1),"jeansctopsdra :&");
                  SPLIT(LOWER(B1),"jeansctopsdra :&");
                  SPLIT(LOWER(C1),"jeansctopsdra :&");
                  SPLIT(LOWER(D1),"jeansctopsdra :&");
                  SPLIT(LOWER(E1),"jeansctopsdra :&")},
     "select sum(Col1),sum(Col2),sum(Col3),sum(Col4),sum(Col5) 
      label sum(Col1)'',sum(Col2)'',sum(Col3)'',sum(Col4)'',sum(Col5)''",0),1,1)&
     " C&J: "&
     INDEX(QUERY({SPLIT(LOWER(A1),"jeansctopsdra :&");
                  SPLIT(LOWER(B1),"jeansctopsdra :&");
                  SPLIT(LOWER(C1),"jeansctopsdra :&");
                  SPLIT(LOWER(D1),"jeansctopsdra :&");
                  SPLIT(LOWER(E1),"jeansctopsdra :&")},
     "select sum(Col1),sum(Col2),sum(Col3),sum(Col4),sum(Col5) 
      label sum(Col1)'',sum(Col2)'',sum(Col3)'',sum(Col4)'',sum(Col5)''",0),1,2)&
     " Tops: "&
     INDEX(QUERY({SPLIT(LOWER(A1),"jeansctopsdra :&");
                  SPLIT(LOWER(B1),"jeansctopsdra :&");
                  SPLIT(LOWER(C1),"jeansctopsdra :&");
                  SPLIT(LOWER(D1),"jeansctopsdra :&");
                  SPLIT(LOWER(E1),"jeansctopsdra :&")},
     "select sum(Col1),sum(Col2),sum(Col3),sum(Col4),sum(Col5) 
      label sum(Col1)'',sum(Col2)'',sum(Col3)'',sum(Col4)'',sum(Col5)''",0),1,3)&
     " Drs: "&
     INDEX(QUERY({SPLIT(LOWER(A1),"jeansctopsdra :&");
                  SPLIT(LOWER(B1),"jeansctopsdra :&");
                  SPLIT(LOWER(C1),"jeansctopsdra :&");
                  SPLIT(LOWER(D1),"jeansctopsdra :&");
                  SPLIT(LOWER(E1),"jeansctopsdra :&")},
     "select sum(Col1),sum(Col2),sum(Col3),sum(Col4),sum(Col5) 
      label sum(Col1)'',sum(Col2)'',sum(Col3)'',sum(Col4)'',sum(Col5)''",0),1,4)&
     " Acs: "&
     INDEX(QUERY({SPLIT(LOWER(A1),"jeansctopsdra :&");
                  SPLIT(LOWER(B1),"jeansctopsdra :&");
                  SPLIT(LOWER(C1),"jeansctopsdra :&");
                  SPLIT(LOWER(D1),"jeansctopsdra :&");
                  SPLIT(LOWER(E1),"jeansctopsdra :&")},
     "select sum(Col1),sum(Col2),sum(Col3),sum(Col4),sum(Col5) 
      label sum(Col1)'',sum(Col2)'',sum(Col3)'',sum(Col4)'',sum(Col5)''",0),1,5))
    

    【讨论】:

    • 你能解释一下这部分是做什么的吗?我尝试将其弹出并将所有单元格值更改为我的,但一直出错。
    • @ConstantFun 当然。长话短说,我们有 5 个相同的列,它们仅在数字(数量)上有所不同,我们需要输出一个带有总计数量的句子,所以:第一步是去掉单词,以便我们可以总结数字。所以我们调用LOWER并消除所有五列(A1,B1,C1,D1,E1)中的这些字符(jeansctopsdra:&),我们将每个单元格拆分为5个虚拟单元格,例如。我们创建了一个矩阵 5x5 单元格的虚拟表(单元格中的 5 个项目乘以 5 个单元格)。然后这个虚拟表由 QUERY 处理,其中每一列被求和,然后每个虚拟列的结果是
    • INDEXed 所以我们将有 5 个虚拟块的总和值。然后将这些块连接起来以创建一个最终句子。
    • 谢谢@player0 为了达到每年的总数,我基本上可以使用相同的技术并更新单元格值?然后,将所需的额外月份添加为 INDEX 块,直到我有 12 个块代表每个月?
    • @ConstantFun 本质上是的。虚拟表应为矩阵 5x12(5 项 * 12 个月),例如。而不是每个 INDEX 块 5x SPLITx,您将为 5 个 INDEX 块中的每一个执行 12x SPLIT。
    猜你喜欢
    • 2022-06-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2022-01-21
    • 2021-10-19
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    相关资源
    最近更新 更多