Excel - Ett makro att gruppera efter kolumn- och sumvärden

Microsoft Office-programvaran består av Microsoft Excel, som är en kalkylarksapplikation med grafiska tabeller, beräkningar, ett makroprogrammeringsspråk, kallat VBA (Visual Basics for Applications) och pivottabeller. Ett pivottabell används för att lista data; Det erkänner och summerar den data för att erhålla specificerade resultat. Ett makro representerar en lista med kommandon eller åtgärder för att göra längre data eller repetitiva uppgifter i Excel Office Software snabbare; Detta kan köras när du behöver utföra uppgiften. Det tar värdena, utför den nödvändiga operationen och returnerar värdet i enlighet därmed. Om du vill skriva ett makro för att gruppera efter kolumn och summa värde startar du bara makroet med hjälp av relevanta kommandon.

Problem

Jag behöver skriva ett makro för följande exempel:

 Artikelnummer Längd 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 

I grund och botten vill jag gruppera genom kolumn A (dvs artikel) och kolumn C (dvs. längd) och vill också lägga till summan av varje ändring i längder, för ett objekt. I det här fallet skulle resultatet på det nya arket vara som nedan:

 Artikelnummer Längd A 2 100 B 2 200 B 6 100 C 5 200 C 5 100 

Hoppas det här är vettigt.

Kan någon hjälpa mig att skriva ett Excel-makro för det här tack?

Lösning

Prova detta

Antagande:

  • 1. När du startar ett makro, är arket från vilket data ska kopieras från det aktiva arket
  • 2. En tom cell i kolumn A anger slutet på data
  • 3. Du vill klistra in till ark 3 (korrigera i makro om det inte är fallet)

 SubConsolidateData () Dimera lRå så länge Dim ItemRow1, ItemRow2 Som String Dim LengthRow1, längdRow2 som strängkolumner ("A: C"). Välj Selection.Copy Sheets ("Sheet3"). Välj Range ("A1"). Välj ActiveSheet Paste Cells.Select Selection.Sort _ Key1: = Range ("A2"), Order1: = xlAscending, _ Key2: = Område ("C2"), Order2: = xlDescending, _ Header: = xlYes, OrderCustom: = 1, _ MatchCase: = False, Orientering: = xlTopToBottom, _ DataOption1: = xlSortNormal lRow = 2 gör medan (celler (lRow, 1) "") ItemRow1 = Cells (lRow, "A") ItemRow2 = Cells (lRow + 1, "A") längdRow1 = celler (lRow, "C") längdRow2 = celler (lRow + 1, "C") Om ((ItemRow1 = ItemRow2) Och (lengthRow1 = lengthRow2)) Celler (lRow, "B") = Celler (lRow, "B") + celler (lRow + 1, "B") Rader (lRow + 1) .Delete Else lRow = lRow + 1-änden om Loop End Sub 

Notera

Tack till rizvisa1 för detta tips på forumet.

Tidigare Artikel Nästa Artikel

Bästa Tipsen