如何从excel数据中提取缩写?如何从excel数据中提取大写字母并创建缩写?
如下图1所示,使用公式提取a列每个单元格数据中的大写字母。
图1
满足以下条件:
只提取大写字母。每个单词都以大写字母开头。单元格中的数据文本可能包含空格,也可能不包含空格。单元格中的数据文本只包含字母和空格。单元格中的数据文本可以包含任何类型的字符。大写字母没有重音。数据所在的工作表名为“X”(只有一个字符)。结果长度必须等于大写字母的数量。公式应该是最短的。先不看答案。你自己试试。
解决办法
首先,提取每个字符,并使用CODE函数将其转换为相应的数字。如果数字大于等于65且小于等于90,请将数字转换为相应的字母,并将大写字母连接在一起。
在公式中,MID(x!A5,ROW(INternet(" 1: " LEN(x!A5)),1)用于提取单个字符,或者可以使用MID (A5,ROW (A $1: index (A:a,LEN (A5)),1),但前者更短。CODE函数将字符转换成相应的数字,注意大写字母的编码范围是65到90。IF函数将忽略我们不想要的编码。CHAR函数将数字转换成字母。CONCAT函数连接提取的大写字母。
公式1:
=replace(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:
=replace(CONCAT(IFERROR(CHAR)(IF(CODE(MID(A5,ROW)(INDIRECT(" 1: " LEN(A5)),1))91),CODE(MID(A5,ROW(INDIRECT("1:"LEN(A5)),1)))),""),"",")
等式3:
=replace(CONCAT(IFERROR(CHAR(IF(z91,z)),""),"","")
其中“z”是定义的名称:
姓名:z。
参考位置:=CODE(MID(x!A5,ROW(INternet(" 1: " LEN(x!A5)))、1))
等式4:
=replace(CONCAT(IFERROR(CHAR(IF(AND(z91,z64),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(is number(MATCH)(CODE(MID(A5,ROW)(INDIRECT(" 1: " LEN(A5)))),1))、ROW(INDIRECT("65:90 ")),0))、MID(A5,ROW(INDIRECT("1:"LEN(A5)))、1)、""))
等式7:
=replace(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))),“)”,“”
本文只给出了公式的基本运算原理和公式,感兴趣的朋友可以参考本系列前面讲解的一些方法对公式进行调试,加深理解。