Hoppa till huvudinnehåll

Hur slår man snabbt samman rader baserat på ett kolumnvärde och gör sedan några beräkningar i Excel?

Till exempel har du en rad data och en kolumn har dubbletter, nu vill du slå samman rader baserar kolumn A (har dubbletter) och gör sedan några beräkningar till en annan kolumn baserat på de sammanslagna raderna som skärmdump som visas:

I Excel finns det ingen snabb metod för att slå samman rader baserat på ett kolumnvärde, men här introducerar jag
knep som kan hjälpa dig att slå samman dubbla rader och sedan summera eller göra andra beräkningar i en annan kolumn.


pil blå höger bubbla Slå ihop rader baserat på en kolumn och summera värden med VBA

Det finns en VBA-kod som kan hjälpa dig att slå samman de dubbla raderna och sedan summera ytterligare kolumnvärden.

Tabbad surfning och redigering av flera Excel-arbetsböcker / Word-dokument som Firefox, Chrome, Internet Explore 10!

Du kanske är bekant att visa flera webbsidor i Firefox / Chrome / IE och växla mellan dem genom att enkelt klicka på motsvarande flikar. Här stöder Office Tab liknande bearbetning, som låter dig bläddra i flera Excel-arbetsböcker eller Word-dokument i ett Excel-fönster eller Word-fönster och enkelt växla mellan dem genom att klicka på deras flikar. Klicka gratis 30-dagars provversion av Office Tab!

eller excel

1. Tryck F11 + Alt för att aktivera Microsoft Visual Basic för applikationer och klicka sedan på Insert > Modulerna och kopiera och klistra in under VBA-koden till den nya Modulerna fönster.

VBA: Sammanfoga rader baserat på ett kolumnvärde

Sub MG30Nov12()
'Updateby20150519
Dim Rng As Range
Dim InputRng As Range
Dim nRng As Range
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)
Set InputRng = InputRng.Parent.Range(InputRng.Columns(1).Address)
With CreateObject("scripting.dictionary")
.CompareMode = vbTextCompare
For Each Rng In InputRng
    If Not .Exists(Rng.Value) Then
        .Add Rng.Value, Rng.Offset(, 1)
    Else
        .Item(Rng.Value).Value = .Item(Rng.Value).Value + Rng.Offset(, 1)
            If nRng Is Nothing Then
                Set nRng = Rng
            Else
                Set nRng = Union(nRng, Rng)
            End If
    End If
Next
If Not nRng Is Nothing Then
    nRng.EntireRow.Delete
End If
End With
End Sub

2. Tryck F5 eller klicka Körning knappen för att köra VBA, och en dialogruta dyker upp för att välja ett dataintervall som ska fungera. se skärmdump:

doc sammanfoga kolumner baserat på en kolumn 3

3. När du har valt ett arbetsområde klickar du på OK. Nu har data slogs samman med första kolumnen och summerat värdena i andra kolumnen.

doc sammanfoga kolumner baserat på en kolumn 4

Anmärkningar: Den här VBA-koden kan bara fungera korrekt när den slås samman baserat på den första kolumnen och summan i den andra kolumnen.


pil blå höger bubbla Sammanfoga rader baserat på en kolumn och summera värden med Advanced Combine Rows

Om du inte känner till VBA-koden kan du använda Avancerade kombinera rader funktion i tilläggsverktyget för tredje delen - Kutools för Excel för att enkelt och snabbt slå ihop dubbletteraderna och summera värdena i en annan kolumn.

Efter gratis installation Kutools för Excel, gör så här:

1. Välj de data du vill använda och klicka på Kutools > Slå ihop och dela > Avancerade kombinera rader. Se skärmdump:

doc avancerad kombinera rad 1

2. Välj sedan kolumnen som du kommer att slå samman andra kolumner i poppdialogen och klicka sedan på Primära Nyckel och klicka på en annan kolumn och klicka Beräkna Välj sedan Sum.

Tips: Om ditt valda intervall har rubriker, kontrollera Mina data har rubriker, och kolla Använd formaterade värden behåller formateringen efter sammanslagningen.

doc sammanfoga kolumner baserat på en kolumn 6

3. Klicka sedan Ok. Nu har data sammanfogats baserat på den primära kolumnen, och en annan summeras. Se skärmdump:

doc sammanfoga kolumner baserat på en kolumn 7


pil blå höger bubbla Slå ihop rader baserat på en kolumn och gör sedan olika åtgärder på andra kolumner med Advanced Combine Rows.

