2015-09-04 5 views
0

Мне не удалось выяснить, как добавить счетчик ниже цикла 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 

ответ

0

Вы всегда сбрасываете 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 
+0

Спасибо! Я помещал его за пределы «для каждого», и это сработало! Я слишком долго смотрел на этот макрос. – RTrain3k

+0

@ user3290799 Рад, что я мог помочь. –

Смежные вопросы