Din försäljningsdata ligger ”i arket”, men dina lagerbeslut känns fortfarande som gissningar. Ena dagen överbeställer du trögrörliga artiklar, nästa dag får du panik för att en topp-SKU i tysthet tog slut. Det värsta är rapporteringsritualen: filter, pivoter, copy-paste och en gnagande oro att en enda fel formel just ändrade hela bilden.
Lagerchefer känner det när servicenivåerna faller. Demand planners fastnar i att försvara siffror i stället för att förbättra dem. Och om du driver driften för ett mindre varumärke är det du som kör ABC Pareto-automatisering kl. 21 eftersom det ”bara borde ta en minut”.
Det här n8n-flödet förvandlar råa transaktionsrader i Google Sheets till felfria ABC/XYZ-klassningar och Pareto-flikar, plus sammanställningar per butik. Du får se vad det producerar, vad det ersätter och hur du sätter upp det utan att bo i kalkylark.
Så fungerar automatiseringen
Hela n8n-flödet, från trigger till slutligt resultat:
n8n Workflow Template: Google Sheets + Excel: ABC- och paretorapporter klara
flowchart LR
subgraph sg0["When clicking ‘Execute workflow’ Flow"]
direction LR
n0@{ icon: "mdi:play-circle", form: "rounded", label: "When clicking ‘Execute workf..", pos: "b", h: 48 }
n1@{ icon: "mdi:database", form: "rounded", label: "Get row(s) in sheet", pos: "b", h: 48 }
n2@{ icon: "mdi:swap-horizontal", form: "rounded", label: "Filter Out Zero Sales", pos: "b", h: 48 }
n3["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Transpose"]
n4["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Daily Sales per Store"]
n5@{ icon: "mdi:swap-horizontal", form: "rounded", label: "If", pos: "b", h: 48 }
n6@{ icon: "mdi:database", form: "rounded", label: "Sales Store 1", pos: "b", h: 48 }
n7@{ icon: "mdi:database", form: "rounded", label: "Sales Store 2", pos: "b", h: 48 }
n8["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Pareto Analysis"]
n9["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>TO, QTY GroupBy ITEM"]
n10["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>TO GroupBy (STORE, ITEM)"]
n11@{ icon: "mdi:database", form: "rounded", label: "Multi-Store Sales", pos: "b", h: 48 }
n12["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>Demand Variability x Sales %"]
n13@{ icon: "mdi:database", form: "rounded", label: "ABC XYZ Analysis", pos: "b", h: 48 }
n14@{ icon: "mdi:database", form: "rounded", label: "Update Pareto Sheet", pos: "b", h: 48 }
n15["<div style='background:#f5f5f5;padding:10px;border-radius:8px;display:inline-block;border:1px solid #e0e0e0'><img src='https://flowpast.com/wp-content/uploads/n8n-workflow-icons/code.svg' width='40' height='40' /></div><br/>ABC Class Mapping"]
n5 --> n6
n5 --> n7
n3 --> n11
n8 --> n14
n15 --> n13
n1 --> n2
n9 --> n8
n4 --> n5
n2 --> n12
n2 --> n9
n2 --> n10
n2 --> n4
n10 --> n3
n12 --> n15
n0 --> n1
end
%% Styling
classDef trigger fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
classDef ai fill:#e3f2fd,stroke:#1976d2,stroke-width:2px
classDef aiModel fill:#e8eaf6,stroke:#3f51b5,stroke-width:2px
classDef decision fill:#fff8e1,stroke:#f9a825,stroke-width:2px
classDef database fill:#fce4ec,stroke:#c2185b,stroke-width:2px
classDef api fill:#fff3e0,stroke:#e65100,stroke-width:2px
classDef code fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
classDef disabled stroke-dasharray: 5 5,opacity: 0.5
class n0 trigger
class n2,n5 decision
class n1,n6,n7,n11,n13,n14 database
class n3,n4,n8,n9,n10,n12,n15 code
classDef customIcon fill:none,stroke:none
class n3,n4,n8,n9,n10,n12,n15 customIcon
Problemet: ABC- och Pareto-rapportering blir kalkylarksbrandkårsutryckningar
ABC- och Pareto-analys är enkel i teorin: gruppera försäljning per artikel, sortera efter bidrag, beräkna kumulativ andel och märk sedan A/B/C. I praktiken drar du in dagliga rader, städar konstiga nollor, bygger om pivoter för varje butik och dubbelkollar formler efter varje ny kolumn någon lägger till. Det är repetitivt, men också skört. En enda felaktigt sorterad range eller ett trasigt filter kan i det tysta omklassificera artiklar, vilket leder till dåliga påfyllnadsbeslut och obekväma möten.
Friktionen byggs på. Du ”tappar” inte bara tid. Du tappar förtroende för siffrorna, vilket gör att du tvekar att agera på dem.
- Veckovisa ABC-uppdateringar tar ofta runt 2 timmar eftersom aggregering, sortering och kontroll görs manuellt.
- Rader med nollförsäljning slinker in och förvränger variationsmått, så berättelsen om ”stabilt vs volatilt” blir brusig.
- Rapportering för flera butiker blir dubbelarbete eftersom varje butiksvy behöver egna pivoter och flikar.
- Små kalkylarksfel växer till fel prioriteringar, särskilt när du hanterar hundratals SKU:er.
Lösningen: Google Sheets-data in, ABC/XYZ + Pareto-flikar ut
Det här flödet startar med dina transaktionsrader för försäljning i Google Sheets (datum, artikel, antal, omsättning). Det hämtar raderna till n8n, filtrerar bort poster med nollförsäljning och aggregerar sedan försäljning och omsättning på ett konsekvent sätt så att matematiken alltid blir densamma. Därifrån beräknar det Pareto-mått (inklusive kumulativ omsättningsandel) och tilldelar ABC-klasser utifrån tröskelvärden, vilket ger dig en direkt användbar segmentering. Parallellt beräknar det efterfrågevariation som medelvärde, standardavvikelse och variationskoefficient (CV) för att stödja XYZ-klassning. Till sist skriver det tillbaka allt till strukturerade output-flikar i Google Sheets, inklusive sammanställningar per butik som är redo att delas.
Flödet startas manuellt när du vill uppdatera. Efter att datan har rensats körs analysen i två huvudspår: ABC/XYZ-klassning och Pareto-rapportering. Det tar även fram butiksvisa försäljningssammanfattningar, så att du kan jämföra prestation per plats utan att bygga om en matris i Excel.
Vad du får: automatisering vs resultat
| Vad det här flödet automatiserar | Resultat du får |
|---|---|
|
|
Exempel: så här ser det ut
Säg att du har 1 000 försäljningsrader per vecka över 2 butiker och att du uppdaterar rapporter varje måndag. Manuellt är en typisk rutin cirka 30 minuter för att rensa och filtrera, ytterligare 45 minuter för att bygga om artikeltotaler och Pareto, och sedan cirka 45 minuter till för att skapa butikssammanställningar och rimlighetskontrollera formler (ungefär 2 timmar). Med det här flödet kör du den manuella triggern, låter n8n bearbeta och skriva flikarna och är oftast klar efter en snabb genomgång (ofta 15 minuter av din uppmärksamhet). Det är nära 1,5 timme tillbaka varje vecka, och resultatet är mer konsekvent.
Det här behöver du
- n8n-instans (prova n8n Cloud gratis)
- Alternativ för egen hosting om du föredrar det (Hostinger fungerar bra)
- Google Sheets för dina råa försäljningstransaktioner och utdata.
- Microsoft Excel 365 för att skapa valfria Excel-kopior av rapporter.
- Google Sheets OAuth-åtkomst (anslut via n8n:s credential-skärm).
Kunskapsnivå: Medel. Du kopplar konton, klistrar in ditt Sheet-ID och är bekväm med att kontrollera att kolumnerna matchar (datum, artikel, antal, omsättning).
Vill du inte sätta upp detta själv? Prata med en automatiseringsexpert (gratis 15-minuters konsultation).
Så fungerar det
En manuell uppdatering triggar körningen. Du startar den när du vill ha uppdaterade klassningar, vanligtvis veckovis eller efter en större kampanjperiod. Det gör flödet förutsägbart och undviker oavsiktliga omkörningar medan du fortfarande laddar in data.
Rader från Google Sheets hämtas och rensas. n8n hämtar dina transaktionsrader och filtrerar bort artiklar med nollförsäljning, så att senare beräkningar inte snedvrids av död data eller platshållarrader.
Analysen beräknas parallellt. Ett spår beräknar efterfrågevariation (medelvärde, standardavvikelse, CV) och tilldelar sedan ABC-klasser med hjälp av kumulativ omsättningsandel. Ett annat spår aggregerar omsättning och antal per artikel, beräknar Pareto-mått och förbereder en tydlig Pareto-flik.
Utdata skrivs tillbaka till rapportflikar. Du får dedikerade Google Sheets-utdata för ABC/XYZ, Pareto och butiksvyer för försäljning, inklusive en transponerad matris för analys över flera butiker och separata append-flöden för varje butik.
Du kan enkelt ändra ABC-trösklarna så att de matchar dina kategoriregler utifrån dina behov. Se hela implementationsguiden nedan för anpassningsalternativ.
Steg-för-steg-guide för implementering
Steg 1: Konfigurera den manuella triggern
Det här arbetsflödet startar vid behov så att ni kan validera analysflödet innan ni schemalägger det.
- Lägg till och öppna Manual Start Trigger.
- Låt standardinställningarna vara kvar för att behålla den som en manuell körningstrigger.
- Bekräfta att kopplingen från Manual Start Trigger till Retrieve Sheet Rows finns på plats.
Steg 2: Anslut Google Sheets
Konfigurera Google Sheets-datakällan och alla bladutdata som används i hela pipelinen.
- Öppna Retrieve Sheet Rows och ställ in Document till
Data Analyticsoch Sheet tillInput Data(gid=0). - Inloggningsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-uppgifter i Retrieve Sheet Rows. - Öppna utdatablocken Record ABC XYZ Output, Append Pareto Sheet, Write Multi-Store Sales, Append Store One Sales och Append Store Two Sales och välj samma
Data Analytics-dokument och respektive blad (t.ex.ABC XYZ,Pareto,Daily Sales Store 1,Daily Sales Store 2). - Inloggningsuppgifter krävs: Anslut era
googleSheetsOAuth2Api-uppgifter på var och en av dessa Google Sheets-noder.
ABC XYZ eller Pareto), uppdatera dem i varje Google Sheets-nod för att undvika tysta fel vid append.Steg 3: Konfigurera filtrering och parallell analysbearbetning
Filtrera bort rader med noll i försäljning och kör fyra analysgrenar parallellt.
- Öppna Exclude Zero Sales och verifiera att villkoret använder
{{ $json.QTY }}notEquals{{ 0 }}. - Bekräfta att Exclude Zero Sales skickar utdata till Demand Variance vs Sales, Aggregate TO & QTY by Item, Sum TO by Store Item och Summarize Daily Store Sales parallellt.
- Låt koden i Demand Variance vs Sales vara som den är för att beräkna CV och andelsmått per artikel.
- Låt koden i Aggregate TO & QTY by Item vara som den är för att aggregera omsättning och kvantitet per SKU.
- Låt koden i Sum TO by Store Item vara som den är för att skapa en butik-per-SKU-matris.
- Låt koden i Summarize Daily Store Sales vara som den är för att aggregera dagliga totaler per butik.
Steg 4: Konfigurera klassificering och matristransformeringar
Det här steget tilldelar ABC-klasser och förbereder Pareto-mått samt matrisomvandlingar för flera butiker.
- Verifiera att Demand Variance vs Sales går vidare till Assign ABC Classes, som tilldelar
A,B,Cbaserat på trösklar för kumulativ andel. - Bekräfta att Aggregate TO & QTY by Item går vidare till Compute Pareto Metrics för att beräkna kumulativ omsättning och SKU-rankning.
- Bekräfta att Sum TO by Store Item går vidare till Transpose Matrix för att pivota butik-/SKU-layouten.
- Kontrollera att Store Filter Logic använder
{{ $json.STORE }}equalsSTORE-1för att routa butiksspecifika rader.
STORE-1, uppdatera rätt värde i Store Filter Logic annars kommer butiksroutingen att felklassificera rader.Steg 5: Konfigurera utdataflikarna
Skriv analysutdata till rätt Google Sheets-flikar.
- I Record ABC XYZ Output, behåll kolumnmappningarna som använder uttryck som
{{ $json.ABC }},{{ $json.ITEM }}och{{ $json.share_qty_pct }}. - I Append Pareto Sheet, behåll mappningarna för
{{ $json.TO }},{{ $json.cum_share }}och{{ $json.cum_turnover }}. - I Write Multi-Store Sales, behåll Operation inställd på
appendoch mappa{{ $json.TO }},{{ $json.DAY }},{{ $json.QTY }}. - Bekräfta att Store Filter Logic skickar utdata till Append Store One Sales och Append Store Two Sales; varje nod lägger till
TO,DAYochQTYi respektive blad.
Steg 6: Testa och aktivera ert arbetsflöde
Kör ett manuellt test för att validera pipelinen och aktivera sedan när ni är redo.
- Klicka på Execute Workflow från Manual Start Trigger för att köra hela pipelinen.
- Verifiera lyckad körning genom att kontrollera flikarna
ABC XYZ,Pareto,Daily Sales Store 1ochDaily Sales Store 2efter nya rader. - Om alla blad uppdateras som förväntat, växla arbetsflödet till Active för användning i produktion.
Vanliga fallgropar
- Google Sheets-credentials kan löpa ut eller kräva specifika behörigheter. Om något slutar fungera, kontrollera först n8n-skärmen Credentials och bekräfta att det anslutna Google-kontot har åtkomst till det Sheet-ID:t.
- Om du använder Wait-noder eller extern rendering varierar processtiderna. Öka väntetiden om nedströmsnoder misslyckas på grund av tomma svar.
- Standardprompter i AI-noder är generiska. Lägg in din tonalitet tidigt, annars kommer du att redigera utdata för alltid.
Vanliga frågor
Cirka 30 minuter om ditt Google Sheet redan är strukturerat.
Nej. Du kopplar mestadels Google Sheets och bekräftar att dina kolumnnamn matchar flödets förväntningar.
Ja. n8n har ett gratis alternativ för egen hosting och en gratis provperiod på n8n Cloud. Cloud-planer börjar på 20 USD/månad för högre volym. Du behöver också räkna med eventuella kostnader för Google Workspace eller Microsoft 365 som du redan betalar för åtkomst till Sheets/Excel.
Två alternativ: n8n Cloud (hanterat, enklast att komma igång) eller egen hosting på en VPS. För egen hosting är Hostinger VPS prisvärd och hanterar n8n bra. Egen hosting ger dig obegränsat antal körningar men kräver grundläggande serverhantering.
Ja, och det är en vanlig justering. Du ändrar tröskellogiken i kodsteget Assign ABC Classes så att A/B/C-brytpunkterna matchar dina affärsregler (vissa team använder 70/20/10, andra håller sig till 80/15/5). Du kan också ändra grupperingsnivån, till exempel klassificera per butik-artikel i stället för global artikel, genom att justera aggregeringslogiken uppströms. Om du vill ha XYZ-kategorier också kan du mappa CV-intervall till X/Y/Z-etiketter direkt efter variationsberäkningen.
Oftast beror det på utgångna eller felaktiga Google Sheets-credentials i n8n, eller att det anslutna Google-kontot helt enkelt inte har åtkomst till arket. Återanslut credentialen och kontrollera sedan Sheet-ID:t och fliknamnen som används i noderna ”Retrieve Sheet Rows” och i output-noderna. Om det fortfarande inte fungerar, leta efter kvotbegränsningar i Google API eller ett kalkylark som har flyttats till en begränsad Drive-mapp.
De flesta mindre team kör detta utan problem på tiotusentals rader per körning, så länge din n8n-instans har tillräckligt med minne. På n8n Cloud är din praktiska gräns vanligtvis din månatliga körningskvot och hur lång tid varje körning tar. Om du kör egen hosting finns ingen körningsgräns, men prestandan beror på din server och hur tunga dina kodsteg är.
Ofta, ja, eftersom kärnan i det här flödet är datatransformationslogik, inte bara ”flytta rader från A till B”. n8n hanterar förgreningar, batchning, sammanslagningar och kodbaserade beräkningar på ett ställe, vilket är viktigt när du gör Pareto-matematik och variationsmått. Zapier och Make kan göra delar av det, men du kan behöva sy ihop flera scenarier och betala mer när volymerna växer. Om du redan använder kalkylark som din källa till sanning är n8n:s flexibilitet ofta skillnaden mellan ”funkar en gång” och ”kör varje vecka”. Om du vill ha hjälp att välja, prata med en automatiseringsexpert.
När detta väl rullar slutar dina ABC/XYZ- och Pareto-flikar att vara ett projekt och blir i stället en rutin. Flödet tar hand om de repetitiva delarna, så att du kan lägga tiden på att fatta smartare lagerbeslut.
Kontakta oss
Hör av dig, så diskuterar vi hur just din verksamhet kan dra nytta av alla fantastiska möjligheter som AI skapar.