繁体   English   中英

为每个循环添加计数器

[英]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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM