Excel - макрос для группировки по столбцу и сумме значений

Microsoft Office Software включает в себя Microsoft Excel, который представляет собой приложение для работы с электронными таблицами с графическими таблицами, вычислениями, языком макросов, называемым VBA (Visual Basics for Applications) и сводными таблицами. Сводная таблица используется для отображения данных; он распознает и суммирует эти данные для получения указанных результатов. Макрос представляет собой список команд или действий для ускорения длинных данных или повторяющихся задач в Excel Office Software; это можно запустить всякий раз, когда вам нужно выполнить задачу. Он принимает значения, выполняет требуемую операцию и возвращает значение соответственно. Если вы хотите написать макрос для группировки по столбцу и сумме, просто запустите макрос, используя соответствующие команды.

вопрос

Мне нужно написать макрос для следующего примера:

 Кол-во Длина A 1 100 A 1 100 B 2 200 B 1 100 B 5 100 C 4 200 C 2 100 C 1 200 C 3 100 

По сути, я хочу сгруппировать по столбцу A (т. Е. Item) и столбцу C (т. Е. По длине), а также хочу добавить сумму каждого изменения длины для элемента. В этом случае результат на новом листе будет таким, как показано ниже:

 Кол-во Длина A 2 100 B 2 200 B 6 100 C 5 200 C 5 100 

Надеюсь, это имеет смысл.

Может кто-нибудь помочь мне написать макрос Excel для этого, пожалуйста?

Решение

Попробуй это

Предположение:

  • 1. Когда вы запускаете макрос, лист, из которого копируются данные, является активным листом.
  • 2. Пустая ячейка в столбце A указывает на конец данных
  • 3. Вы хотите вставить на лист 3 (исправить в макросе, если это не так)

 Sub consolidateData () Dim lRow As Long Dim ItemRow1, ItemRow2 As String Dim lengthRow1, lengthRow2 As String Columns ("A: C"). Выберите Selection.Copy Sheets ("Sheet3"). Выберите диапазон ("A1"). Выберите ActiveSheet . Вставить ячейки. Выбрать Selection.Sort _ Key1: = Range ("A2"), Order1: = xlAscending, _ Key2: = Range ("C2"), Order2: = xlDescending, _ Header: = xlYes, OrderCustom: = 1, _ MatchCase: = False, ориентация: = xlTopToBottom, _ DataOption1: = xlSortNormal lRow = 2 Do While (Cells (lRow, 1) "") ItemRow1 = Клетки (lRow, "A") ItemRow2 = Клетки (lRow + 1, «A») lengthRow1 = ячейки (lRow, «C») lengthRow2 = ячейки (lRow + 1, «C») If ((ItemRow1 = ItemRow2) и (lengthRow1 = lengthRow2)) тогда ячейки (lRow, «B») = Ячейки (lRow, "B") + Ячейки (lRow + 1, "B") Rows (lRow + 1). Удалите остальное lRow = lRow + 1 End If Loop End Sub 

Заметка

Спасибо rizvisa1 за этот совет на форуме.

Предыдущая статья Следующая статья

Лучшие советы