# Lagerhantering i Google Kalkylark

> Så sköter du lagret i Google Kalkylark med en liggare över lagerrörelser, fungerande formler, varningar för lågt lager, skydd och historik samt gränserna att planera för.

Source: https://www.lightinventory.com/sv/guider/lagerhantering-google-kalkylark · Last updated: 2026-10-28

Du kan sköta ett pålitligt lager i Google Kalkylark om du aldrig skriver över ett lagersaldo. Registrera varje inleverans, uttag, justering och överföring som en ny rad i en liggare över lagerrörelser, och låt formler räkna ut vad som finns i lager. Det enda designvalet ger dig lagersaldo per plats, varningar för lågt lager och en historik du kan läsa, allt med inbyggda funktioner.

Den här guiden går igenom kalkylarkets upplägg, formlerna, datavalidering, skydd, historik och de gränser i Google Kalkylark som spelar roll. Den avslutas med en ärlig genomgång av var Kalkylark ensamt inte längre räcker.

## Lägg upp kalkylarket

Använd ett kalkylark med tre flikar. Varje flik har en uppgift.

| Flik | En rad är | Du redigerar den när |
|---|---|---|
| `Items` | En produkt eller del | Du lägger till en artikel eller ändrar dess uppgifter |
| `Locations` | Ett lager, ett rum, en hylla eller en bil | Du lägger till eller byter namn på en plats |
| `Movements` | En förändring av lagret | Något kommer in, går ut eller flyttas |

### Items

| Kolumn | Rubrik | Exempel | Anmärkning |
|---|---|---|---|
| A | SKU | `BOLT-M8-40` | Unik, återanvänds aldrig. Formatera kolumnen som oformaterad text |
| B | Namn | Sexkantsskruv M8 × 40 mm | |
| C | Enhet | låda | Enheten som varje lagerrörelse använder |
| D | Beställningspunkt | 20 | När lagersaldot når den här nivån beställer du |
| E | I lager | *(formel)* | Skrivs aldrig in för hand |
| F | Status | *(formel)* | `Reorder` eller `OK` |

### Locations

| Kolumn | Rubrik | Exempel |
|---|---|---|
| A | Plats | `WH1` |
| B | Namn | Huvudlager |

### Movements: liggaren

| Kolumn | Rubrik | Exempel | Anmärkning |
|---|---|---|---|
| A | Datum | 2026-10-28 | Ett riktigt datumvärde, inte text |
| B | SKU | `BOLT-M8-40` | Rullgardinsmeny från `Items` |
| C | Plats | `WH1` | Rullgardinsmeny från `Locations` |
| D | Antal | `-5` | Positivt ökar lagret, negativt minskar det |
| E | Typ | `Issue` | `Receive`, `Issue`, `Adjust` eller `Transfer` |
| F | Referens | PO-1042 | Inköpsorder, jobb eller inventeringslista |
| G | Registrerad av | Sam | Vem som registrerade raden |
| H | Anteckning | Skadad under transport | Varför, när det inte är självklart |

En överföring är två rader: `-5` på platsen den kommer från och `+5` på platsen den går till, båda med typen `Transfer` och samma referens. En inventering som visar 3 färre än väntat blir en `Adjust`-rad med `-3`.

### Därför slår en liggare där rader bara läggs till en kolumn med antal

Det vanligaste lagerkalkylarket har en enda kolumn med antal som folk skriver över. Det fungerar tills något går fel, och då kan det inte berätta vad som hände.

- **En överskriven siffra saknar historia.** Om 40 blir 25 säger kalkylarket inte om 15 såldes, försvann eller räknades fel. En rad i liggaren säger `-15`, `Issue`, `JOB-311`, med datum och namn.
- **Två personer kan inte säkert ändra samma siffra.** Om två personer tar 5 lådor var och båda skriver över 40 med 35 förlorar du en lagerrörelse. Två tillagda rader med `-5` summeras korrekt.
- **Misstag rättas genom att lägga till, inte radera.** En felaktig rad rättas med en motsatt rad, så både misstaget och rättelsen förblir synliga.
- **Lagret på valfritt datum är bara en formel bort.** Summera lagerrörelserna fram till det datumet.
- **Lagersaldo per plats får du på köpet.** Samma rader ger summor per artikel, per plats eller båda.

Regeln för alla som använder kalkylarket är enkel: lägg till rader i `Movements`, och ändra eller radera aldrig gamla rader.

