【问题标题】:Counting number of columns a value appears in (Google Sheets)计算值出现在的列数(Google 表格)
【发布时间】:2018-04-19 05:31:35
【问题描述】:

我有一个 Google 表格,我想知道某个值出现在其中的唯一列数。例如,给定以下表格:

    |   A   |   B   |   C   |   D   |
    +-------+-------+-------+-------+
    | Joe   | Lisa  | Lisa  | Lisa  |
    | Joe   | Lisa  | Jenny | Lisa  |
    | Joe   | Jenny | Jenny | John  |
    | Joe   | Jenny | Katie | John  |       
    | Joe   | Jenny | Katie | John  |       

我想要让乔出现在第一列,丽莎出现在第三列,珍妮出现在第二列,凯蒂出现在第一列,约翰出现在第一列中的东西,即

    | Name  | Count |
    +-------+-------+
    | Joe   |     1 |
    | Lisa  |     3 |
    | Jenny |     2 |
    | Katie |     1 |
    | John  |     1 |

最好的方法是什么?

【问题讨论】:

    标签: google-sheets spreadsheet


    【解决方案1】:

    假设数据中没有空格,试试:

    =ArrayFormula(QUERY(SPLIT(UNIQUE(TRANSPOSE(SPLIT(JOIN(" ", QUERY(A1:D&"_"&COLUMN(A1:D1),,ROWS(A1:A)))," "))), "_"), "Select Col1, count(Col2) where Col2 > 0 group by Col1 label count(Col2)''"))
    

    如果源数据有空格,试试:

    =ArrayFormula(SUBSTITUTE(QUERY(SPLIT(UNIQUE(TRANSPOSE(SPLIT(JOIN(" ", QUERY(SUBSTITUTE(A1:D, " ", "~")&"_"&COLUMN(A1:D1),,ROWS(A1:A)))," "))), "_"), "Select Col1, count(Col2) where Col2 > 0 group by Col1 label count(Col2)''"), "~", " "))
    

    【讨论】:

      【解决方案2】:

      编辑

      正如汤姆注意到的那样,我错过了任务,正确的公式是:

      =QUERY( 
          QUERY( 
          {TRANSPOSE(SPLIT(TEXTJOIN("#",1,FILTER(COLUMN(A:D)*row(A:D)^0,A:A<>"")),"#")), 
           TRANSPOSE(SPLIT(TEXTJOIN("#",1,A:D),"#"))}, 
          "select Col1, Col2, count(Col2) group by Col1, Col2"), 
      "select Col2, count(Col3) group by Col2 label Col2 'Name',count(Col3) 'Count'")
      

      来源:@tom-sharpe

      我的原始公式计算了名称在一行中的最大次数:

      =QUERY(  
        QUERY(  
        {TRANSPOSE(SPLIT(TEXTJOIN("#",1,FILTER(COLUMN(A:D)^0*row(A:D),A:A<>"")),"#")),
         TRANSPOSE(SPLIT(TEXTJOIN("#",1,A:D),"#"))},
        "select Col1, Col2, count(Col2) group by Col1, Col2"),
      "select Col2, max(Col3) group by Col2 label Col2 'Name'")
      

      【讨论】:

      • 我很想看看你是如何将这些放在一起的@Max,但如果它们在同一行中,它似乎只会给出 3 个 Lisa(例如)?
      • 这是我的建议 =QUERY( QUERY( {TRANSPOSE(SPLIT(TEXTJOIN("#",1,FILTER(COLUMN(A:D)*row(A:D)^0,A: A"")),"#")), TRANSPOSE(SPLIT(TEXTJOIN("#",1,A:D),"#"))}, "select Col1, Col2, count(Col2) group by Col1, Col2"), "select Col2, count(Col3) group by Col2 label Col2 'Name',count(Col3) 'Count'")
      • 嗨,汤姆。感谢您的建议。我添加了我的结果的屏幕截图。我看不出这里到底出了什么问题。请看我的编辑。 @tom-sharp
      • 好吧,如果您删除 B6 中的 Lisa,您只会得到 Lisa 的计数 3,尽管她出现在所有四列中。我认为它给出了最大值。任何一行中的丽莎(或任何其他名字)的名字。
      • 谢谢你,汤姆!现在我看到了区别。
      猜你喜欢
      • 2021-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-12
      • 2021-12-04
      相关资源
      最近更新 更多