我坚持使用VBA代码,急需您的帮助。这是我想要达到的目标-
第1步:我必须迭代地捕获D列中的字符串(C2中提到的字符串数将根据数据集而变化)
第2步:将根据“ _”对每个字符串进行分割,由于我只需要第二,第一,第三,第五部分(以该特定顺序),因此我不得不重新组合它们-在下面进一步表示“输出”下的D列
第3步:我必须将D列中新创建的字符串和F列中的字符串连接起来,并创建所有可能的组合-在F列的“输出”下进一步表示
第4步:将所有创建的组合提供到不同工作表中的范围C(在此步骤中卡住):(
下面是我尝试创建的代码,由于某些原因,该代码未遍历i。它只是一直给我提供值4。是因为我们不能在循环中动态分配和刷新变量的值吗?在我的情况下是temp_string。我尝试了循环的所有其他变种,但没有帮助。我认为我从根本上错过了一些东西。任何建议都将受到高度赞赏!
Sub Test()
Dim a_count As Integer, i As Integer
Dim temp_string As String, temp_substring As String
Dim o_array() As String
a_count = Sheet7.Range("C2")
For i = 2 To a_count
temp_string = Sheet7.Range("D" & i)
o_array = Split(temp_string, "_")
temp_substring = o_array(1) & "_" & o_array(0) & "_" & o_array(2) _
& "_" & o_array(4)
Next i
Debug.Print i, temp_substring
End Sub
答案 0 :(得分:1)
这就是我要做的。
Sub Test()
Dim a_count As Long
Dim iet As Range
Dim fet As Range
Dim rCell As Range
Dim rCell1 As Range
Dim array_size As Long
Dim o_Array() As String
Dim o_FinalOutput() As String
Dim temp_substring As String
Dim x As Long
With Sheet7
'Change so it returns the last row with data, not the count of data.
a_count = .Range("C2")
'or
'a_count = .Cells(.Rows.Count, 4).End(xlUp).Row
'These two variables will reference the full range of figures
'in column D and column F.
Set iet = .Range("D4", .Cells(a_count, 4))
Set fet = .Range("F4", .Cells(.Rows.Count, 6).End(xlUp))
End With
'Figure out the size of the final array.
array_size = iet.Cells.Count * fet.Cells.Count
ReDim o_FinalOutput(1 To array_size)
'Step through each cell in column D.
For Each rCell In iet
o_Array = Split(rCell, "_")
temp_substring = o_Array(1) & "_" & _
o_Array(0) & "_" & _
o_Array(2) & "_" & _
o_Array(4) & "_"
'Step through each cell in column F and stick it to column D text.
For Each rCell1 In fet
x = x + 1
o_FinalOutput(x) = temp_substring & rCell1
Next rCell1
Next rCell
'Dump the whole array into Sheet2 starting at cell C1.
With Sheet2
.Range("C1", .Cells(array_size, 3)) = WorksheetFunction.Transpose(o_FinalOutput)
End With
End Sub
您可能想要阅读Cells,该内容与Range
基本上相同,只是它查看单个单元格并使用行号和列号。
您还需要调整一些数字以将数据放置在正确的行上。
例如
.Range("C1", .Cells(array_size, 3))
-array_size
仅在从第1行开始时起作用。要从第2行开始,您需要在array_size中添加1:.Range("C2", .Cells(array_size+1, 3))