## Formler för lagersaldo

Alla formler nedan förutsätter upplägget med flikar och kolumner ovan, med rubriker på rad 1.

> **Note:** Formlerna skiljer argument åt med kommatecken. Om ditt kalkylark använder en språkinställning med decimalkomma, till exempel Sverige, förväntar sig Google Kalkylark semikolon: byt kommatecknen mellan argument (inte i text inom citattecken) mot `;`.

### Lagersaldo per artikel

I `Items!E2`, och fyll sedan nedåt:

```
=SUMIFS(Movements!$D:$D, Movements!$B:$B, $A2)
```

[SUMIFS](https://support.google.com/docs/answer/3238496?hl=sv) summerar varje värde i kolumnen Antal i liggaren vars SKU matchar artikeln på den raden.

Om du i stället vill fylla hela kolumnen med en enda formel lägger du den här i `Items!E2` och lämnar cellerna under tomma:

```
=ARRAYFORMULA(IF(A2:A="", "", SUMIF(Movements!B:B, A2:A, Movements!D:D)))
```

### Lagersaldo per artikel och plats

För en artikel på en plats, till exempel platsen som står i cell `H1` på `Items`:

```
=SUMIFS(Movements!$D:$D, Movements!$B:$B, $A2, Movements!$C:$C, $H$1)
```

För en fullständig lagertabell på en egen flik använder du [QUERY](https://support.google.com/docs/answer/3093343?hl=sv). Den här listar varje kombination av artikel och plats som har lagerrörelser:

```
=QUERY(Movements!A1:H, "select B, C, sum(D) where B is not null group by B, C label sum(D) 'On hand'", 1)
```

Den här gör platserna till kolumner, med en rad per artikel:

```
=QUERY(Movements!A1:H, "select B, sum(D) where B is not null group by B pivot C", 1)
```

> **Note:** QUERY förväntar sig en datatyp per kolumn. Enligt Googles dokumentation avgör den vanligaste datatypen i en kolumn med blandade typer kolumnens datatyp, och övriga värden behandlas som tomma. Håll SKU:er som oformaterad text och datum som riktiga datum.

### Lagret på ett tidigare datum

För att se vad som fanns i lager vid slutet av en viss dag, till exempel datumet i `Items!H2`:

```
=SUMIFS(Movements!$D:$D, Movements!$B:$B, $A2, Movements!$A:$A, "<="&$H$2)
```

### Fånga negativt lager

En plats kan inte ha mindre än noll. Den här listar varje kombination av artikel och plats under noll, vilket oftast betyder en saknad inleverans eller ett skrivfel:

```
=QUERY(QUERY(Movements!A1:H, "select B, C, sum(D) where B is not null group by B, C", 1), "select * where Col3 < 0", 1)
```

Den inre QUERY-formeln bygger summorna per plats; den yttre behåller bara de negativa raderna. Ett tomt resultat betyder att ingen plats ligger under noll.

## Varningar för lågt lager och beställningspunkter

### En statuskolumn

I `Items!F2`, och fyll sedan nedåt:

```
=IF(D2="", "", IF(E2<=D2, "Reorder", "OK"))
```

Statusen är tom när ingen beställningspunkt är angiven, så nya artiklar ger inget falskt larm.

### Markera raderna som behöver beställas

1. Markera `A2:F` på fliken `Items`.
2. Klicka på **Format → Villkorsstyrd formatering**.
3. Under **Formatera celler om** väljer du **Anpassad formel är**.
4. Ange `=AND($D2<>"", $E2<=$D2)`.
5. Välj en fyllningsfärg och klicka på **Klar**.

Dollartecknen håller kolumnerna fasta medan raden ändras, så hela raden byter färg. Google påpekar att formler för villkorsstyrd formatering [bara kan referera till samma arbetsblad](https://support.google.com/docs/answer/78413?hl=sv) om du inte använder `INDIRECT`. Därför ligger lagersaldot och beställningspunkten bredvid varandra på fliken `Items`.

Du kan använda samma funktion för att flagga rader i liggaren där tecknet inte stämmer med typen. Markera `A2:H` på `Movements` och använd:

```
=OR(AND($E2="Receive", $D2<0), AND($E2="Issue", $D2>0))
```

### Grunderna för beställningspunkter

En beställningspunkt besvarar en fråga: hur lågt kan lagret gå innan du måste beställa, så att den nya leveransen kommer innan det tar slut? Grundformeln är:

**Beställningspunkt = genomsnittlig förbrukning per dag × ledtid i dagar + säkerhetslager**

- **Genomsnittlig förbrukning per dag** får du från din liggare.
- **Ledtid** är antalet dagar från beställning till att varorna står på hyllan.
- **Säkerhetslager** är bufferten för försenade leveranser eller intensiva veckor.

Lägg till tre hjälpkolumner i `Items`: G ”Snittförbrukning per dag (30 dagar)”, H ”Ledtid (dagar)” och I ”Säkerhetslager”. I `G2`:

```
=-SUMIFS(Movements!$D:$D, Movements!$B:$B, $A2, Movements!$E:$E, "Issue", Movements!$A:$A, ">="&(TODAY()-30))/30
```

Minustecknet gör om de negativa `Issue`-antalen till en positiv förbrukningstakt. Ange sedan beställningspunkten i `D2`:

```
=ROUNDUP(G2*H2 + I2, 0)
```

Ett exempel: en artikel som förbrukas med 4 lådor per dag, med 5 dagars ledtid och 10 lådor i säkerhetslager, har beställningspunkten 4 × 5 + 10 = 30. Se över ledtider och säkerhetslager när leverantörer eller säsonger ändras; formeln är aldrig bättre än de två värdena.

## Datavalidering och rullgardinsmenyer

Rullgardinsmenyer stoppar de skrivfel som får SUMIFS och QUERY att gå sönder: en SKU med ett avslutande mellanslag eller en plats som skrivs på två sätt matchar aldrig.

### Lägg till en rullgardinsmeny från ett intervall

1. Markera `B2:B` på `Movements`.
2. Klicka på **Data → Datavalidering → Lägg till regel**.
3. Under **Kriterier** väljer du **Rullgardinsmeny i ett intervall** och anger `Items!A2:A`.
4. Klicka på **Klar**.

Upprepa för `C2:C` med `Locations!A2:A`. För `E2:E` väljer du **Rullgardinsmeny** och lägger till alternativen `Receive`, `Issue`, `Adjust` och `Transfer`. Google erbjuder också **Infoga → Rullgardinsmeny** och alternativet **Rullgardinsmeny** när du högerklickar; alla öppnar samma [panel för datavalideringsregler](https://support.google.com/docs/answer/186103?hl=sv).

### Avvisa eller varna

Som standard avvisar Google Kalkylark en inmatning som inte matchar listan. Om du i stället vill tillåta den med en varning öppnar du **Avancerade alternativ** och väljer **Visa en varning** under **Om data är ogiltig**. För en lagerliggare bör du behålla avvisningen: en lagerrörelse mot en okänd SKU är nästan alltid ett misstag.

Lägg också till en valideringsregel på `D2:D` som bara godtar tal, och på `A2:A` som bara godtar datum. Ett antal som har skrivits in som text ignoreras av SUMIFS, så lagret blir fel utan att det märks.

## Skydda intervall och dela med omsorg

Behörigheterna i Google Kalkylark har två nivåer, och båda spelar roll.

1. **Delning** avgör vem som kan öppna filen och om personen är läsbehörig, kommentator eller redigerare. Du ställer in det med **Dela**, och det gäller hela filen.
2. **Skyddade arbetsblad och intervall** begränsar vad redigerare kan ändra i filen.

### Skydda det som ingen ska skriva i

1. Klicka på **Data → Skydda arbetsblad och intervall**.
2. Klicka på **Lägg till ett arbetsblad eller intervall**.
3. Välj **Intervall** och markera `Items!E2:F` (formelkolumnerna).
4. Klicka på **Ange behörigheter**.
5. Välj **Begränsa vem som kan redigera det här intervallet**, välj **Bara du** och klicka på **Klar**.

Skydda hela fliken `Locations` på samma sätt om listan sällan ändras. På `Movements` måste folk kunna lägga till rader, så ett strikt skydd passar inte. Använd i stället **Visa en varning när det här intervallet redigeras** på de befintliga raderna; då ombeds personer bekräfta innan de ändrar historiken.

Var medveten om vad skyddet inte gör. Google skriver att skydd [inte bör användas som en säkerhetsåtgärd](https://support.google.com/docs/answer/1218656?hl=sv) och att ”andra kan skriva ut, kopiera, klistra in samt importera och exportera kopior av ett skyddat kalkylark”. Ägaren kan alltid redigera ett skyddat intervall, och du kan inte skydda data med ett lösenord. Stegen i detalj finns i [Skydda ett arbetsblad eller intervall](/sv/hjalp/google-kalkylark/skydda-intervall).

### Dela med den snävaste rollen

- Ge **läsbehörighet** till personer som bara behöver slå upp lagersaldon.
- Ge **redigeringsbehörighet** bara till personer som registrerar lagerrörelser.
- I Googles delningsinställningar kan du hindra redigerare från att dela filen, enligt beskrivningen i [Dela filer från Google Drive](https://support.google.com/drive/answer/2494822?hl=sv).

## Versionshistorik och cellernas redigeringshistorik

Google Kalkylark sparar två slags historik: versioner av hela filen och redigeringshistoriken för en enskild cell. [Du kan inte se versionshistoriken](https://support.google.com/docs/answer/190843?hl=sv) utan behörighet att redigera filen.

### Versionshistorik

Om du vill se tidigare versioner klickar du på **Senaste ändring** högst upp till höger i kalkylarket. Välj en version i panelen till höger för att se vem som ändrade vad. Som standard döljer Google Kalkylark rader som inte har ändrats; klicka på **Visa rader som inte har ändrats** för att se allt.

Du kan återställa en version eller göra en kopia av den. När du återställer en version av ett kalkylark rensas cellernas redigeringshistorik för ändringar som gjorts före återställningen, så för en lagerfil med mycket aktivitet är en kopia oftast det säkrare valet. Läs [Återställ en tidigare version](/sv/hjalp/google-kalkylark/aterstall-version).

Du kan namnge upp till 15 versioner per kalkylark, och namngivna versioner slås inte samman. Namnge en efter varje inventering, till exempel ”Inventering 2026-10-31”, så att du alltid kan gå tillbaka till den.

### Cellernas redigeringshistorik

Högerklicka på en cell och välj **Visa redigeringshistorik** för att se vem som ändrade cellen. Google listar ändringar som kanske inte visas där:

- tillagda eller raderade rader och kolumner;
- ändringar av cellens format;
- ändringar som gjordes innan en tidigare version återställdes;
- ändringar som görs av formler.

Den sista punkten är viktig för ett formelstyrt kalkylark: cellerna i kolumnen I lager ändras via formler, så deras redigeringshistorik förklarar inte en ny siffra. Raderna i liggaren gör det. Mer information finns i [Ta reda på vem som ändrade en cell](/sv/hjalp/google-kalkylark/vem-andrade-en-cell).

### Aviseringar om ändringar

Klicka på **Verktyg → Aviseringsinställningar → Redigera aviseringar** för att få ett mejl när andra ändrar kalkylarket, antingen direkt eller som en daglig sammanfattning. Google påpekar att [du bara kan ställa in aviseringar åt dig själv](https://support.google.com/docs/answer/91588?hl=sv).

## Gränser i Google Kalkylark att planera för

Det här är gränserna som Google dokumenterar, kontrollerade 2026-10-28. Den fullständiga listan, med vad du gör nära varje gräns, finns i [Gränser i Google Kalkylark för lagerhantering](/sv/hjalp/google-kalkylark/granser).

| Gräns | Vad Google dokumenterar |
|---|---|
| Celler per kalkylark | Upp till 20 miljoner celler eller 100 MB för kalkylark som skapats i eller konverterats till Google Kalkylark ([filgränser i Drive](https://support.google.com/drive/answer/37603?hl=sv)). Google höjde gränsen från 10 miljoner i september 2026 ([Workspace Updates](https://workspaceupdates.googleblog.com/2026/09/doubled-cell-limits-in-google-sheets-now-generally-available.html)) |
| Samtidig redigering | En Google-fil kan bara redigeras aktivt på upp till 100 öppna flikar eller enheter samtidigt ([delningsgränser](https://support.google.com/drive/answer/2494822?hl=sv)) |
| Delning | Upp till 600 enskilda e-postadresser per fil ([delningsgränser](https://support.google.com/drive/answer/2494822?hl=sv)) |
| Namngivna versioner | Upp till 15 per kalkylark ([versionshistorik](https://support.google.com/docs/answer/190843?hl=sv)) |
| IMPORTRANGE | Högst 10 MB mottagna data per begäran; söker efter uppdateringar varje timme medan dokumentet är öppet ([IMPORTRANGE](https://support.google.com/docs/answer/3093340?hl=sv)) |

En liggare växer med en rad per lagerrörelse. Med 8 kolumner ger 1 000 lagerrörelser i månaden 8 000 celler i månaden, vilket är ungefär 96 000 om året. De flesta små team når aldrig cellgränsen, men stora filer blir långsamma långt innan dess. Arkivera avslutade år i en separat fil och för över utgående saldo som en `Adjust`-rad per artikel och plats.

## När Kalkylark ensamt inte längre räcker

Upplägget ovan fungerar bra för några få noggranna personer. När teamet växer börjar de här luckorna kosta tid eller pengar.

- **Samtidiga ändringar.** Google Kalkylark visar ändringar i realtid, men ingenting hindrar två personer från att ändra samma rad, eller någon från att sortera liggaren medan en annan person skriver. Ingenting kontrollerar en ändring innan den sparas.
- **Inga godkännanden.** Vilken redigerare som helst kan registrera en justering på 500 enheter eller ändra en beställningspunkt. Det finns inget steg där en andra person granskar den först.
- **Historik som är svår att granska.** Versionshistoriken är grupperad och [versioner kan ibland slås samman](https://support.google.com/docs/answer/190843?hl=sv). Cellernas redigeringshistorik hoppar över formelresultat, infogade och raderade rader och formatändringar, och en återställning rensar den. Ägaren till en fil i ett personligt Google-konto kan permanent radera filens versioner som inte har namngetts. Ingenting bevisar att historiken du ser är fullständig.
- **Oavsiktliga överskrivningar.** En inklistring över fel intervall eller en ”fyll nedåt” för långt ändrar hundratals rader i liggaren på en gång. Versionshistoriken kan återställa det, om någon märker det.
- **Behörigheterna gäller på filnivå.** En redigerare kan redigera varje flik och varje plats om du inte bygger upp skydd för hand, och skydd är inte en säkerhetsåtgärd enligt Googles egen beskrivning. Du kan inte säga ”den här personen registrerar lagerrörelser bara för norra lagret”.
- **Reglerna finns i folks huvuden.** ”Ändra aldrig gamla rader” och ”ange alltid en referens” är överenskommelser. Kalkylarket upprätthåller dem inte.

Om det här låter bekant har du tre alternativ: acceptera risken, byta till ett separat lagersystem eller behålla kalkylarket och lägga till kontroll ovanpå det.

## Så lägger LightInventory till kontroll i samma kalkylark

LightInventory är en lagerapp byggd ovanpå ett Google Kalkylark som du äger. Den är under utveckling och ännu inte allmänt tillgänglig. Den använder samma upplägg med en liggare som den här guiden, och appen upprätthåller reglerna ovan i stället för att lämna dem åt överenskommelser.

- **Dina data stannar i ditt kalkylark.** Artiklar, platser, lagerrörelser och ändringsloggen är flikar i ditt eget kalkylark. Om du slutar använda LightInventory behåller du filen.
- **Varje ändring registreras.** Varje ändring skrivs till en `Log`-flik med vem som gjorde den, när, värdet före och värdet efter. Misstag rättas med en kompenserande post, aldrig genom att historik raderas.
- **Historik där manipulation upptäcks.** En nyckelbaserad hashkedja över loggen, utan dina värden, sparas utanför din fil och förankras externt, så en loggrad som har ändrats eller raderats i tysthet underkänns vid verifieringen. Läs mer om [ändringshistoriken](/sv/funktioner/andringshistorik).
- **Godkännanden.** Du väljer vilka ändringar som kräver godkännande, till exempel prisändringar. Granskaren kan inte vara samma person som begärde ändringen.
- **Roller.** Ägare, administratör, godkännare, redigerare och läsare, med valfri begränsning till vissa platser för redigerare och läsare. Teammedlemmar arbetar i appen och läggs inte till i filen om inte ägaren ger dem direkt redigeringsåtkomst.
- **Upptäckt av direkta ändringar.** Om någon redigerar kalkylarket direkt upptäcker LightInventory ändringen och hanterar den enligt din policy: blockera den tills en ägare godtar eller återställer den, logga den automatiskt eller skicka den för godkännande.

Det finns en Free-plan för 1 användare och 1 kalkylark. Team kostar 2,99 € per användare och månad vid månadsvis fakturering, eller 2,49 € vid årsvis fakturering, exklusive skatt. Mer information finns under [priser](/sv/priser), och hur dina data och din åtkomst hanteras beskrivs under [säkerhet](/sv/sakerhet).
