Google sheets 计算值出现的列数(谷歌工作表)
我有一个谷歌表,我想知道一个值出现在其中的唯一列的数量。例如,给定以下表格:Google sheets 计算值出现的列数(谷歌工作表),google-sheets,spreadsheet,Google Sheets,Spreadsheet,我有一个谷歌表,我想知道一个值出现在其中的唯一列的数量。例如,给定以下表格: | A | B | C | D | +-------+-------+-------+-------+ | Joe | Lisa | Lisa | Lisa | | Joe | Lisa | Jenny | Lisa | | Joe | Jenny | Jenny | John | | Joe | Jenny |
| A | B | C | D |
+-------+-------+-------+-------+
| Joe | Lisa | Lisa | Lisa |
| Joe | Lisa | Jenny | Lisa |
| Joe | Jenny | Jenny | John |
| Joe | Jenny | Katie | John |
| Joe | Jenny | Katie | John |
我希望乔出现在第1栏,丽莎出现在第3栏,珍妮出现在第2栏,凯蒂出现在第1栏,约翰出现在第1栏,即
| Name | Count |
+-------+-------+
| Joe | 1 |
| Lisa | 3 |
| Jenny | 2 |
| Katie | 1 |
| John | 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)''"), "~", " "))
编辑
正如Tom所注意到的,我错过了任务,正确的公式是:
=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'")
=查询(
查询(
{转置(拆分(TEXTJOIN(#),1,过滤器(列(A:D)*行(A:D)^0,A:A“”),“#”),
转置(SPLIT(TEXTJOIN(“#”),1,A:D),“#”),
“按Col1,Col2选择Col1,Col2,count(Col2)group by Col1,Col2”),
选择Col2,计数(Col3)按Col2标签Col2'名称'分组,计数(Col3)'计数')
信用证:@tomsharpe
我的原始公式计数最大次数名称在一行中:
=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'")
=查询(
查询(
{转置(拆分(TEXTJOIN(“#”),1,过滤器(列(A:D)^0*行(A:D),A:A“”),“#”),
转置(SPLIT(TEXTJOIN(“#”),1,A:D),“#”),
“按Col1,Col2选择Col1,Col2,count(Col2)group by Col1,Col2”),
“按Col2标签Col2‘名称’选择Col2,最大(Col3)组”
我很想看看你是如何把它放在一起@Max的,但如果它们在同一行,它似乎只会给出3个Lisa(例如)?这是我的建议=查询({TRANSPOSE(SPLIT(TEXTJOIN(#),1,FILTER(COLUMN(A:D)*row(A:D)^0,A:A“”),“#”)),TRANSPOSE(SPLIT(SPLIT(TEXTJOIN(#,1,A:D),“#”),选择Col1,Col2,count(Col2)“按Col1分组,Col2”),“选择Col2,计数(Col3)按Col2分组标签Col2‘名称’,计数(Col3)‘计数’”)Hi Tom。谢谢你的建议。我添加了一个结果的屏幕截图。我看不出这里到底出了什么问题。请看我的编辑@tom sharpeWell如果删除B6中的Lisa,Lisa的计数仅为3,尽管她出现在所有四列中。我认为这是给了丽莎(或任何其他名字)在任何一行的最大数量。谢谢你,汤姆!现在我明白了区别。