如何分离列中的所有字符串并将每个子字符串粘贴到其他列中?(VBA提供)
现在我在A列中有如下字符串:如何分离列中的所有字符串并将每个子字符串粘贴到其他列中?(VBA提供),vba,excel,Vba,Excel,现在我在A列中有如下字符串: aa-bb-cc-123 aa-bb-cc-345 aa-bb-cc-789 etc... 如何在VBA中以“-”分隔字符串,并将每个子字符串粘贴到不同的列中?例如: column W column X column Y column Z aa bb cc 123 aa bb cc 456 aa bb
aa-bb-cc-123
aa-bb-cc-345
aa-bb-cc-789
etc...
如何在VBA中以“-”分隔字符串,并将每个子字符串粘贴到不同的列中?例如:
column W column X column Y column Z
aa bb cc 123
aa bb cc 456
aa bb cc 789
任何帮助都将不胜感激 开始录制宏。准备就绪后,通过“数据”菜单,选择“文本到列”。按照向导进行到底。停止录音。检查宏代码并根据需要进行修改。开始录制宏。准备就绪后,通过“数据”菜单,选择“文本到列”。按照向导进行到底。停止录音。签出宏代码并根据需要进行修改。您可以尝试以下代码:
Sub split_AtoW()
Dim x As Long, mydata
For x = 1 To Range("A65526").End(xlUp).Row 'x = first row here, so change to 2 if header row exists
mydata = split(Range("A" & x), "-") 'put data in column A into an array split by "-"
Range("W" & x).Resize(1, UBound(mydata) + 1).Value = mydata 'put data in the split array into W onwards
Next x
End Sub
您可以尝试以下代码:
Sub split_AtoW()
Dim x As Long, mydata
For x = 1 To Range("A65526").End(xlUp).Row 'x = first row here, so change to 2 if header row exists
mydata = split(Range("A" & x), "-") 'put data in column A into an array split by "-"
Range("W" & x).Resize(1, UBound(mydata) + 1).Value = mydata 'put data in the split array into W onwards
Next x
End Sub
选择要处理并运行此小宏的单元格:
Sub Splitter()
Dim r As Range
For Each r In Selection
ary = Split(r.Value, "-")
For i = LBound(ary) To UBound(ary)
r.Offset(0, i + 1).Value = ary(i)
Next i
Next r
End Sub
选择要处理并运行此小宏的单元格:
Sub Splitter()
Dim r As Range
For Each r In Selection
ary = Split(r.Value, "-")
For i = LBound(ary) To UBound(ary)
r.Offset(0, i + 1).Value = ary(i)
Next i
Next r
End Sub
对于这样一个简单的任务,您需要使用VBA吗?如果否,则使用文本到列;)编辑:我看到@Tarik已经建议:)我同意在大多数情况下,文本到列将是一种方式,但它不会填充正确的列(W到V),并且会覆盖B到D并破坏A列的内容。对于这样一个简单的任务,您需要使用VBA吗?如果否,则使用文本到列;)编辑:我看到@Tarik已经建议:)我同意在大多数情况下,文本到列将是一种方式,但它不会填充正确的列(W到V),并且会覆盖B到D,并破坏A列的内容。+1建议文本到列。我仍然觉得,对于这样一项简单的任务,不需要VBa1关于向列建议文本。我仍然觉得,对于这样一项简单的任务,不需要VBa那相当紧凑+1那相当紧凑+1根据问题的要求,这需要一个小mod将W填充到Z,如果选择了多个列,则可能会在一个列上消失。根据问题的要求,这需要一个小mod将W填充到Z,如果选择了多个列,则可能会在一个列上消失。