Wich公式显示A列的唯一(文本)值,以及B列中相应的最大值(文本),并根据不同列的出现程度对它们进行排序? 我已经知道如何只显示第一个最常出现的值,但不知道第二个,第三个等等。
编辑:此处的公式仅显示第一个最常出现的值:
=ArrayFormula(VLOOKUP(UNIQUE(FILTER(A:A;A:A<>""));QUERY({A:B\A:A};"select Col1, Col2, count(Col3) where Col1 <> '' group by Col1, Col2 order by count(Col3) desc");{1\2};0))
非常感谢。
答案 0 :(得分:2)
尝试结合使用QUERY和INDEX
=iferror(index(query($A$1:$C$100, "select B,count(C) where A contains '"&$E2&"' group by B order by count(C) desc",1) ,columns($AA:AB),1),"")
媒体类型在E2中。
答案 1 :(得分:1)
已编辑(在澄清问题并进行一些改进以确保答案独立后,无需参考外部电子表格)
我使用“FILTER()
”,“UNIQUE()
”和“SORT()
”的组合,结合计算的频率(使用COUNTIFS
确定)。请参阅下面的示例表taken from yours。
这不是单细胞配方,但它简单易懂。
通道位于A列,关联媒体位于B列,给定(通道,媒体)对的频率位于C列中,(例如,在C2中)
=countifs($B$2:$B;"=" &B2;$A$2:$A;"=" & A2)
然后使用=UNIQUE(B2:B)
制作一份独特媒体列表。在给定的独特介质(例如,在单元格F13中)附近,然后我确定与所选介质相关的所有配对,并创建按最常见的配对排序的数组:
=transpose(unique(transpose(array_constrain(transpose(sort(filter($A$2:$C;$B$2:$B=F13);3;FALSE));1;10))))
这可以通过滤除所选媒体的所有对(具有对频率)(在F13中选择),按对频率对列表进行排序(即,第1,第2,第3最重复的媒体),修剪数组仅显示媒体,然后删除重复的条目(因为每次重复给定配对时我们有一个重复的条目,即,看到多于一次)。使用Transpose
是因为Unique
无法使用行数组,只能使用列数组。
该公式适用于分别添加到A列和B列的任何其他频道和媒体。
“10”非公式是指在array_constrain()
期间保留的列数,可以任意设置为高。
对原始发布的修改 为了使这项工作,我不得不在原始答案中交换媒体和通道列,然后添加一个C列,这是该配对的频率,我后来用它来排序第1,第2等..最受欢迎的频道。
答案 2 :(得分:1)
此外,对于单个单元格公式,请尝试query()
=query(A:B; "select A, count(B) where A<>'' group by A label count(B) 'Frequency'"; 1)