首先,我不是编码员,只是一个很少涉足以使电子表格更易于使用的人。
我目前有一些数据需要根据单元格中前导空格的数量分为几列。基本上,如果单元格以2个空格开头,则将其向右移1列;如果有3个空格,则将其向右移2列,依此类推。
我意识到我需要为此使用正则表达式,因为当搜索2个空间像元时,FIND和LEFT会匹配所有3个空间像元。
所以我四处搜寻并将这个烂摊子拼凑在一起
Sub MoveStuff()
Dim RE as Object
Dim LSearchRow As Long
Dim LCopyToColumn As Long
Set RE = CreateObject("vbscript.regexp")
RE.Pattern = " (a-zA-Z)"
LSearchRow = 2
While Len(Cells(LSearchRow, "B").Value) > 0
If RE.Test(Cells(LSearchRow, "B").Value) Then
到目前为止,它会正确匹配,但是我不知道如何获取它以将单元格移过去。那显然我需要有多个RE.Patterns和If语句来匹配3个和4个空间单元格
答案 0 :(得分:1)
以下是一般解决方案。计算前导空格(我们将此值称为N
),然后将其从单元格值中删除,然后复制右侧的单元格N
列。
Public Sub movestuff()
Dim curr_row, curr_column, s
curr_column = 2 'COLUMN "B"
curr_row = 1
While (ActiveSheet.Cells(curr_row, curr_column) <> "")
s = ActiveSheet.Cells(curr_row, curr_column)
For x = 1 To Len(s) Step 1
If Mid(s, x, 1) <> " " Then
Exit For
End If
Next
s = Mid(s, x)
ActiveSheet.Cells(curr_row, curr_column + (x - 1)) = s
curr_row = curr_row + 1
Wend
End Sub