前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel公式练习92:统计两个字符串共有的唯一字符数

Excel公式练习92:统计两个字符串共有的唯一字符数

作者头像
fanjy
发布2021-08-31 17:41:18
9790
发布2021-08-31 17:41:18
举报
文章被收录于专栏:完美Excel完美Excel

引言:本文的练习整理自chandoo.org。多一些练习,想想自己怎么解决问题,看看别人又是怎解决的,能够快速提高Excel公式编写水平。

本次的练习是:给定两个字符串,计算这两个字符串中共有的唯一字符数。这两个字符串可能包含任意数量的字符,例如字母、数字、符号等,每个字符串的长度不固定。

公式中不得使用任何辅助单元格、名称等。不区分大小写,即大写字母与小写字母没有区别,“A”和“a”等价,每个字符串中的字符可以按任意顺序出现。

示例数据如下图1所示。

图1

上图1中,字符串“Ridiculous”和“Simple”具有共同的字母“s”、“i”和“l”。因此,返回的值应为3。

写下你的公式。

解决方案

公式1:

在单元格C2中输入数组公式:

=COUNT(MATCH(ROW(INDIRECT("1:"&LEN(A2))),SEARCH(MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1),A2),0))

向下拖放复制到数据末尾。

公式中:

MID(B2,ROW(INDIRECT("1:"&LEN(B2))),1)

将单元格B2中的字符串拆分成单个字符组成的数组:

{"S";"i";"m";"p";"l";"e"}

然后,SEARCH函数在单元格A2中搜索这些字符:

SEARCH({"S";"i";"m";"p";"l";"e"},A2)

返回由字符位置组成的数组:

{10;2;#VALUE!;#VALUE!;7;#VALUE!}

公式中:

ROW(INDIRECT("1:"&LEN(A2)))

返回从1至单元格A2字符长度的连续数字组成的数组:

{1;2;3;4;5;6;7;8;9;10}

这样,MATCH函数变为:

MATCH({1;2;3;4;5;6;7;8;9;10},{10;2;#VALUE!;#VALUE!;7;#VALUE!},0)

返回数组:

{#N/A;2;#N/A;#N/A;#N/A;#N/A;5;#N/A;#N/A;1}

传递给COUNT函数:

COUNT({#N/A;2;#N/A;#N/A;#N/A;#N/A;5;#N/A;#N/A;1})

统计数组中数字的数量:

3

即为两个字符串共有的唯一字符数。

公式2:

在单元格C2中输入数组公式:

=SUM(--(FREQUENCY(IFERROR(SEARCH(MID(A2,ROW(OFFSET(A1,,,LEN(A2))),1),B2),FALSE),ROW(OFFSET(A1,,,LEN(B2))))>0))

向下拖放复制到数据末尾。

公式3:

在单元格C2中输入数组公式:

=SUM(IF(FREQUENCY(CODE(MID(UPPER(A2),ROW(INDIRECT("1:" & LEN(A2))), 1)), ROW(64:90)) *MID(0&REPT(1, 26) & 0, ROW(1:28), 1), 1))

向下拖放复制到数据末尾。

有兴趣的朋友可以参照公式1仔细理解体会公式2和公式3。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档