ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E问E答 > 函数与公式 > 如何提取每个单元格都出现过的字符?

如何提取每个单元格都出现过的字符?

作者:绿色风 分类: 时间:2022-08-17 浏览:126
楼主
悟空师弟
Q:如何提取每个单元格都出现过的字符?
如下:

 
A:公式如下:(数组公式)
  1. =MID(A2,MATCH(2,COUNTIF(B2:C2,"*"&MID(A2,ROW($1:$99),1)&"*"),),1)
详见附件:

如何提取每个单元格都出现过的字符?.rar
2楼
海洋之星
厉害,能不能讲解一下这个公式的意思啊,我看不懂
3楼
悟空师弟
公式解析:
先看个直观的解法:
  1. =MID(A2&B2&C2,MATCH(3,COUNTIF(A2:C2,"*"&MID(A2&B2&C2,ROW($1:$99),1)&"*"),),1)
这个公式是按一般思路来解题,:
1、将A2:C2三个单元格的文本合并后再分解成单个字符;
     选中MID(A2&B2&C2,ROW($1:$99),1) 按F9可看到计算结果为:    {"B";"4";"A";"C";"4";"B";"4";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""}

2、再计算出每个字符在A2:C2三个单元格中出现过多少次(同一个单元格出现两次及以上只算一次);
    选中COUNTIF(B2:C2,"*"&MID(A2,ROW($1:$99),1)&"*")  按F9可看到计算结果为:   
{2;3;1;1;3;2;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3;3}

3、找出出现3次的所在位置, (用MATCH找到的是第1个。)
     选中 MATCH(3,COUNTIF(A2:C2,"*"&MID(A2&B2&C2,ROW($1:$99),1)&"*"),)按F9可看到计算结果为:2

4、用MID返回用MATCH找到的位置所对应的字符。

此公式虽然直观,但很多字符以及计算过程可以省略,1楼的公式是在此思路基础上对公式进行字符简化、速度优化。

1楼公式解题思路:
    将A2单元格内所有字符分解成单个字符,计算出每个字符在B2:C2出现过多少次,如果出现过2次,再加上本身在A2单元格出现过1次,共出现3次,即每个单元格都出现过一次,再找出其中一个字符即为所需结果。



说明:
1、1楼公式中的“ROW($1:$99)中的 99 可根据实际情况中A列最大字符长度而定,1楼示例中A列最多3个字符,99 可改为 3。
2、A2:C2 区域中不可出现数值型数据,比如纯数字、日期、时间等。
4楼
sjz76meizi
版主解释的好详细,学习了
5楼
無心
如果有两个字符在三个单元格同时出现呢,只能提取第一个出现的字符。
6楼
悟空师弟
不管提取的是第几个,都符合“任选一个”。

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap