excel數據如何提取字母縮寫?excel數據如何提取大寫字母創建縮寫
如下圖1所示,使用公式,提取列A每個單元格數據中的大寫字母。
圖1
滿足以下條件:
- 只提取大寫字母
- 每個單詞以大寫字母開始
- 每個單詞僅有一個大寫字母
- 單元格中的數據文本可能包含空格,也可能沒有空格
- 單元格中的數據文本只包含字母和空格
- 單元格中的數據文本可包含任意類型的字符
- 大寫字母中沒有重音符號
- 數據所在的工作表名為“x”(僅1個字符)
- 結果長度必須等于大寫字母的數量
- 公式要最短
先不看答案,自已動手試一試。
解決方案
首先,提取每一字符,使用CODE函數將其轉換成對應的數字,如果數字大于等于65且小于等于90,將該數字再轉換成對應的字母,將大寫字母連在一起。
公式中,MID(x!A5,ROW(INDIRECT(“1:”&LEN(x!A5))),1)用于提取單個字符,也可以使用MID(A5,ROW(A$1:INDEX(A:A,LEN(A5))),1),但前者更短。CODE函數將字符轉換成相應的數字,注意大寫字母編碼從65至90。IF函數將忽略我們不想要的編碼。CHAR函數將數字轉換成字母。CONCAT函數將提取到的大寫字母連接。
公式1:
=SUBSTITUTE(CONCAT(CHAR(IF((CODE(MID(A5,ROW(INDIRECT(“1:”&LEN(A5))),1))>64)*(CODE(MID(A5,ROW(INDIRECT(“1:”&LEN(A5))),1))<91),CODE(MID(A5,ROW(INDIRECT(“1:”&LEN(A5))),1)),91))),”[“,””)
公式2:
=SUBSTITUTE(CONCAT(IFERROR(CHAR(IF(CODE(MID(A5,ROW(INDIRECT(“1:”&LEN(A5))),1))<91,CODE(MID(A5,ROW(INDIRECT(“1:”&LEN(A5))),1)))),””)),””,””)
公式3:
=SUBSTITUTE(CONCAT(IFERROR(CHAR(IF(z<91,z)),””)),””,””)
其中,“z”是一個定義的名稱:
名稱:z
引用位置:=CODE(MID(x!A5,ROW(INDIRECT(“1:”&LEN(x!A5))),1))
公式4:
=SUBSTITUTE(CONCAT(IFERROR(CHAR(IF(AND(z<91,z>64),z)),””)),””,””)
與公式3相同,“z”是一個定義的名稱。
公式5:
=CONCAT(FILTER(MID(A5,SEQUENCE(LEN(A5)),1),ISNUMBER(MATCH(CODE(MID(A5,SEQUENCE(LEN(A5)),1)),SEQUENCE(24,,65),0))))
公式6:
=TEXTJOIN(“”,1,IF(ISNUMBER(MATCH(CODE(MID(A5,ROW(INDIRECT(“1:”&LEN(A5))),1)),ROW(INDIRECT(“65:90”)),0)),MID(A5,ROW(INDIRECT(“1:”&LEN(A5))),1),””))
公式7:
=SUBSTITUTE(CONCAT(IFERROR(CHAR(IF(CODE(MID(A5,ROW(A$1:INDEX(A:A,LEN(A5))),1))<91,CODE(MID(A5,ROW(A$1:INDEX(A:A,LEN(A5))),1)))),””)),””,””)
本文只給出了公式的基本運行原理和公式,有興趣的朋友可以參考本系列前面講解的一些方法對公式進行調試,以加深理解。