Excel单元格中有中英文混合内容,并且英文有时候在后面,有时候在前面,该如何提取出英文内容,实现中英文分离呢?
在deepseek中输入提示词:
一步步的思考,单元格C2的内容是中英文混合的,现在要写一个Excel公式,将英文内容提取出来。
举例如下:
如果单元格C2的内容是:电脑软件提供商MSFT.O,应该提取的英文内容是:MSFT.O
如果单元格C2的内容是:COUR.N 在线提供网络公开课程,应该提取的英文内容是:COUR.N
注意:英文字母中的符号“.”也要一起提取出来
把公式输入到Excel中,发现结果不对,反馈给deepseek:这个公式不对,中文也提取出来的了,仔细反思下,该如何修改?
deepseek的回复:非常抱歉,之前的公式确实存在问题。我们需要确保只提取英文字符和点(.),而不提取中文字符。我们可以通过进一步细化条件来解决这个问题。
步骤1:确定英文字符和点的范围
英文字符包括大写字母(A-Z)、小写字母(a-z)和点(.)。我们需要识别这些字符并将其提取出来。
步骤2:使用公式逐个检查字符
我们可以使用MID函数逐个提取字符,并使用CODE函数判断字符是否为英文或点。
步骤3:连接符合条件的字符
使用TEXTJOIN函数将符合条件的字符连接起来。
具体公式
假设我们要在单元格D2中提取C2中的英文内容,可以使用以下公式:
=TEXTJOIN("", TRUE, IF((CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) >= 65) * (CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) <= 90) (CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) >= 97) * (CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) <= 122) (CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) = 46), MID(C2, SEQUENCE(1, LEN(C2)), 1), ""))
公式解释
SEQUENCE(1, LEN(C2)):生成一个从1到C2字符长度的序列,用于逐个提取字符。
MID(C2, SEQUENCE(1, LEN(C2)), 1):逐个提取C2中的字符。
CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)):获取每个字符的ASCII码。
(CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) >= 65) * (CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) <= 90):检查字符是否为大写字母(A-Z)。
(CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) >= 97) * (CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) <= 122):检查字符是否为小写字母(a-z)。
(CODE(MID(C2, SEQUENCE(1, LEN(C2)), 1)) = 46):检查字符是否为点(.)。
:将三个条件的结果相加,如果字符是英文字母或点,结果为1,否则为0。
IF(... > 0, MID(...), ""):如果是英文字符或点,保留该字符,否则返回空字符串。
TEXTJOIN("", TRUE, ...):将所有符合条件的字符连接起来。
示例
假设C2的内容是“电脑软件提供商MSFT.O”,公式将提取出“MSFT.O”。
注意事项
这个公式适用于Excel 365或Excel 2019及以上版本,因为它们支持动态数组和SEQUENCE、TEXTJOIN等函数。
如果使用的是较早版本的Excel,可能需要使用VBA或Power Query来实现类似的功能。