为每个循环添加计数器
Add counter to for each loop
我一直无法弄清楚如何向下面的 for each
循环添加一个计数器,以便在完成一整列公式后,循环移动到下一列。所有计算都正确发生,但都在同一列中。感谢您的任何建议。
Sub Test()
Dim SrchRng1 As Range, cell1 As Range
Dim SrchRng2 As Range, cell2 As Range
Dim lr As Long
lr = Sheets("sheet1").Cells(Rows.count, 2).End(xlUp).Row
Set SrchRng1 = Sheets("sheet1").Range("B3:B95")
Dim lc As Long
lc = Sheets("sheet2").Cells(3, Columns.count).End(xlToLeft).Column
Set SrchRng2 = Sheets("sheet2").Range("A3:AC3")
Dim lrr As Long
lrr = Sheets("sheet2").Cells(Rows.count, 2).End(xlUp).Row
Dim c As Long
c = 0
For Each cell1 In SrchRng1
For Each cell2 In SrchRng2
If cell1.Value = cell2.Value Then
c = 31
For r = 4 To 100
Cells(r, c).FormulaR1C1 = "=sheet1!" & cell1.Offset(, 1).Address(ReferenceStyle:=xlR1C1) & "*" & cell2.Offset(1, 0).Address(ReferenceStyle:=xlR1C1) & ""
Next r
c = c + 1
End If
Next cell2
Next cell1
Application.DisplayAlerts = True
End Sub
你总是每次都将 c 重置为 31。将 c= 31 移出内部循环,移到第一个 for 语句的正下方。像这样:
For Each cell1 In SrchRng1
c = 31
For Each cell2 In SrchRng2
If cell1.Value = cell2.Value Then
For r = 4 To 100
Cells(r, c).FormulaR1C1 = "=sheet1!" & cell1.Offset(, 1).Address(ReferenceStyle:=xlR1C1) & "*" & cell2.Offset(1, 0).Address(ReferenceStyle:=xlR1C1) & ""
Next r
c = c + 1
End If
Next cell2
Next cell1
我一直无法弄清楚如何向下面的 for each
循环添加一个计数器,以便在完成一整列公式后,循环移动到下一列。所有计算都正确发生,但都在同一列中。感谢您的任何建议。
Sub Test()
Dim SrchRng1 As Range, cell1 As Range
Dim SrchRng2 As Range, cell2 As Range
Dim lr As Long
lr = Sheets("sheet1").Cells(Rows.count, 2).End(xlUp).Row
Set SrchRng1 = Sheets("sheet1").Range("B3:B95")
Dim lc As Long
lc = Sheets("sheet2").Cells(3, Columns.count).End(xlToLeft).Column
Set SrchRng2 = Sheets("sheet2").Range("A3:AC3")
Dim lrr As Long
lrr = Sheets("sheet2").Cells(Rows.count, 2).End(xlUp).Row
Dim c As Long
c = 0
For Each cell1 In SrchRng1
For Each cell2 In SrchRng2
If cell1.Value = cell2.Value Then
c = 31
For r = 4 To 100
Cells(r, c).FormulaR1C1 = "=sheet1!" & cell1.Offset(, 1).Address(ReferenceStyle:=xlR1C1) & "*" & cell2.Offset(1, 0).Address(ReferenceStyle:=xlR1C1) & ""
Next r
c = c + 1
End If
Next cell2
Next cell1
Application.DisplayAlerts = True
End Sub
你总是每次都将 c 重置为 31。将 c= 31 移出内部循环,移到第一个 for 语句的正下方。像这样:
For Each cell1 In SrchRng1
c = 31
For Each cell2 In SrchRng2
If cell1.Value = cell2.Value Then
For r = 4 To 100
Cells(r, c).FormulaR1C1 = "=sheet1!" & cell1.Offset(, 1).Address(ReferenceStyle:=xlR1C1) & "*" & cell2.Offset(1, 0).Address(ReferenceStyle:=xlR1C1) & ""
Next r
c = c + 1
End If
Next cell2
Next cell1