Код: Выделить всё
Sub macros()
Dim i As Long
b = "xxx"
d = "bbb"
e = "ccc"
f = "ddd"
g = "eee"
x41=0
d4=0
i = 2
r=1
While Not IsEmpty(Sheets("name_page1").Cells(r, 1))
While Not IsEmpty(Sheets("name_page2").Cells(i, 2))
If (Left(Sheets("name_page1").Cells(r, 15).Value, Len(b)) <> b) Or (Sheets("name_page1").Cells(r, 15).Value <> d) Or _
(Sheets("name_page1").Cells(r, 12).Value = e) Or _
(Sheets("name_page1").Cells(r, 12).Value = f) Or _
(Sheets("name_page1").Cells(r, 12).Value = g) And (Sheets("name_page1").Cells(r, 14) = _
Sheets("name_page2").Cells(i, 2)) Then
If Sheets("name_page1").Cells(r, 8).Value = x9 And Sheets("name_page1").Cells(r, 9).Value = 38 And _
(Sheets("name_page1").Cells(r, 10).Value = 31) And (Sheets("name_page1").Cells(r, 12).Value = e) And _
(Sheets("name_page1").Cells(r, 23).Value <> h) Then
x41 = x41 + 1
End If
If Sheets("name_page1").Cells(r, 8).Value = x1 And Sheets("name_page1").Cells(r, 9).Value = 35 And _
(Sheets("name_page1").Cells(r, 23).Value <> c) And (Sheets("name_page1").Cells(r, 12).Value = f) Then
d4 = d4 + 1
End If
........
много много условий и счетчиков
........
End If
i = i + 1
Wend
r = r + 1
данный код раньше без второго цикла работал довольно быстро, и безупречно все считал, потому что решение было тупо в лоб, что облегчило алгоритм решения, но нагромоздило код. Хотелось бы сократить количество условий, переменных. И что бы второй цикл всё таки считал, а не обнулял значения. Раньше макрос обсчитывал всё с одной страницы, и не было проблем. Появилась идея сврять данные с другой страцей, и все данные стали обнуляться. В связи с чем это произошло?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
можно закрывать тему, решение было найдено самостоятельно.