Avancerade kombinera rader är kraftfullt, eftersom det inte bara kan slå samman dubbla rader i en kolumn och sedan summera en annan kolumn utan också kan slå samman dubbla rader i en kolumn och sedan göra olika åtgärder på andra kolumner.

Antag att jag har en rad data som visas nedan i skärmdumpen, och jag vill både kombinera värden i kolumn B och summera värden i kolumn C baserat på kolumn A.
doc sammanfoga kolumner baserat på en kolumn 8

Efter gratis installation Kutools för Excel, gör så här:

1. Välj dataintervall och klicka Kutools > Slå ihop och dela > Avancerade kombinera rader. Se skärmdump:

doc avancerad kombinera rad 1

2. I Kombinera rader baserat på kolumn dialog gör så här:

(1) Klicka på den kolumn du vill kombinera baserat på och klicka Primärnyckel;

doc sammanfoga kolumner baserat på en kolumn 10

(2) Klicka på den kolumn du vill kombinera data och klicka på Kombinera, välj sedan en separator du behöver från listan;

doc sammanfoga kolumner baserat på en kolumn 11

(3) Klicka på den kolumn du vill summera värdena och klicka Beräkna, och välj Sum.

doc sammanfoga kolumner baserat på en kolumn 12

3. klick Ok. Nu kan du se resultatet enligt nedan:

doc sammanfoga kolumner baserat på en kolumn 13

Med Avancerade kombinera rader funktionen kan du också slå samman rader baserat på en kolumn och sedan räkna, genomsnitt, behålla första eller sista data i andra kolumner. 

Bästa kontorsproduktivitetsverktyg

Populära funktioner: Hitta, markera eller identifiera dubbletter   |  Ta bort tomma rader   |  Kombinera kolumner eller celler utan att förlora data   |   Rund utan formel ...
Superuppslag: Flera kriterier VLookup    VLookup med flera värden  |   VSök över flera ark   |   Fuzzy Lookup ....
Avancerad rullgardinslista: Skapa snabbt en rullgardinslista   |  Beroende rullgardinslista   |  Flervals-rullgardinslista ....
Kolumnhanterare: Lägg till ett specifikt antal kolumner  |  Flytta kolumner  |  Växla synlighetsstatus för dolda kolumner  |  Jämför intervall och kolumner ...
Utvalda funktioner: Rutnätsfokus   |  Designvy   |   Stor formelbar    Arbetsbok & Bladhanterare   |  Resursbibliotek (Automatisk text)   |  Datumväljare   |  Kombinera arbetsblad   |  Kryptera/Dekryptera celler    Skicka e-postmeddelanden efter lista   |  Superfilter   |   Specialfilter (filtrera fet/kursiv/genomstruken...) ...
Topp 15 verktygssatser12 text verktyg (lägga till text, Ta bort tecken, ...)   |   50 + Diagram Typer (Gantt Chart, ...)   |   40+ Praktiskt Formler (Beräkna ålder baserat på födelsedag, ...)   |   19 Införande verktyg (Infoga QR-kod, Infoga bild från sökväg, ...)   |   12 Konvertering verktyg (Siffror till ord, Valutaväxling, ...)   |   7 Slå ihop och dela verktyg (Avancerade kombinera rader, Dela celler, ...)   |   ... och mer

Uppgradera dina Excel-färdigheter med Kutools för Excel och upplev effektivitet som aldrig förr. Kutools för Excel erbjuder över 300 avancerade funktioner för att öka produktiviteten och spara tid.  Klicka här för att få den funktion du behöver mest...

kte-flik 201905


Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
Comments (3)
No ratings yet. Be the first to rate!
This comment was minimized by the moderator on the site
I have the same/similar question. I am trying to sum all of the columns to the right of the reference cell but it only sums the one. How do I get it to sum all those to the right individually?
This comment was minimized by the moderator on the site
Hey, your module used to work for big tables as well (eg. you want to sum up according to Year but you have Sales 1, Sales 2, Sales 3....etc). But now it only gets the first column right (Sales 1) and all others are not summed correctly. Did you change anything?
Thanks!
This comment was minimized by the moderator on the site
Hi, IK, maybe you can use the sumproduct function SUMPRODUCT((A2:A10=”Pen”)*(B2:E10)) to calculate them one by one. A2:A10 is the range contain the lookup value, pen is the criterion, B2:E10 is range that you want to sum based on criterion.
There are no comments posted here yet
Please leave your comments in English
Posting as Guest
×
Rate this post:
0   Characters
Suggested Locations