需要解决的问题:

如何将单元格内的中文姓名与数字或英文分开?

c++截取字符串中的一部分-Excel单元格内文本拆分——len和lenb插图

解决思路和方案:

案例中每个单元格中内容的特点是,每个串的前面是姓名,后面是类似于电话号码的一串数字或者英文名的一串字母,每个文字占用2个,而每个字母或者数字占用1个,根据这些情况可以知道每个单元格中的串的数要多于数

字节


字符


c++截取字符串中的一部分


c++截取字符串中的一部分

,而且总字节数与字符数的差正好是单元格内的中文字符数,利用这个规律拆分中文和后面的数字或字母。

通过LEFT/RIGHT和LEN/LENB截取对应数量的字符来获取对应的中文、数字或英文,如下:

函数

截取中文部分

c++截取字符串中的一部分-Excel单元格内文本拆分——len和lenb插图1

截取数字部分

c++截取字符串中的一部分-Excel单元格内文本拆分——len和lenb插图2

出现了新的问题:

当单元格内的中文与数字或英文调换位置后,再用原来的办法就不灵了,需要调整公式逻辑和函数内的变量

c++截取字符串中的一部分-Excel单元格内文本拆分——len和lenb插图3

调整后的公式:

c++截取字符串中的一部分-Excel单元格内文本拆分——len和lenb插图4

参考:

LEFT和RIGHT函数:

LEFT函数用于从文本字符串的第一个字符开始返回指定个数的字符

语法:LEFT( string, n )

RIGHT函数用于从字符串右端取指定个数字符

语法:RIGHT(string,n)

LEN和LENB函数:

LEN函数是返回文本字符串中的字符数

语法:LEN(text)

LENB函数是返回文本字符串中用于代表字符的字节数

语法:LENB(text)