使用VBA将多个文本转换为Excel中的列
很抱歉,我是第一次尝试VBA,我不太确定如何执行多列的“文本到”列 我已在列AN、AO和AP中设置了我的值 我想: 1) 将文本列A转换为AQ-AZ 2) 将AO列的文本转换为BA-BE列 3) 将AP列的文本转换为BF-BJ列 我以这种方式开始我的代码,但无论我尝试的范围是什么,都会显示一个错误:使用VBA将多个文本转换为Excel中的列,excel,vba,Excel,Vba,很抱歉,我是第一次尝试VBA,我不太确定如何执行多列的“文本到”列 我已在列AN、AO和AP中设置了我的值 我想: 1) 将文本列A转换为AQ-AZ 2) 将AO列的文本转换为BA-BE列 3) 将AP列的文本转换为BF-BJ列 我以这种方式开始我的代码,但无论我尝试的范围是什么,都会显示一个错误: Dim count As Integer count = Worksheets("Sheet0").Range("A1", Worksheets("Sheet0").Range("A1").En
Dim count As Integer
count = Worksheets("Sheet0").Range("A1",
Worksheets("Sheet0").Range("A1").End(xlDown)).Rows.Count - 1
For i = 1 To count
????接下来会发生什么
我希望对这些列执行文本转换,但这些列中有空单元格,因此我引用了列A,它是我的数据的完整列表
样本数据: 或者在您的具体情况下:
Option Explicit
Sub Sample()
Dim lr As Long, x As Long
Dim rng1 As Range, rng2 As Range
With Sheet1 'Change according to your sheets CodeName
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng1 = .Range(Replace("AN2:AN?,AO2:AO?,AP2:AP?", "?", lr))
Set rng2 = .Range(Replace("AQ2:AZ?,BA2:BE?,BF2:BJ?", "?", lr))
For x = 1 To rng1.Areas.Count
rng1.Areas(x).TextToColumns Destination:=rng2.Areas(x), DataType:=xlDelimited, Comma:=True
Next x
End With
End Sub
示例代码: 另一种可能更容易理解的方法是:
Option Explicit
Sub Sample()
Dim lr As Long, x As Long
Dim rng1 As Range, rng2 As Range
With Sheet1 'Change according to your sheets CodeName
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng1 = .Range(Replace("B2:B?,F2:F?,J2:J?", "?", lr))
Set rng2 = .Range(Replace("C2:E?,G2:I?,K2:M?", "?", lr))
For x = 1 To rng1.Areas.Count
rng1.Areas(x).TextToColumns Destination:=rng2.Areas(x), DataType:=xlDelimited, Comma:=True
Next x
End With
End Sub
或者在您的具体情况下:
Option Explicit
Sub Sample()
Dim lr As Long, x As Long
Dim rng1 As Range, rng2 As Range
With Sheet1 'Change according to your sheets CodeName
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng1 = .Range(Replace("AN2:AN?,AO2:AO?,AP2:AP?", "?", lr))
Set rng2 = .Range(Replace("AQ2:AZ?,BA2:BE?,BF2:BJ?", "?", lr))
For x = 1 To rng1.Areas.Count
rng1.Areas(x).TextToColumns Destination:=rng2.Areas(x), DataType:=xlDelimited, Comma:=True
Next x
End With
End Sub
样本结果: 或者在您的具体情况下:
Option Explicit
Sub Sample()
Dim lr As Long, x As Long
Dim rng1 As Range, rng2 As Range
With Sheet1 'Change according to your sheets CodeName
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng1 = .Range(Replace("AN2:AN?,AO2:AO?,AP2:AP?", "?", lr))
Set rng2 = .Range(Replace("AQ2:AZ?,BA2:BE?,BF2:BJ?", "?", lr))
For x = 1 To rng1.Areas.Count
rng1.Areas(x).TextToColumns Destination:=rng2.Areas(x), DataType:=xlDelimited, Comma:=True
Next x
End With
End Sub
注1:只需更改范围参考以满足您的需要
注2:因为您没有提供什么类型的数据,也没有使用什么分隔符;您可能需要使用参数这里是一个快速示例:
样本数据: 或者在您的具体情况下:
Option Explicit
Sub Sample()
Dim lr As Long, x As Long
Dim rng1 As Range, rng2 As Range
With Sheet1 'Change according to your sheets CodeName
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng1 = .Range(Replace("AN2:AN?,AO2:AO?,AP2:AP?", "?", lr))
Set rng2 = .Range(Replace("AQ2:AZ?,BA2:BE?,BF2:BJ?", "?", lr))
For x = 1 To rng1.Areas.Count
rng1.Areas(x).TextToColumns Destination:=rng2.Areas(x), DataType:=xlDelimited, Comma:=True
Next x
End With
End Sub
示例代码: 另一种可能更容易理解的方法是:
Option Explicit
Sub Sample()
Dim lr As Long, x As Long
Dim rng1 As Range, rng2 As Range
With Sheet1 'Change according to your sheets CodeName
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng1 = .Range(Replace("B2:B?,F2:F?,J2:J?", "?", lr))
Set rng2 = .Range(Replace("C2:E?,G2:I?,K2:M?", "?", lr))
For x = 1 To rng1.Areas.Count
rng1.Areas(x).TextToColumns Destination:=rng2.Areas(x), DataType:=xlDelimited, Comma:=True
Next x
End With
End Sub
或者在您的具体情况下:
Option Explicit
Sub Sample()
Dim lr As Long, x As Long
Dim rng1 As Range, rng2 As Range
With Sheet1 'Change according to your sheets CodeName
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng1 = .Range(Replace("AN2:AN?,AO2:AO?,AP2:AP?", "?", lr))
Set rng2 = .Range(Replace("AQ2:AZ?,BA2:BE?,BF2:BJ?", "?", lr))
For x = 1 To rng1.Areas.Count
rng1.Areas(x).TextToColumns Destination:=rng2.Areas(x), DataType:=xlDelimited, Comma:=True
Next x
End With
End Sub
样本结果: 或者在您的具体情况下:
Option Explicit
Sub Sample()
Dim lr As Long, x As Long
Dim rng1 As Range, rng2 As Range
With Sheet1 'Change according to your sheets CodeName
lr = .Cells(.Rows.Count, 1).End(xlUp).Row
Set rng1 = .Range(Replace("AN2:AN?,AO2:AO?,AP2:AP?", "?", lr))
Set rng2 = .Range(Replace("AQ2:AZ?,BA2:BE?,BF2:BJ?", "?", lr))
For x = 1 To rng1.Areas.Count
rng1.Areas(x).TextToColumns Destination:=rng2.Areas(x), DataType:=xlDelimited, Comma:=True
Next x
End With
End Sub
注1:只需更改范围参考以满足您的需要
注2:因为您没有提供什么类型的数据,也没有使用什么分隔符;你可能需要玩弄这些参数运气好吗@jade.elvest谢谢你,JvdV!它无缝地满足了我的需要do@jade.elves很高兴听到这个消息。在这种情况下,请通过点击答案左边的复选标记来接受答案,如果有帮助的话,也可以考虑进行投票。它无缝地满足了我的需要do@jade.elves很高兴听到这个消息。在这种情况下,请通过点击答案左边的复选标记来接受答案,如果有帮助的话,也可以考虑投票。