Помещение цикла в условие if - это можно сделать? - PullRequest
0 голосов
/ 20 сентября 2019

Я создаю инструмент, который извлекает данные из SQL, а затем извлекает данные в зависимости от дат и пользователей, связанных с этими данными.Мне это нужно для работы с широким кругом пользователей.

У меня есть код, который в настоящее время имеет вложенный цикл for.Используя переменные lastrow, он проверяет, равно ли значение ячейки и значение первого цикла, например, .range("b" & R), значению ячейки и значению второго цикла - .range("H" & i).В этом есть оператор if, например

Если дата в range("E"&r) = дата в range("G"&i) и lcase(range("A" & r) = lcase(range("H" & y) then...

Мне нужно, чтобы значение y изменилось в основномскажем if G&i = H&y or H&y и так далее, пока не доберусь до конца моего диапазона.

Sub mysub(sheet As String)

Dim i As Long
Dim r As Long
Dim y As Long
Dim lastRow As Long
Dim lastRow2 As Long
Dim hours As Single
Dim lastRow3 As Long

Application.ScreenUpdating = False

Sheets(sheet).Activate

lastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
lastRow2 = ActiveSheet.Range("AD" & Rows.Count).End(xlUp).Row
lastRow3 = Sheets("mysheet").Range("B" & Rows.Count).End(xlUp).Row

For r = 4 To lastRow2
    For i = 2 To lastRow
        For y = 2 To lastRow3
        If ActiveSheet.Range("E" & i).Value = ActiveSheet.Range("AH" & r) And _
            LCase(ActiveSheet.Range("A" & i).Value) = LCase(Sheets("agents").Range("B" & y).Value) Then
            hours = hours + ActiveSheet.Range("D" & i).Value
        End If
        Next y
    Next i
ActiveSheet.Range("AE" & r).Value = hours
ActiveSheet.Range("AE" & r).NumberFormat = "[h]:mm"
hours = 0
Next r


Application.ScreenUpdating = True

End Sub

Любая помощь в этом будет огромной помощью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...