Excel 2021无VBA实现提取单元格大写字母并拼接方法
在Excel 2021中提取单元格大写字母并拼接的高效函数方案
如果你的Excel 2021单元格内容为:
all Upper case LeTters supposed to be In result
需要提取其中所有大写字母并拼接成ULTI,不用VBA的话,以下两种方案比你找到的多层SUBSTITUTE更简洁:
方案一:利用TEXTJOIN+SEQUENCE+EXACT
通过逐个提取字符并判断是否为大写,再拼接符合条件的字符:
=TEXTJOIN("",TRUE,IF(EXACT(MID(A1,SEQUENCE(LEN(A1)),1),UPPER(MID(A1,SEQUENCE(LEN(A1)),1))),MID(A1,SEQUENCE(LEN(A1)),1),""))
- 逻辑:
SEQUENCE(LEN(A1))生成对应每个字符位置的序列;MID逐个取出单元格中的字符;EXACT判断原字符和其大写版本是否完全一致(区分大小写);最后用TEXTJOIN把所有符合条件的大写字母拼接起来。 - 注意:Excel 2021中输入后直接回车即可,无需按数组公式的组合键。
方案二:利用FILTERXML+TEXTJOIN
借助XML筛选逻辑提取大写字母:
=TEXTJOIN("",TRUE,FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A1," ","</s><s>"),"","</s><s>")&"</s></t>","//s[translate(.,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','') != .]"))
- 逻辑:先把单元格内容按每个字符拆分为XML节点;
translate函数将节点中的大写字母替换为空,若替换后的结果和原节点内容不等,说明该节点是大写字母;最后用TEXTJOIN拼接筛选出的节点内容。
内容的提问来源于stack exchange,提问作者Daniel
相关产品推荐
相关产品推荐

