我正在尝试使用for循环来遍历几千行所有具有这种风格的数据:1010-2020-3030
我想使用连字符作为分隔符将此字符串拆分为3个单元格。我想将1010放入AI细胞,将2020放入AJ细胞,将3030放入AK细胞。
我已经搜遍了谷歌,并结合了一些我发现的例子,但是我收到了一个对象错误1004.这是我到目前为止的代码:
Sub Cell_Loop()
Dim cell As Range
For Each cell In ActiveSheet.Range("I2:I3000")
Selection.TextToColumns _
Destination:=Range("AI" & cell), _ '(I'm trying to use cell as a variable to iterate through.)
DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, _
Tab:=True, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=True, _
OtherChar:="-"
Next cell
End Sub
谁能看到我出错的地方?
答案 0 :(得分:1)
TextToColumns可以处理第I列中的所有近3000个条目,并将它们吐出到AI:AK列。
Sub Split_Without_Loop()
With ActiveSheet
.Range(.Cells(2, "I"), .Cells(.Rows.Count, "I").End(xlUp)).TextToColumns _
Destination:=Range("AI2"), _
DataType:=xlDelimited, _
Tab:=False, _
Semicolon:=False, _
Comma:=False, _
Space:=False, _
Other:=True, _
OtherChar:="-"
End With
End Sub
为了清晰起见,可以删除一些录制的代码,因为它与此操作无关。
您最初的问题是您将单元格循环到表示每个单元格的范围变量中,然后使用Selection
来控制TextToColumns命令。没有选择任何内容或当前所选单元格不包含连字符,并且无论如何,您没有将选择更改为循环中迭代的单元格。它可能适用于cell.TextToColumns _
而不是Selection.TextToColumns _
,但循环会大大减慢它的速度。