Excel - макрос за групиране по колони и суми

Софтуерът на Microsoft Office включва Microsoft Excel, който е приложение за електронни таблици с графични таблици, изчисления, език за програмиране на макроси, наречен VBA (Visual Basics for Applications) и обобщени таблици. За обобщаване на данните се използва обобщена таблица; той разпознава и обобщава тези данни, за да получи определени резултати. Макросът представлява списък от команди или действия, които правят дългите данни или повтарящи се задачи в Excel Office по-бързи; това може да се изпълнява всеки път, когато трябва да изпълните задачата. Той приема стойностите, извършва необходимата операция и съответно връща стойността. Ако искате да напишете макрос за групиране по колона и сумарна стойност, тогава просто стартирайте макроса с помощта на съответните команди.

Проблем

Трябва да напиша макрос за следния пример:

 Артикул Количество Дължина 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 2 100 B 2 200 B 6 100 C 5 200 C 5 100 

Надявам се това да има смисъл.

Може ли някой да ми помогне да напиша макрос Excel за това, моля?

Решение

Опитайте тази

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

  • 1. Когато стартирате макрос, листът, от който трябва да се копират данните, е активният лист
  • 2. Празна клетка в колона А показва края на данните
  • 3. Вие искате да поставите в лист 3 (правилно в макроса, ако това не е така)

 Sub consolidateData () Dim lRow Дълго Dim ItemRow1, ItemRow2 Като String Dim lengthRow1, lengthRow2 As String Columns ("A: C"). Изберете Selection.Copy Sheets ("Sheet3") Изберете Range ("A1") Изберете ActiveSheet Пасиране на клетки.Избор на селекция.Сорт _ Ключ1: = Обхват ("А2"), Поръчка1: = xlAscending, _ Key2: = Обхват ("C2"), Поръчка2: = xlDescending, _ Header: = xlYes, OrderCustom: = 1, _ MatchCase: = False, Orientation: = 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 Край, ако Loop End Sub 

Забележка

Благодарение на rizvisa1 за този съвет на форума.

Предишна Статия Следваща Статия

Топ Съвети