作者:乔山办公网日期:
返回目录:excel表格制作
用Mid函数可以做到:
定义:Mid是Visual Basic和Microsoft Excel中的一个字符串抄函数,作用是从一个字符串中截取出指定数量的字符。
格式:MID(text, start_num, num_chars)
参数:
text,必选。变体(袭字符串)表达式,要被截取的字符。如果该参数为Null,则函数返回Null。
start_num,必选。数值表达式,从左起第几位开始截取。
num_chars,必选。变体(数值)表达式,从参数指定的位置开始,要向右截百取的长度。如果省略,将指定为从Start参数位置开始向右到字度符串结尾的所有字符数。
示例:假设A1内容为ABC123。
1、=MID(A1,1,5),结果:ABC12。
2、=MID(A1,3,5),结果:C123。
如果文字和数字是混合着的,且数字位数不统一,那么使用LEFT、RIGHT、MID函数的适用知性将大大降低。
B2单元格输入以下公式,然后向下填充公式
=-LOOKUP(,-MIDB(A2,SEARCHB("?",A2),ROW($1:$15)))
公式表示:从A2单元格中,查找半个字节所在道的位置,作为MIDB的截取起始位置,截出一组字符串;因前面加内上了负号,LOOKUP从所有负数中找到最小的负数,并通过LOOKUP前的负号转换为正值,即为从单元格中分离出的数字。
详见附容图及公式求值过程
用VBA正则吧百。度
自定义函数知如下道(样本文件见回附答件):
Function mm(ByVal mStr As String) As String
Dim regXp As Object
Set regXp = CreateObject("vbScript.regExp")
With regXp
.Global = True
.Pattern = "[\u4e00-\u9fa5]"
mm = .Replace(mStr, "")
End With
End Function
还算比较有规律,提zd取数据的前面字数相同,这回就容易一些了,如图答
B1=LEFT(REPLACE(A1,1,12,),LEN(REPLACE(A1,1,12,))*2-LENB(REPLACE(A1,1,12,))-2)