计算值出现的列数(Google表格)

时间:2018-04-19 05:31:35

标签: google-sheets spreadsheet

我有一张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  |       

我想要的东西是Joe出现在一列,Lisa出现在3,Jenny出现在2,Katie出现在1,John出现在一列,即

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

最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

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

=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)''"), "~", " "))

答案 1 :(得分:1)

修改

汤姆注意到,我已经错过了这个任务,正确的公式是:

=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'")

enter image description here