通过检测列的单词中的空格字符,将数据从一列移动到另一列

时间:2015-05-07 17:18:32

标签: excel vba excel-vba

我在转换时将一些pdf文件转换为xlsx格式,pdf文件中的数据以xlsx格式分散,因此我编写了一个宏来调整数据。

现在问题是G栏有食物项目的数据,如" 1 Cream"," 7 Cakes"," 3 Sugars" 我注意到像这样的数据之间有一个空格字符。

还有一些数据,例如" 343 Wilson Avenue"," 232 The Broadway"

我想将食品的所有数据移到H栏,并希望将地址保留在G栏中。

我注意到食物上的第二个角色总是有空格

我正在使用的代码是

Sub Price_Adjust()
Dim J As Range, L As Range, G As Range, K As Range, r As Range
Set J = Intersect(ActiveSheet.UsedRange, Range("J:J"))
Set L = Intersect(ActiveSheet.UsedRange, Range("L:L"))
Set G = Intersect(ActiveSheet.UsedRange, Range("G:G"))
Set K = Intersect(ActiveSheet.UsedRange, Range("K:K"))
For Each r In J
    If Left(r.Text, 1) = "$" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r

For Each r In J
    If Left(r.Text, 1) = "(" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r


For Each r In L
    If Left(r.Text, 1) = "(" Then
        r.Copy r.Offset(0, -1)
        r.Clear
    End If
Next r

For Each r In L
    If Left(r.Text, 1) = "$" Then
        r.Copy r.Offset(0, -1)
        r.Clear
    End If
Next r

 For Each r In G
    If Left(r.Text, 1) = "D" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r

For Each r In G
    If Left(r.Text, 1) = "H" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r

 For Each r In G
    If Left(r.Text, 1) = "T" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r

For Each r In G
    If Left(r.Text, 1) = "C" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r

For Each r In G
    If Left(r.Text, 1) = "1" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r

For Each r In K
    If Left(r.Text, 1) = "P" Then
        r.Copy r.Offset(0, 1)
        r.Clear
    End If
Next r

ActiveWorkbook.Save

End Sub

1 个答案:

答案 0 :(得分:0)

为了确定字符串的第二个字符是space,请使用:

Dim TheString as String
TheString = "6 ducks"
If Mid(TheString, 2, 1) = " " Then
  MsgBox "There's a space in position 2 of the string"
End If

对于您的特定用途,请注意,您可能会遇到4 Wicker Drive等地址,并最终导致错误的数据排序。

根据评论

更新

将此代码置于某种循环中,以便在G

列中运行您使用过的单元格范围
If IsNumber(Left(MySheet.Range("G" & SomeRow), 1) Then
  MySheet.Range("H" & SomeRow) = MySheet.Range("G" & SomeRow)
  MySheet.Range("G" & SomeRow) = ""
End If