作者:乔山办公网日期:
返回目录:excel表格制作
运用数组这个概念,用split这个函数去查找中间的分隔符,然后循环依次向后在单元格中赋值。
一、对于第1、3两个问题,我写的这个宏可以完美解决,代码如下:
Sub 分列()
'以空格为分隔符,连续空格只算1个。对所选中的单元格进行处理
Dim m As Range, tmpStr As String, s As String
Dim x As Integer, y As Integer, subStr As String
If MsgBox("确定要分列处理吗?请确定分列的数据会覆盖它后面的单元格!", _
vbYesNoCancel + vbQuestion) <> vbYes Then Exit Sub
For Each m In Selection
x = m.Column()
y = m.Row()
tmpStr = m.Value
subStr = ""
For i = 1 To Len(tmpStr)
s = Mid(tmpStr, i, 1)
If s = " " And subStr = "" Then '连续的空格,忽略
ElseIf s = " " And subStr <> " " Then '空格表示e68a84e799bee5baa6362子串结束
Cells(y, x).Value = subStr
subStr = ""
x = x + 1
ElseIf s <> " " Then '新子串开始或进行中
subStr = subStr & s
End If
Next i
If subStr <> "" Then Cells(y, x).Value = subStr
Next m
End Sub
二、楼主所提的第2个问题,Excel早就考虑到了,所以Excel提供了一个叫个人宏工作簿的文件用来存放自己要用的宏!
可以通过录制宏到“个人宏工作簿”来让Excel自动建立“个人宏工作簿”,如果没有的话。然后,你按Alt+F8选中你所录制的宏,点单步执行,即可在宏编辑器中看到个人宏工作簿中的宏,此时你可把自己的代码放进去,或者删除自己胡乱录制的宏。
Good Luck!
'j表示数组的第几列 a(i, j) = Split(tmp, "|")(j - 1) '把tmp用”|“符号切割成5段,依次保存到数组第i行的5个列中 Next Loop Close #,xcfCsk
Sub 分列()
Sheets("数据").Select'激活“数据”工作表
Selection.ClearContents'清除“数据”表中copy,当前选中区域的内容
Range("B3").Select'选中B3单元格
ActiveSheet.Paste'粘贴
ActiveSheet.Paste'粘贴
Sheets("统计").Select'激活“统计”工作表
End Sub
你的代码里根本没有分列zhidao啊~