AI办公自动化:批量将Excel单元格中的英文和中文分开

2024-09-11 18:56:02 浏览数 (3)

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来实现类似的功能。

1 人点赞