显示Google电子表格中

时间:2016-12-21 10:58:56

标签: arrays filter google-sheets spreadsheet vlookup

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))

Test Sheet

非常感谢。

3 个答案:

答案 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中。

enter image description here

答案 1 :(得分:1)

已编辑(在澄清问题并进行一些改进以确保答案独立后,无需参考外部电子表格)

我使用“FILTER()”,“UNIQUE()”和“SORT()”的组合,结合计算的频率(使用COUNTIFS确定)。请参阅下面的示例表taken from yours

这不是单细胞配方,但它简单易懂。

电子表格的结构如下: enter image description here

通道位于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)