Группировка строк по определенному условию из одного столбца - PullRequest
0 голосов
/ 03 апреля 2020

Прежде всего, это мой первый пост, поэтому я постараюсь объяснить проблему как можно проще. У меня есть лист, где хранятся данные обо всех товарах, купленных у поставщиков. В столбцах от A до G используются следующие данные: «Ссылочный товар», «Имя», «Поставщик», «Описание», «Унитарная стоимость», «Количество», «Общая стоимость (Qt * U.cost). Я хотел бы сгруппируйте строки каждого поставщика на отдельном листе для каждого (+50 различных Supp.).

Отдельно мне нужно, чтобы, когда внутри группы товаров поставщика находились товары с одинаковым «Ссылочным товаром» или то же самое «Имя», (есть статьи без «Ref Article» или «Имя») макрос сумма суммы количества и итогового значения, чтобы в итоге отображалась только одна строка для каждого типа товара со всеми количествами и итогом для этих товаров.

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

1 Ответ

0 голосов
/ 03 апреля 2020

Хорошо, давайте сделаем несколько гипотез:

  • У вас уже есть все ваши листы для ваших поставщиков
  • Эти листы поставщиков имеют то же имя, что вы можете найти в вашем листе данных

Что вы можете сделать:

Dim sheetSupplier As Worksheet
Dim i As Integer, last_used_row_supplier As Integer

With Sheets("Data") 'the sheet where all your data is located

    For i = 2 To 100 'please change according to the correct start and end

        supplier_sheet = .Cells(i, 3) 'gives the supplier name for each row, hence sheet name
        Set sheetSupplier = Sheets(supplier_sheet)
        next_row_supplier = sheetSupplier.Range("A1").End(xlDown).Row + 1 'gives row to use next

        'Now you can copy your data by using cells = cells

        sheetSupplier.Cells(next_row_supplier , 1) = .Cells(i, 1) 'column 1 in supply sheet = column 1 in data sheet
        sheetSupplier.Cells(next_row_supplier , 2) = .Cells(i, 5) 'column 2 in supply sheet = column 5 in data sheet
        '... and so on ...

    Next

End With

Что касается суммы на статью, вы можете просто использовать условную сумму (например, функцию SUMIF Excel).

Надеюсь, это поможет!

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