我正在尝试拆分字符串并创建一个循环来遍历列中的单元格。有一些挑战:
拆分仅适用于ActiveCell
。
循环遍历所有单元格,直到LastRow,但填充所有单元格
仅使用ActiveCell
的分割字符串值。
即使有i = 0
,数组拆分也会以Option Base 1
开头
在模块的开头。
如何更改目的地的位置(例如,而不是 在现有数据旁边拆分字符串,是否有管理选项 列号)?
谢谢
Option Explicit
Option Base 1
Sub SplitStringLoop()
Dim txt As String
Dim i As Integer
Dim y As Integer
Dim FullName As Variant
Dim LastRow As Single
ReDim FullName(3)
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
txt = ActiveCell.Value
FullName = Split(txt, "-")
For y = 2 To LastRow
For i = 1 To UBound(FullName)
Cells(y, i + 1).Value = FullName(i)
Next i
Next y
End Sub
答案 0 :(得分:4)
Chris Nelisen概述了原因,我在发布之前编写了这段代码,所以无论如何我都会发布。
Option Explicit
Sub SplitStringLoop()
Dim txt As String
Dim i As Integer
Dim y As Integer
Dim FullName As Variant
Dim LastRow As Single
ReDim FullName(3)
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For y = 2 To LastRow
Cells(y, 1).Select
txt = ActiveCell.Value
FullName = Split(txt, "-")
For i = 0 To UBound(FullName)
Cells(y, i + 2).Value = FullName(i)
Next i
Next
End Sub
答案 1 :(得分:0)
解决您列出的问题
Split
对您传递给它的字符串起作用。 您正在将活动单元格值传递给它。FullName
)的结果。那你还期待什么?Split
返回从零开始的一维数组。它在帮助中就是这么说的。 Option Base 1
指定默认下限,因为您未在Dim
语句中指定它。Cells(y, i + 1)
中指定了列(在本例中为i + 1
)。如果您想在其他地方使用它,请指定其他列。