Суммируйте значения в диапазоне на основе условия if и для каждого цикла - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть 3 столбца данных (я представляю подмножество для простоты понимания).В первом столбце отображается номер этикетки, во 2-м столбце - количество вдоль номера этикетки, а в 3-м - цена.

Я хочу суммировать цену для этикеток в столбцах 3, но только если количество в столбце 2> = 1,иначе ничего не делать.

Данные:

enter image description here

Желаемый результат:

enter image description here

В результате цена в 3-м столбце суммируется из всех значений для метки 1 и присваивается каждой метке, если количество в колонке 2>> = 1.Для всех остальных цена не меняется, потому что количество равно 0.

Я получаю несоответствие для используемых диапазонов.Я не уверен, стоит ли мне использовать массивы:

Sub test()

Dim cell As Range
Dim cell2 As Range
Dim rngLabel As Range
Dim rngQuantity As Range
Dim rngAmount As Range

Dim ws1 As Worksheet

Set ws1 = ThisWorkbook.Sheets("Sheet3")

With ws1

    Set rngLabel = .Range(.Cells(3, 1), .Cells(.Rows.Count, 1))
    Set rngQuantity = .Range(.Cells(3, 2), .Cells(.Rows.Count, 2))
    Set rngAmount = .Range(.Cells(3, 3), .Cells(.Rows.Count, 3))

    For Each cell In rngLabel.Cells
        For Each cell2 In rngAmount.Cells
            If rngQuantity.Value >= 1 Then
            cell = WorksheetFunction.Sum(rngAmount)
            End If
        Next cell2
    Next cell

End With
End Sub

1 Ответ

0 голосов
/ 13 февраля 2019

Существуют встроенные функции, которые могут вам помочь.

sub test()

    Dim ws1 As Worksheet

    Set ws1 = ThisWorkbook.Sheets("Sheet3")

    With ws1
        with .range(.cells(3, "A"), .cells(.rows.count, "C").end(xlup).offset(0, 1))
            .columns(4).cells.formular1c1 = "=if(rc[-2]>0, sumifs(c[-1], c[-3], rc[-3]), rc[-1])"
            .columns(3).cells = .columns(4).cells.value
            .columns(4).cells.clear
        end with
    end with

end sub

Кстати, ваши объекты диапазона были установлены до самого конца листа.Вы пропустили .end(xlup) в конце.

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