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

Програмне забезпечення Microsoft Office містить програму 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 (тобто елементом) і стовпцем 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 Як довго Dim ItemRow1, ItemRow2 Як рядок Dim lengthRow1, lengthRow2 As String Columns ("A: C"). Виберіть Selection.Copy Sheets ("Sheet3"). Вибрати діапазон ("A1"). Виділити вибір.Сортувати_ ключ1: = Діапазон ("A2"), Order1: = xlAscending, _ Key2: = Діапазон ("C2"), Order2: = xlDescending, _ Header: = xlYes, OrderCustom: = 1, _ MatchCase: = False, орієнтація: = xlTopToBottom, _ DataOption1: = xlSortNormal lRow = 2 Do While (Клітинки (lRow, 1) "") ItemRow1 = Клітини (lRow, "A") ItemRow2 = Клітинки (lRow + 1, "A") lengthRow1 = Клітинки (lRow, "C") lengthRow2 = Клітинки (lRow + 1, "C") Якщо ((ItemRow1 = ItemRow2) А (lengthRow1 = lengthRow2)) Тоді клітинки (lRow, "B") = Клітинки (lRow, "B") + осередки (lRow + 1, "B") Рядки (lRow + 1) .Видалити інше lRow = lRow + 1 Закінчити, якщо Sub End End 

Примітка

Завдяки rizvisa1 за цей відгук на форумі.

Попередня Стаття Наступна Стаття

Кращі Поради