高分——Excel以A列为条件找出对应B列中相同姓名最多的(众数)

见图:

A列“A”对应的B列有:陈、李;“B”对应的B列有:李、陈;"C"对应的B列有王、张。
现在要找出B列相同姓名最多的(众数):
A——李;
B——陈;
C——王。
(数据很多,抓图只是例子,姓名不止一个汉字,可以是:张三、张三丰等)

请问高手,有没有什么函数公式可以实现?
没有最多的(众数),就显示“待定”。

如果姓名只有一个汉字,可以用公式直接实现。D2公式:
=IF(ISNA(CHAR(MODE(IF(A$2:A$10=C2,CODE(B$2:B$10),"")))),"待定",CHAR(MODE(IF(A$2:A$10=C2,CODE(B$2:B$10),""))))
公式以CTRL+SHIFT+ENTER三键结束。
将公式向下复制。

如果B列姓名有两至三个字,需要加一个辅助列(假定为E列)。在E2输入公式:
=IF(COUNTIF(B$2:B2,B2)=1,SUMPRODUCT(1/COUNTIF(B$2:B2,B$2:B2)),VLOOKUP(B2,B:E,4,))
将公式向下复制到相应行。
然后在D2输入公式:
=IF(ISNA(INDEX(B:B,MATCH(MODE(IF(A$2:A$10=C2,E$2:E$10,"")),E:E,))),"待定",INDEX(B:B,MATCH(MODE(IF(A$2:A$10=C2,E$2:E$10,"")),E:E,)))
公式以CTRL+SHIFT+ENTER三键结束。
将公式向下复制。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-10
需要添加辅助列,E2单元格输入=CODE(B2)后下拉(以拉到E10为例),D5单元格输入=CHAR(MODE(E2:E10))即为结果
第2个回答  2014-07-10
返还给他人非个体户经营条件统一经营条件一天
第3个回答  2014-07-10
用数据透视表不行吗?追问

不行,表格里面还有其他很多数据,要直接体现在原表格里面的

追答

假设B2到B10000有数据:
=CHAR(MODE(CODE(B2:B10000)))

追问

你试过吗?
CHAR()只能返回数值代码1~255之间的字符,汉字的字符往往是5位数。且我上面讲了B列是姓名,不止一个汉字的。

追答

假设你有100笔资料:
在B列插入1列,在新的C2输入公式=VALUE(CONCATENATE(CODE(MID(B2,1,1)),CODE(MID(B2,2,1)),IF(MID(B2,3,1)="","",CODE(MID(B2,3,1))))),并依次拉到最后一笔数据。
这个公式的用意是把B列的中文名字,全部以数字形式展现出来。
再用公式=MODE(C2:C101),就可以得出众数,不过这个时候的众数是数字形式,因为你的B列是中文姓名,C列是对应的数字,这样你就能通过数字找到对应其中文姓名了。

相似回答