从你的例子看,数字都在前面,汉字集中在后面,可以这样做:
C1=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"0",""),"1",""),"2",""),"3",""),"4",""),"5",""),"6",""),"7",""),"8",""),"9","")
B1=SUBSTITUTE(A1,C1,"")
选定B1:C1
下拉
如图:
这个方法的原理是,在原字符串中把数字都替换成"",剩下的就是汉字字符串了。
假定原字符串中汉字都集中在一起,在原字符串中,把集中在一起汉字替换成"",剩下的就是数字字符串了。
用如下VBA程序,则即使数字与汉字混杂在一起都能分离开来。为了不把B列和C列的公式冲掉,我把运行结果放在D列和E列:
Sub 分离数字与汉字()
Dim rng As Range, a$, b$, i%
For Each rng In Intersect(UsedRange, Range("A:A"))
a$ = "'"
b$ = ""
For i% = 1 To Len(rng.Value)
If Mid(rng.Value, i%, 1) Like "[0-9]" Then
a$ = a$ & Mid(rng.Value, i%, 1)
End If
If Asc(Mid(rng.Value, i%, 1)) < 0 Then
b$ = b$ & Mid(rng.Value, i%, 1)
End If
Next i%
rng.Offset(, 3).Value = a$
rng.Offset(, 4).Value = b$
Next
End Sub
一、数字在前汉字在后的内容结构
如 1234元 或 99999公斤 这样的数据写在A1单元格
则
在B1单元格写入公式
=LEFT(A1,2*LEN(A1)-LENB(A1))
在C1单元格写入公式
=RIGHT(A1,LENB(A1)-LEN(A1))
下拉填充公式就能得出如下图的效果
二、汉字在前数字在后的内容结构
如 文具个数1800 或 型号999888 这样的数据写在A1单元格
则
在B1单元格写入公式
=LEFT(A1,LENB(A1)-LEN(A1))
在C1单元格写入公式
=RIGHT(A1,2*LEN(A1)-LENB(A1))
下拉填充公式就能得出如下图的效果
三、以上公式都是利用数字是单字节,汉字是双字节的原理进行计算的,用了LENB计算单元格中共有多少个字节数,再用LEN来统计单元格中有多少个字符数,用两者的差值来提取字符个数的.
1、如果数字位数都是6位,公式最简单=midb(a2,(column(a1)-1)*6+1,6) 右拉填充,再下拉填充
2、如果位数不定,楼上提供的各公式都可以。
3、不用公式,原数据不再保留,也可以用分列的方法。
left 从A1里面左侧取 A1里面字符字节长度减去A1里面字符数的个数
right 从A1里面右侧取A1里面字符个数的 2倍减去A1里面字符字节数
将公式修改如下:
=LEFT(A1,LEN(A1)*2-LENB(A1))
=RIGHT(A1,LENB(A1)-LEN(A1))