正则表达式基于前导空格移动单元格


首先

要说的是,我不是编码员,只是很少涉足使电子表格更容易忍受的人。

我目前有一些数据需要根据单元格中前导空格的数量分成列。基本上,如果单元格以 2 个空格开头,则将其向右移动 1 列,如果有 3 个空格,则向右移动 2 列,依此类推。

我意识到我需要为此使用正则表达式,因为在搜索 3 个空间单元格时,FIND 和 LEFT 会匹配所有 2 个空间单元格。

所以我四处寻找,拼凑出这个烂摊子

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。用于匹配 3 和 4 空格单元格的模式和 If 语句

一般解决方案如下。您计算前导空格(我们将此值称为 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

最新更新