1

哪个公式显示 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))

测试表

4

3 回答 3

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

在此处输入图像描述

于 2016-12-21T16:59:26.513 回答
1

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

我使用“ FILTER()”、“ UNIQUE()”和“ SORT()”的组合,以及计算的频率(使用 确定COUNTIFS)。请参阅下面的样本表,取自您的

它不是单格公式,但简单易懂。

电子表格的结构如下: 在此处输入图像描述

频道在 A 列中,相关媒体在 B 列中,给定 (Channel, Media) 对的频率在 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,它是该配对的频率,我后来用它来排序1st、2nd 等.. 最受欢迎的频道。

于 2016-12-21T12:22:57.217 回答
0

此外,对于单个单元格公式,请尝试 query()

=query(A:B; "select A, count(B) where A<>'' group by A label count(B) 'Frequency'"; 1)
于 2016-12-21T12:28:02.327 回答