数据中的锯齿数组| 文本到列

我拥有的

我们以这个代码的作用为例。

Sub Sample() Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("Sheet1") ws.Columns(1).TextToColumns _ Destination:=Range("A1"), _ DataType:=xlFixedWidth, _ FieldInfo:=Array( _ Array(0, 1), Array(60, 1), Array(120, 1), Array(180, 1), _ Array(240, 1), Array(300, 1), Array(360, 1), Array(420, 1) _ ), _ TrailingMinusNumbers:=True End Sub 

我想要的是

在一小组数据中,上面的代码起作用。 但是如果我想要说Array(2700,1)呢? 这意味着我将不得不写它46Array(0, 1), Array(60, 1)...Array(1080, 1)....Array(2700, 1)

我曾经尝试过

我尝试使用这种方法

 Sub Sample() Dim ws As Worksheet Dim MyArray Dim MyStr As String Dim i As Long For i = 0 To 2700 Step 60 MyStr = MyStr & "#" & "Array(" & i & ",1)" Next i MyStr = Mid(MyStr, 2) MyArray = Split(MyStr, "#") Set ws = ThisWorkbook.Sheets("Sheet1") ws.Columns(1).TextToColumns _ Destination:=Range("A1"), _ DataType:=xlFixedWidth, _ FieldInfo:=MyArray, _ TrailingMinusNumbers:=True End Sub 

显然这不会作为Array(i,1)存储为MyArray的string。

我的问题

有没有什么办法可以在循环中创build这样的锯齿状数组,所以我所要做的就是说FieldInfo:=MyArray

您可以将数组分配给数组项,如下所示:

 Dim n As Long n = 0 ReDim MyArray(2700 \ 60) For i = 0 To 2700 Step 60 MyArray(n) = Array(i, 1) n = n + 1 Next i 

你正确的。 而不是在循环中添加string,只需创build实际的数组项目。

所以这是你将会有的:

 Sub Sample() Dim ws As Worksheet Dim MyArray(20) As Variant '<-- specify the number of items you want Dim i As Long For i = 0 To UBound(MyArray) MyArray(i) = Array(i * 60, 1) Next Set ws = ThisWorkbook.Sheets("Sheet1") ws.Columns(1).TextToColumns _ Destination:=Range("A1"), _ DataType:=xlFixedWidth, _ FieldInfo:=MyArray, _ TrailingMinusNumbers:=True End Sub