Sumifs vba loop в каждом ряду - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь создать макрос, который выполняет суммирование на основе одного условия, где условие задается значением первой ячейки каждой строки. Таблица 2 - это результат, который я хочу. Как это выглядит в Excel = Sumifs (Sales; Store; nStore; Retailer; nRetailer)

введите описание изображения здесь

Ответы [ 2 ]

0 голосов
/ 07 марта 2019

Вы можете попробовать метод консолидации:

Шаги:

  1. Выберите ячейку, которую хотите вставить всего (в моем сценарии ячейка D1)
  2. Перейти к Данные - Инструменты данных - Консолидация
  3. Выбрать весь диапазон ( A1: B9 ) данных на Ссылки
  4. Нажмите Добавить
  5. Нажмите OK

Результаты:

enter image description here

0 голосов
/ 07 марта 2019

Словарь создает быстрый SUMIF и создает уникальный список розничных продавцов.

Sub mySumIf()

    Dim i As Long, arr As Variant, retailer As string, dict As Object

    Set dict = CreateObject("scripting.dictionary")
    dict.comparemode = vbTextCompare

    With Worksheets("tab 1")
        'collect source values into array
        arr = .Range(.Cells(2, "A"), .Cells(.Rows.Count, "C").End(xlUp)).Value2
    End With

    retailer = UCase(Worksheets("tab 2").Cells(4, "F").Value2)

    'build a dictionary with Stores as keys and Sales as Items
    For i = LBound(arr, 1) To UBound(arr, 1)
        If UCase(arr(i, 2)) = retailer Then
            dict.iktem(arr(i, 1)) = dict.iktem(arr(i, 1)) + arr(i, 3)
        End If
    Next i

    With Worksheets("tab 2")
        'put Stores and Summed Sales onto target worksheet
        .Cells(6, "E").Resize(dict.Count, 1) = Application.Transpose(dict.keys)
        .Cells(6, "F").Resize(dict.Count, 1) = Application.Transpose(dict.items)
    End With

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