Excel For循环VBA中的迭代变量赋值
我被VBA代码卡住了,急需你的帮助。以下是我努力实现的目标- 步骤1:我必须迭代捕获D列中的字符串(C2中提到了该列的计数,它将根据数据集的不同而变化) 步骤2:这些字符串中的每一个都将根据“u”进行拆分,我必须重新组合它们,因为我只需要第2、第1、第3、第5部分(按特定顺序)-在“输出”下的D列中进一步表示 步骤3:我必须将新生成的字符串连接到D列和F列,并创建所有可能的组合-在F列的“输出”下进一步表示 步骤4:将所有创建的组合以不同的表格形式提供给范围C(卡在该步骤中):( 下面是我试图创建的代码,由于某种原因,它没有循环通过I。它只是不断地给我值4。这是因为我们不能在循环中动态分配和刷新变量值吗?在我的例子中是temp_字符串。我尝试了所有其他类型的循环,但没有任何帮助。我认为我基本上缺少了一些东西。任何adv非常感谢您Excel For循环VBA中的迭代变量赋值,excel,vba,Excel,Vba,我被VBA代码卡住了,急需你的帮助。以下是我努力实现的目标- 步骤1:我必须迭代捕获D列中的字符串(C2中提到了该列的计数,它将根据数据集的不同而变化) 步骤2:这些字符串中的每一个都将根据“u”进行拆分,我必须重新组合它们,因为我只需要第2、第1、第3、第5部分(按特定顺序)-在“输出”下的D列中进一步表示 步骤3:我必须将新生成的字符串连接到D列和F列,并创建所有可能的组合-在F列的“输出”下进一步表示 步骤4:将所有创建的组合以不同的表格形式提供给范围C(卡在该步骤中):( 下面是我试图创
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
我就是这样做的
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
您可能希望读取与范围基本相同的数据,只是它查看单个单元格并使用行号和列号
您还需要调整一些数字,以便将数据放在正确的行上
例如
.Range(“C1”,.Cells(数组大小,3))
-数组大小
仅在从第1行开始时有效。要从第2行开始,需要将1添加到数组大小:.Range(“C2”,.Cells(数组大小+1,3))
您的DEBUG
在循环之外,因此它在整个循环中运行,并将最终值打印到即时窗口。将DEBUG.Print i…
放在Next i
之前。范围C2
中的值是多少?如果它小于2,我想循环根本不会运行,如果它等于2,它会运行只循环一次……我想。天哪,facepalm!非常感谢@DarrenBartrup Cook!:)嘿@DarrenBartrup Cook!关于这件事,我需要进一步的指导。我能够使用for循环重新创建迭代。例如,F列“输出”中存储在2D数组temp(1,1)、temp(1,2)、temp(2,1)、temp(2,2)、temp(3,1)和temp(3,2)中的6个变量。但是我需要一个接一个地分配这些值,比如在G范围内。第三个循环与两个循环冲突,因为迭代次数因第三个变量而变化。有什么想法吗?这是我使用的代码,用于j=1到adset_count到k=1到creative_count iet_string=Sheet7.Range(“D”&j+1)oet_数组()=Split(iet_string,”),assub_string=oet_数组(2)和“”&oet_数组(3)和“”&oet_数组(4)和“”&oet_数组(5)和“”&oet_数组(6)&oet_数组(7)ic_string=Sheet7.范围(“F”&k+1)a_string=csub_string&&assub_string&&ic_string temp(j,k)=a_string Debug.打印j,k,temp(j,k)Next k Next j'列可能会有所不同,因为这是对最终数据集的引用。请帮忙这是伟大的@Darren Bartup Cook!非常感谢您的帮助:)