我试图将excel表中的数据拆分,如下所示:
|a a 1|
|b b 2|
|c c 3|
|d d d 4|至
|a a| 1|
|b b| 2|
|c c| 3|
|d d d| 4|我观察到一种模式,例如,如果在任何特定单元格(或行)的字符之间有多个空格,则应该将它们分割为单独的列。
发布于 2015-07-01 18:48:39
我将使用正则表达式将连续两个或更多空格的序列替换为制表符,然后使用TextToColumns方法将列拆分为两部分:
Set xl = CreateObject("Excel.Application")
xl.Visible = True
Set wb = xl.Workbooks.Open("C:\path\to\your.xlsx")
Set ws = wb.Sheets(1)
Set re = New RegExp
re.Pattern = " +"
For Each cell In ws.UsedRange
cell.Value = re.Replace(cell.Value, vbTab)
Next
ws.UsedRange.TextToColumns发布于 2015-07-01 12:15:17
使用查找的RegExp
如:
Option Explicit
Function qq(s) : qq = """" & s & """" : End Function
Dim r : Set r = New RegExp
r.Pattern = "^(.+?)\s+(\d+)$"
Dim s, m
For Each s In Split("a a 1|d d d 4", "|")
Set m = r.Execute(s)(0)
WScript.Echo qq(m.Submatches(0)), qq(m.Submatches(1))
Next产出:
cscript 31160562.vbs
"a a" "1"
"d d d" "4"发布于 2015-07-01 14:46:21
您可以编写一个基于空格使用拆分函数的函数,
下面是代码片段,它感觉对你很有用。
Dim arrVar
strCelldata = Worksheets("Sheet1").Cells(1, 1)
arrVar = Split(strCelldata, " ")
j = 2
For Each arrVal In arrVar
If Trim(arrVal) <> "" Then
Worksheets("Sheet1").Cells(1, j) = arrVal
j = j + 1
End If
Next您可能需要再添加一个for循环,以遍历excel表上的所有可用数据。
https://stackoverflow.com/questions/31160562
复制相似问题