Чтобы получить только один исходный результат для определенного диапазона - PullRequest
1 голос
/ 06 августа 2020

Следующий код предложен полезным пользователем, он хорошо подходит для вычисления значений «From», «To», «MAX» и c диапазона. Но этот код дает результаты в каждой строке диапазона. Я хочу получить результаты только в первой строке каждой строки. Пожалуйста, помогите с этим.

 Sub trial()

Dim lastrow As Long
Dim destSht As Worksheet
Dim i As Long, j As Long


Set destSht = Worksheets("Final")

With Worksheets("Source")
lastrow = .Range("B" & .Rows.Count).End(xlUp).Row

For i = 2 To lastrow + 1 'loop whole range (column C)
    If .Cells(i, "C") <> "" Then 'If column C is not empty then
        For j = i To lastrow + 1 'Loop "group" range to find next empty cell. Start from current loop i to last row and add one row to get to next empty cell.
            If .Cells(j, "C") = "" Then 'When next empty cell is found (i.e. end of small group range) then apply formulas
                .Cells(i, "E").Value = .Cells(i, "B").Value 'From
                .Cells(i, "F").Value = .Cells(j - 1, "B").Value 'To
                .Cells(i, "G").Formula = "=MAX(C" & i & ":C" & j - 1 & ")" 'MAX
                .Cells(i, "H").Formula = "=MIN(C" & i & ":C" & j - 1 & ")" 'MIN
                .Cells(i, "I").Formula = "=AVERAGE(C" & i & ":C" & j - 1 & ")" 'AVG
                Exit For
            End If
        Next j
    End If
Next I
End With

End Sub

Этот код дает следующий результат Result by Above Code

Desired Result Желаемое изображение результата

1 Ответ

1 голос
/ 06 августа 2020

Попробуйте изменить эту строку:

If .Cells(i, "C") <> "" Then 'If column C is not empty then

На эту строку:

If .Cells(i, "C") <> "" AND .Cells(i-1, "C") = "" Then 'If column C is not empty AND the column C above is empty then
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...