送人玫瑰,手有余香,请将文章分享给更多朋友
动手操作是熟练掌握EXCEL的最快捷途径! 【置顶公众号】或者【设为星标】及时接收更新不迷路 小伙伴好,今天和大家一起来探讨一道文本问题。题目是这样子的:
在一串文本字符串中,计算出有多少个数字,其中有多少个数字是有重复的,有多少个数字是没有重复的。 这个题目也具有一定的代表性。在日常工作中我们也会经常遇到需要提取不重复数字的案例。
下面我们一起来看看该如何解决这个问题。 有多少个数字 这个问题我们可以直接使用MID函数来处理。 在单元格B2中输入公式“=COUNT(0/IF(ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)),ROW(INDIRECT("1:"&LEN(A2))),0))”,三键回车并向下拖曳即可。 思路: MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1)部分,依次从第一位开始,提取长度为1的字符,结果是一组文本和数字混合的内存数组。其中ROW(INDIRECT("1:"&LEN(A2)))部分动态提取了源数据的字符长度 ISNUMBER(--MID(A2,ROW(INDIRECT("1:"&LEN(A2))),1))部分,减负运算后将数值部分转换为TRUE,错误值转换为FALSE IF函数做判断,数值部分返回对应位置上的数字,其余返回0 接下来又是一个经典应用。0/IF部分,将数值转换为0,将0转换为错误值 COUNT函数统计出数字部分的个数
有几个重复数字
这个问题我们分别用MMULT函数和FREQUENCY函数来解答。 在单元格C2中输入公式“=SUM(IFERROR(1/--SUBSTITUTE(MMULT(--(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1)=TRANSPOSE(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1))),ROW(INDIRECT("1:"&B2))^0),"1","0"),0))”,三键回车并向下拖曳即可。 思路: MID(A2,ROW(INDIRECT("9:"&(B2+8))),1)部分,从源字符串的第9位开始,到底26位结束,依次提取长度为1的数字 MID(A2,ROW(INDIRECT("9:"&(B2+8))),1)=TRANSPOSE(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1))部分,形成了一个二维的矩阵 --(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1)=TRANSPOSE(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1)))部分,通过减负运算将矩阵中的TRUE和FALSE转换为1和0 MMULT(--(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1)=TRANSPOSE(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1))),ROW(INDIRECT("1:"&B2))^0)部分,通过MMULT函数计算出每个数字的个数。凡是个数大于1的,即表示有重复出现 SUBSTITUTE(MMULT(--(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1)=TRANSPOSE(MID(A2,ROW(INDIRECT("9:"&(B2+8))),1))),ROW(INDIRECT("1:"&B2))^0),"1","0")部分,用“0”替换掉“1”,即替换掉不重复的数字部分 减负运算后转换为数值 1/--SUBSTITUTE()部分,是一个求不重复数字个数的经典应用 IFERROR函数屏蔽错误值,SUM函数求和得到不重复数字的个数
下面是FREQUENCY函数的解题方法。
在单元格C2中输入公式“=COUNT(1/(--(FREQUENCY(--MID(A2,ROW(INDIRECT("9:"&(B2+8))),1),--MID(A2,ROW(INDIRECT("9:"&(B2+8))),1))>1)))”,三键回车并向下拖曳即可。 思路: MID(A2,ROW(INDIRECT("9:"&(B2+8))),1)部分和上例中的思路是一样的 减负运算后利用FREQUENCY函数计频,得到每个数字的个数 FREQUENCY()>1部分,做一个判断,大于1即有重复出现 减负运算后利用COUNT函数求的重复数字的个数
不重复数字个数
这个很简单。既然我们已经求出重复数字的个数了,只需要在原公式中稍微修改就可以了。 在单元格D2中输入公式“=COUNT(1/(--(FREQUENCY(--MID(A2,ROW(INDIRECT("9:"&(B2+8))),1),--MID(A2,ROW(INDIRECT("9:"&(B2+8))),1))=1)))”,三键回车并向下拖曳即可。 小伙伴们,你们知道是做了哪些修改并理解其含义吗?欢迎大家关注并私信我哦! 好了朋友们,今天和大家分享的内容就是这些了!喜欢我的文章请分享、转发、点赞和收藏吧!如有任何问题可以随时私信我哦!-END-
长按下方二维码关注EXCEL应用之家 面对EXCEL操作问题时不再迷茫无助
|