LA704HDOJI30BW7PS61389I4PE64I23U
H0801OD11N0VU4X7IOXOCI1EJKFFWOND
IRXIEC476AQ14ORNWN01PR2AO175MT2R
9I9JX81J4G4AXP08LLK8C21A932N7MRV
C84F6T5PS76QE11JL5D125406TC2E2G5
4RU4IJ41WN7NRN85D0CD5874U6HT86M0
FIVJQ27LN31729TB9886699AM37NAUNP
34BU796MI6NCKJ06DN0U1VRIVOF0I7CF
36OR695QF7N58AIHIAOI8W67TP7219P4
78N809Q9J8MRK9S09QHQ2H6AI16OD5G4
EXLEFSB7O8772VEEJJ27E4AF0ORWITNV
R5V4K7HTHF9P5S7CH4208ORJBSV8X644
每行代码4个字符为一组,中间加-
例如78N809Q9J8MRK9S09QHQ2H6AI16OD5G4
改成78N8-09Q9-J8MR-K9S0-9QHQ-2H6A-I16O-D5G4
在excel中如何批量实现
如果用自定义函数处理,代码如下
Function FGTEXT(Text, Patrn, Optional ByVal Text1 As String = "-") '第一个参数是原字符串,第二个参数是间隔数,第三个变量是用于连接的字符,默认为“-”
Dim i&, Str1$, Str2$ ' 建立变量。
i = Len(Text)
For x = 1 To i Step Patrn '在字符串中循环
Str2 = Mid(Text, x, Patrn)
If Str1 = "" Then
Str1 = Str2
Else
Str1 = Str1 & Text1 & Str2
End If
Next x
FGTEXT = Str1
End Function
如你的数据在A列,B1输入公式
=fgtext(A1,4,)
这样的结果就是每四个为一组,用“-”连接,第三个参数是默认-,改为其他字符就会用其他字符连接。
公式下拉完成
自定义函数的方法:
按ALT+F11打开VBE编辑器,在左边栏中插入一个模块,在右边的编辑栏中粘贴以上代码,关闭编辑器
自定义函数就可以直接在表格中使用了。
Function FGTEXT(Text, Patrn, Optional ByVal Text1 As String = "-") '第一个参数是原字符串,第二个参数是间隔数,第三个变量是用于连接的字符,默认为“-”
Dim i&, Str1$, Str2$ ' 建立变量。
i = Len(Text)
For x = 1 To i Step Patrn '在字符串中循环
Str2 = Mid(Text, x, Patrn)
If Str1 = "" Then
Str1 = Str2
Else
Str1 = Str1 & Text1 & Str2
End If
Next x
FGTEXT = Str1
End Function
如你的数据在A列,B1输入公式
=fgtext(A1,4,)
这样的结果就是每四个为一组,用“-”连接,第三个参数是默认-,改为其他字符就会用其他字符连接。
公式下拉完成
自定义函数的方法:
按ALT+F11打开VBE编辑器,在左边栏中插入一个模块,在右边的编辑栏中粘贴以上代码,关闭编辑器
自定义函数就可以直接在表格中使用了。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2012-03-13
最好是自定义函数公式,这样可以使公式具有通用性,即无论需要处理的字符串长度是多少位都能处理。
下面介绍一个处理文本的功能非常强大的自定义函数TEXTRACT,代码如下:
'-------------------------------------------------------------------------------------------
Function TEXTRACT(Text, Patrn, Optional ByVal fgf As String = "")
Dim regEx, Match, Matches ' 建立变量。
Set regEx = CreateObject("vbScript.regexp") 'New RegExp ' 建立正则表达式。
regEx.Pattern = Patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全局替换。
' regEx.MultiLine = True '设置多行匹配。
Set Matches = regEx.Execute(Text) ' 执行搜索。
For Each Match In Matches ' 遍历 Matches 集合。
RetStr = RetStr & fgf & Match
Next
TEXTRACT = Mid(RetStr, Len(fgf) + 1)
End Function
'----------------------------------------------------------------------------
使用该自定义函数的方法及步骤:
①、在EXCEL中,按Alt+F11组合键打开VBA编辑器,并从编辑器的“插入”菜单中插入“模块”,
②、把上述代码复制到模块的代码窗口内,并关闭VBA编辑器。
③、在工作表中添加公式。假定你的字符串在A列中,那么在B1单元格中输入公式并下拉即可:
=TEXTRACT(A1,".{1,4}","-")
PS:该自定义函数是一个处理文本功能非常强大的通用性的函数,本例仅为其应用之一角。比如该函数可以给字符串任意提取数字、字母、中文字符、标点符号或其它具有固定特征的字符,以及如本例这样添加分隔符号。
下面介绍一个处理文本的功能非常强大的自定义函数TEXTRACT,代码如下:
'-------------------------------------------------------------------------------------------
Function TEXTRACT(Text, Patrn, Optional ByVal fgf As String = "")
Dim regEx, Match, Matches ' 建立变量。
Set regEx = CreateObject("vbScript.regexp") 'New RegExp ' 建立正则表达式。
regEx.Pattern = Patrn ' 设置模式。
regEx.IgnoreCase = True ' 设置是否区分大小写。
regEx.Global = True ' 设置全局替换。
' regEx.MultiLine = True '设置多行匹配。
Set Matches = regEx.Execute(Text) ' 执行搜索。
For Each Match In Matches ' 遍历 Matches 集合。
RetStr = RetStr & fgf & Match
Next
TEXTRACT = Mid(RetStr, Len(fgf) + 1)
End Function
'----------------------------------------------------------------------------
使用该自定义函数的方法及步骤:
①、在EXCEL中,按Alt+F11组合键打开VBA编辑器,并从编辑器的“插入”菜单中插入“模块”,
②、把上述代码复制到模块的代码窗口内,并关闭VBA编辑器。
③、在工作表中添加公式。假定你的字符串在A列中,那么在B1单元格中输入公式并下拉即可:
=TEXTRACT(A1,".{1,4}","-")
PS:该自定义函数是一个处理文本功能非常强大的通用性的函数,本例仅为其应用之一角。比如该函数可以给字符串任意提取数字、字母、中文字符、标点符号或其它具有固定特征的字符,以及如本例这样添加分隔符号。
第2个回答 2012-03-13
公式虽然长,可没半点挑战性。。。
假设原数据在A列
B1输入公式
=LEFT(A1,4)&"-"&MID(A1,5,4)&"-"&MID(A1,9,4)&"-"&MID(A1,13,4)&"-"&MID(A1,17,4)&"-"&MID(A1,21,4)&"-"&MID(A1,25,4)&"-"&RIGHT(A1,4)
下拉即可本回答被提问者采纳
假设原数据在A列
B1输入公式
=LEFT(A1,4)&"-"&MID(A1,5,4)&"-"&MID(A1,9,4)&"-"&MID(A1,13,4)&"-"&MID(A1,17,4)&"-"&MID(A1,21,4)&"-"&MID(A1,25,4)&"-"&RIGHT(A1,4)
下拉即可本回答被提问者采纳
第3个回答 2012-03-13
我说一个另类的,
分列,固定宽度,四个字符一分隔。将这些字符分成很多列。
然后用公式 =a1&"-"&b1&"-"&c1&"-"&d1&"-"&e1&"-"&f1&"-"&g1&"-"&h1
分列,固定宽度,四个字符一分隔。将这些字符分成很多列。
然后用公式 =a1&"-"&b1&"-"&c1&"-"&d1&"-"&e1&"-"&f1&"-"&g1&"-"&h1