利用 Excel 分离处于一列的中英文词汇表
(1)以空格分隔的英中文词汇
MAKETING AND SALES 市场与销售部分
β-d-(+)-galactose pentaacetate β-d-(+)-半乳糖五乙酸酯
β-d-allose β-d-阿洛糖
β-d-glucose pentaacetate β-d-葡萄糖五乙酸酯
α-d-mannose pentaacetate α-d-五乙酸甘露糖酯
β-d-thioglucose sodium salt 1-β-d-硫葡萄糖钠盐
……
B1=RIGHT(A1,LEN(A1)-FIND("!",SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))
C1=TRIM(SUBSTITUTE(A1,B1," "))
注释:
思路:在中英文之间插入分隔符,然后再抽取中文,最后抽取英文。
以“MAKETING AND SALES 市场与销售部分”为 A1 内容示例,B1 公式从内往外看:
SUBSTITUTE(A1," ",""):SUBSTITUTE(text,old_text,new_text,instance_num),将 text 中的第 instance_num 个 old_text 替换为 new_text,所以本公式意思是将 A1 中的旧文本即所有空格
(instance munber 是指第几个旧文本,不指明则为所有旧文本)替换为非空格,即将空格删除。公式结果:MAKETINGANDSALES市场与销售部分
LEN(SUBSTITUTE(A1," ","")):LEN(text),LEN可以返回文本中的字符数,中文汉字和英文字母、空格、标点符号都按一个字符计算,LENB(text) 会将汉字等双字节字符算为两个字符,所以这个公式的
意思是,返回 A1 去除所有空格后的长度。公式结果:23
LEN(A1)-LEN(SUBSTITUTE(A1," ","")):公式同上,意思是,A1 的原始长度减去 A1 去除空格后的长度,即空格数量。公式结果:3
SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))):公式同上,意思是将 A1 中的最后一个空格(即第[空格数量]的空格)替换为英文感叹号 !。公式结果:MAKETING AND SALES!市场与
销售部分
FIND("!",SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))):FIND( substring, string, [start_position] ) ,从 [start_position] 开始(如果不指定,则从第一个字符开始)在
string 里面查找 substring 的从第一个字符计算的位置,所以本公式意思是在最后一个空格为 ! 的 A1 中查找 ! 号的位置数,即中英文分隔界限位置。公式结果:19
LEN(A1)-FIND("!",SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))):公式同上,意思是,A1 的原始长度减去中英分隔符 ! 位置数,即计算去除英文后中文字符的数量。公式结果:7
RIGHT(A1,LEN(A1)-FIND("!",SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))):RIGHT( text, [number_of_characters] ),从 text 最右边开始,抽取出 [number_of_characters]
个字符,如果 [number_of_characters] 省略,则从 text 最右边开始抽取一个字符,所以这个公式的意思是,从 A1 的最右边开始,抽取 ! 后的所有字符,即中文。公式结果:市场与销售部分
再看 C1 公式:
SUBSTITUTE(A1,B1," "):将 A1 中的 B1 内容都替换为空格(B1 即中文内容,“都”表示没有指定第几个 B1 内容)。公式结果:MAKETING AND SALES (注意,此时 SALES 后面有两个空格,一个是
英文本身有的,一个是中文替换为空格后留下的)
TRIM(SUBSTITUTE(A1,B1," ")),TRIM( text ),将 text 中的头部和尾部空格(包括单词之间的多余空格)去掉后再返回 text 值,所以这里的意思是,将去除了中文的 A1 中头尾空格去掉,只留下没
有头尾空格的英文。公式结果:MAKETING AND SALES(此时计算结果没有了上一个公式中留下的尾部空格)
(2)以空格分隔的中英文词汇
示例:
中华人民共和国主席/副主席 President/Vice President, the People’s Republic of China
全国人大委员长/副委员长 Chairman/Vice Chairman, National People’s Congress
秘书长 Secretary-General
主任委员 Chairman
委员 Member
(地方人大)主任 Chairman, Local People’s Congress
B1=LEFT(A1, FIND(" ",A1,1)-1)
C1=RIGHT(A1, LEN(A1)-LEN(B1)-1)
注释:
思路:因为是以空格分隔中英文,中文中没有空格,所以先找到第一个空格所在位置,以此位置为依据,抽取前后中英文。
以“全国人大委员长/副委员长 Chairman/Vice Chairman, National People’s Congress”为 A1 内容示例,B1 公式从内往外看:
FIND(" ",A1,1):FIND( substring, string, [start_position] ) ,从 [start_position] 开始(如果不指定,则从第一个字符开始)在 string 里面查找 substring 的、从第一个字符计算的位置,
所以这里的意思是,从第一个字符开始,在 A1 中查找空格的位置。公式结果:13
LEFT(A1, FIND(" ",A1,1)-1):LEFT( text, [number_of_characters] ),从 text 最左侧开始,抽取出 [number_of_characters] 个字符,如果 [number_of_characters] 省略,则从 text 最左侧抽
取一个字符,所以这个公式的意思是,从 A1 的最左侧开始,抽取[空格所在位置-1]个字符,即第一个空格之前的中文。公式结果:全国人大委员长/副委员长
C1 公式从内往外看:
LEN(B1):B1 单元格内容的长度,此处为空格前中文的长度。公式结果:12
LEN(A1)-LEN(B1)-1:将 A1 中英文混合单元格的内容长度减去 B1 中文内容的长度,即第一个空格加后面英文的长度,再减去一就是英文的长度。公式结果:50
RIGHT(A1, LEN(A1)-LEN(B1)-1):RIGHT( text, [number_of_characters] ),从 text 最右边开始,抽取出 [number_of_characters] 个字符,如果 [number_of_characters] 省略,则从 text 最右边
开始抽取一个字符,所以这个公式的意思是从 A1 的最右边开始,抽取[英文长度]个字符。公式结果:Chairman/Vice Chairman, National People’s Congress
注意:1)不能用数据分列功能,因为英文之间的空格和中英文之间的空格 Excel 无法区分。
2)不能使用 TRIM(LEFT(A1,(LENB(A1)-LEN(A1)))) 这类以 LEN 和 LENB 对中文、英文字符计数不同的方法来完成操作,因为如果中文内含有多个斜线 / 或者多个空格,会导致 RIGHT 或者 LEFT 函数
对中文部分计数不准确。例如“市长/副市长/省长 Mayor/Vice Mayor/Governor”,LENB 的结果是 42,LEN 的结果是 35,相减的结果是 7,LEFT(A1,(LENB(A1)-LEN(A1))) 的结果是“市长/副市长/”
,因为中文里面的 / 是单字节字符,影响中文准确计数。
(3)中英文之间直接连接有分隔符号
如:β-d-(+)-galactose pentaacetate:β-d-(+)-半乳糖五乙酸酯
……
B1=LEFT(A1,FIND(":",A1,1)-1)
C1=TRIM(SUBSTITUTE(A1,B1," "))
或用数据--分列--分列符号“:”--
或用替换
这里的“分隔符号”概念可以延伸到空格,所以公式类似空格类中英文词汇的分列。
(4)中英文直接连接
galactose pentaacetate半乳糖五乙酸酯
dichroine黄常山碱丙
ecdysone蜕皮激素
β-elemonic acidβ-岚香酮酸
C1=TRIM(RIGHT(A1,(LENB(A1)-LEN(A1))))
B1=TRIM(SUBSTITUTE(A1,C1,""))
如果是中文在前、英文在后则公式为:
C1=TRIM(LEFT(A1,(LENB(A1)-LEN(A1))))
B1=TRIM(SUBSTITUTE(A1,C1,""))
但是,如果中文内有斜线或者空格就会导致中英文计数不准确,与此类似的公式有(英中词汇)B1=LEFT(A1,2*LEN(A1)-LENB(A1)),C1=RIGHT(A2,LENB(A2)-LEN(A2)),这类公式都会在中文内有半角字符
时不准确。这里的公式有待改进。
注:部分可能需要修改
MAKETING AND SALES 市场与销售部分
β-d-(+)-galactose pentaacetate β-d-(+)-半乳糖五乙酸酯
β-d-allose β-d-阿洛糖
β-d-glucose pentaacetate β-d-葡萄糖五乙酸酯
α-d-mannose pentaacetate α-d-五乙酸甘露糖酯
β-d-thioglucose sodium salt 1-β-d-硫葡萄糖钠盐
……
B1=RIGHT(A1,LEN(A1)-FIND("!",SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))))
C1=TRIM(SUBSTITUTE(A1,B1," "))
注释:
思路:在中英文之间插入分隔符,然后再抽取中文,最后抽取英文。
以“MAKETING AND SALES 市场与销售部分”为 A1 内容示例,B1 公式从内往外看:
SUBSTITUTE(A1," ",""):SUBSTITUTE(text,old_text,new_text,instance_num),将 text 中的第 instance_num 个 old_text 替换为 new_text,所以本公式意思是将 A1 中的旧文本即所有空格
(instance munber 是指第几个旧文本,不指明则为所有旧文本)替换为非空格,即将空格删除。公式结果:MAKETINGANDSALES市场与销售部分
LEN(SUBSTITUTE(A1," ","")):LEN(text),LEN可以返回文本中的字符数,中文汉字和英文字母、空格、标点符号都按一个字符计算,LENB(text) 会将汉字等双字节字符算为两个字符,所以这个公式的
意思是,返回 A1 去除所有空格后的长度。公式结果:23
LEN(A1)-LEN(SUBSTITUTE(A1," ","")):公式同上,意思是,A1 的原始长度减去 A1 去除空格后的长度,即空格数量。公式结果:3
SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))):公式同上,意思是将 A1 中的最后一个空格(即第[空格数量]的空格)替换为英文感叹号 !。公式结果:MAKETING AND SALES!市场与
销售部分
FIND("!",SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))):FIND( substring, string, [start_position] ) ,从 [start_position] 开始(如果不指定,则从第一个字符开始)在
string 里面查找 substring 的从第一个字符计算的位置,所以本公式意思是在最后一个空格为 ! 的 A1 中查找 ! 号的位置数,即中英文分隔界限位置。公式结果:19
LEN(A1)-FIND("!",SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ","")))):公式同上,意思是,A1 的原始长度减去中英分隔符 ! 位置数,即计算去除英文后中文字符的数量。公式结果:7
RIGHT(A1,LEN(A1)-FIND("!",SUBSTITUTE(A1," ","!",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))):RIGHT( text, [number_of_characters] ),从 text 最右边开始,抽取出 [number_of_characters]
个字符,如果 [number_of_characters] 省略,则从 text 最右边开始抽取一个字符,所以这个公式的意思是,从 A1 的最右边开始,抽取 ! 后的所有字符,即中文。公式结果:市场与销售部分
再看 C1 公式:
SUBSTITUTE(A1,B1," "):将 A1 中的 B1 内容都替换为空格(B1 即中文内容,“都”表示没有指定第几个 B1 内容)。公式结果:MAKETING AND SALES (注意,此时 SALES 后面有两个空格,一个是
英文本身有的,一个是中文替换为空格后留下的)
TRIM(SUBSTITUTE(A1,B1," ")),TRIM( text ),将 text 中的头部和尾部空格(包括单词之间的多余空格)去掉后再返回 text 值,所以这里的意思是,将去除了中文的 A1 中头尾空格去掉,只留下没
有头尾空格的英文。公式结果:MAKETING AND SALES(此时计算结果没有了上一个公式中留下的尾部空格)
(2)以空格分隔的中英文词汇
示例:
中华人民共和国主席/副主席 President/Vice President, the People’s Republic of China
全国人大委员长/副委员长 Chairman/Vice Chairman, National People’s Congress
秘书长 Secretary-General
主任委员 Chairman
委员 Member
(地方人大)主任 Chairman, Local People’s Congress
B1=LEFT(A1, FIND(" ",A1,1)-1)
C1=RIGHT(A1, LEN(A1)-LEN(B1)-1)
注释:
思路:因为是以空格分隔中英文,中文中没有空格,所以先找到第一个空格所在位置,以此位置为依据,抽取前后中英文。
以“全国人大委员长/副委员长 Chairman/Vice Chairman, National People’s Congress”为 A1 内容示例,B1 公式从内往外看:
FIND(" ",A1,1):FIND( substring, string, [start_position] ) ,从 [start_position] 开始(如果不指定,则从第一个字符开始)在 string 里面查找 substring 的、从第一个字符计算的位置,
所以这里的意思是,从第一个字符开始,在 A1 中查找空格的位置。公式结果:13
LEFT(A1, FIND(" ",A1,1)-1):LEFT( text, [number_of_characters] ),从 text 最左侧开始,抽取出 [number_of_characters] 个字符,如果 [number_of_characters] 省略,则从 text 最左侧抽
取一个字符,所以这个公式的意思是,从 A1 的最左侧开始,抽取[空格所在位置-1]个字符,即第一个空格之前的中文。公式结果:全国人大委员长/副委员长
C1 公式从内往外看:
LEN(B1):B1 单元格内容的长度,此处为空格前中文的长度。公式结果:12
LEN(A1)-LEN(B1)-1:将 A1 中英文混合单元格的内容长度减去 B1 中文内容的长度,即第一个空格加后面英文的长度,再减去一就是英文的长度。公式结果:50
RIGHT(A1, LEN(A1)-LEN(B1)-1):RIGHT( text, [number_of_characters] ),从 text 最右边开始,抽取出 [number_of_characters] 个字符,如果 [number_of_characters] 省略,则从 text 最右边
开始抽取一个字符,所以这个公式的意思是从 A1 的最右边开始,抽取[英文长度]个字符。公式结果:Chairman/Vice Chairman, National People’s Congress
注意:1)不能用数据分列功能,因为英文之间的空格和中英文之间的空格 Excel 无法区分。
2)不能使用 TRIM(LEFT(A1,(LENB(A1)-LEN(A1)))) 这类以 LEN 和 LENB 对中文、英文字符计数不同的方法来完成操作,因为如果中文内含有多个斜线 / 或者多个空格,会导致 RIGHT 或者 LEFT 函数
对中文部分计数不准确。例如“市长/副市长/省长 Mayor/Vice Mayor/Governor”,LENB 的结果是 42,LEN 的结果是 35,相减的结果是 7,LEFT(A1,(LENB(A1)-LEN(A1))) 的结果是“市长/副市长/”
,因为中文里面的 / 是单字节字符,影响中文准确计数。
(3)中英文之间直接连接有分隔符号
如:β-d-(+)-galactose pentaacetate:β-d-(+)-半乳糖五乙酸酯
……
B1=LEFT(A1,FIND(":",A1,1)-1)
C1=TRIM(SUBSTITUTE(A1,B1," "))
或用数据--分列--分列符号“:”--
或用替换
这里的“分隔符号”概念可以延伸到空格,所以公式类似空格类中英文词汇的分列。
(4)中英文直接连接
galactose pentaacetate半乳糖五乙酸酯
dichroine黄常山碱丙
ecdysone蜕皮激素
β-elemonic acidβ-岚香酮酸
C1=TRIM(RIGHT(A1,(LENB(A1)-LEN(A1))))
B1=TRIM(SUBSTITUTE(A1,C1,""))
如果是中文在前、英文在后则公式为:
C1=TRIM(LEFT(A1,(LENB(A1)-LEN(A1))))
B1=TRIM(SUBSTITUTE(A1,C1,""))
但是,如果中文内有斜线或者空格就会导致中英文计数不准确,与此类似的公式有(英中词汇)B1=LEFT(A1,2*LEN(A1)-LENB(A1)),C1=RIGHT(A2,LENB(A2)-LEN(A2)),这类公式都会在中文内有半角字符
时不准确。这里的公式有待改进。
注:部分可能需要修改
还没人转发这篇日记