Екцел - Макро за груписање по колонама и сумама

Мицрософт Оффице софтвер садржи Мицрософт Екцел који је апликација за табеларне прорачуне са графичким табелама, калкулацијама, макро програмским језиком, названим ВБА (Висуал Басицс фор Апплицатионс) и пивот табелама. Пивот табела се користи за пописивање података; она препознаје и сажима те податке како би добила одређене резултате. Макро представља листу команди или радњи које омогућују брже и дуже задатке у Екцел Оффице софтверу; ово се може покренути кад год је потребно извршити задатак. Он узима вредности, извршава потребну операцију и враћа вредност у складу са тим. Ако желите да напишете макро за групу по колони и суму вредности онда само покрените макро помоћу одговарајућих команди.

Питање

Морам да напишем макро за следећи пример:

 Предмет Кол. Дужина А 1 100 А 1 100 Б 2 200 Б 1 100 Б 5 100 Ц 4 200 Ц 2 100 Ц 1 200 Ц 3 100 

У основи желим груписати по колони А (тј. Позицији) и колони Ц (тј. Дужини) и такође желим додати укупну вриједност сваке промјене у дужини, за ставку. У овом случају, резултат на новом листу ће бити као у наставку:

 Ком. Дужина ком. А 2 100 Б 2 200 Б 6 100 Ц 5 200 Ц 5 100 

Надам се да ово има смисла.

Може било тко помоћ мене писати Екцел макро за овај молим?

Решење

Пробајте ово

Претпоставка:

  • 1. Када покренете макро, лист одакле се подаци копирају је активни лист
  • 2. Празна ћелија у колони А означава крај података
  • 3. Желите да се залијепите на лист 3 (тачно у макроу, ако то није случај)

 Суб цонсолидатеДата () Дим лРов Ас Лонг Дим ИтемРов1, ИтемРов2 Ас Стринг Дим ленгтхРов1, ленгтхРов2 Ас Стринг Цолумнс ("А: Ц"). Изаберите Селецтион.Цопи Схеетс ("Схеет3"). Изаберите Ранге ("А1"). .Пасте Целлс.Селецт Селецтион.Сорт _ Кеи1: = Ранге ("А2"), Ордер1: = клАсцендинг, _ Кеи2: = Ранге ("Ц2"), Ордер2: = клДесцендинг, _ Хеадер: = клИес, ОрдерЦустом: = 1, _ МатцхЦасе: = Фалсе, Ориентатион: = клТопТоБоттом, _ ДатаОптион1: = клСортНормал лРов = 2 До вхиле (ћелије (лРов, 1) "") ИтемРов1 = Ћелије (лРов, "А") ИтемРов2 = Ћелије (лРов + 1, "А") ленгтхРов1 = Ћелије (лРов, "Ц") ленгтхРов2 = Ћелије (лРов + 1, "Ц") Ако ((ИтемРов1 = ИтемРов2) И (ленгтхРов1 = ленгтхРов2)) Затим ћелије (лРов, "Б") = Ћелије (лРов, "Б") + Ћелије (лРов + 1, "Б") Редови (лРов + 1) .Делете Елсе лРов = лРов + 1 Енд Ако је Лооп Енд Суб 

Белешка

Хвала ризвиса1 за овај тип на форуму.

Претходни Чланак Sledeći Чланак

Топ Савети