# Lagerstyring i Google Regneark

> Slik fører du lager i Google Regneark med bevegelsesjournal, formler som virker, varsler om lav beholdning, beskyttelse og historikk, pluss grensene å planlegge for.

Source: https://www.lightinventory.com/nb/veiledninger/lagerstyring-google-regneark · Last updated: 2026-10-28

Du kan føre pålitelig lager i Google Regneark hvis du aldri skriver over et beholdningstall. Registrer hvert varemottak, hvert uttak, hver justering og hver overføring som en ny rad i en bevegelsesjournal, og la formler beregne hva du har på lager. Det ene designvalget gir deg beholdning per plassering, varsler om lav beholdning og en historikk du kan lese, alt med innebygde funksjoner.

Denne veiledningen går gjennom oppbygningen av regnearket, formlene, datavalidering, beskyttelse, historikk og grensene i Google Regneark som betyr noe. Den avslutter med en ærlig vurdering av hvor Regneark alene ikke lenger er nok.

## Bygg opp regnearket

Bruk ett regneark med tre faner. Hver fane har én oppgave.

| Fane | Én rad er | Du redigerer den når |
|---|---|---|
| `Items` | Ett produkt eller én del | Du legger til en vare eller endrer opplysningene om den |
| `Locations` | Ett lager, rom, hylle eller én varebil | Du legger til eller gir nytt navn til et sted |
| `Movements` | Én endring i beholdningen | Noe kommer inn, går ut eller flyttes |

### Items

| Kolonne | Overskrift | Eksempel | Merknader |
|---|---|---|---|
| A | SKU | `BOLT-M8-40` | Unik, gjenbrukes aldri. Formater kolonnen som ren tekst |
| B | Navn | Sekskantskrue M8 × 40 mm | |
| C | Enhet | eske | Enheten alle bevegelser bruker |
| D | Bestillingspunkt | 20 | Når beholdningen når dette nivået, bestiller du |
| E | Beholdning | *(formel)* | Skrives aldri inn for hånd |
| F | Status | *(formel)* | `Reorder` eller `OK` |

### Locations

| Kolonne | Overskrift | Eksempel |
|---|---|---|
| A | Plassering | `WH1` |
| B | Navn | Hovedlager |

### Movements: journalen

| Kolonne | Overskrift | Eksempel | Merknader |
|---|---|---|---|
| A | Dato | 28.10.2026 | En ekte datoverdi, ikke tekst |
| B | SKU | `BOLT-M8-40` | Rullegardinmeny fra `Items` |
| C | Plassering | `WH1` | Rullegardinmeny fra `Locations` |
| D | Antall | `-5` | Positivt tall legger til beholdning, negativt trekker fra |
| E | Type | `Issue` | `Receive`, `Issue`, `Adjust` eller `Transfer` |
| F | Referanse | PO-1042 | Innkjøpsordre, jobb eller telleliste |
| G | Registrert av | Kari | Hvem som registrerte den |
| H | Notat | Skadet under transport | Hvorfor, når det ikke er åpenbart |

En overføring er to rader: `-5` på plasseringen den flyttes fra og `+5` på plasseringen den flyttes til, begge med typen `Transfer` og samme referanse. En varetelling som finner 3 færre enn forventet, er én `Adjust`-rad med `-3`.

### Hvorfor en journal der rader bare legges til, slår en antallskolonne

Det vanligste lagerregnearket har én «Antall»-kolonne som folk skriver over. Det fungerer til noe går galt, og da kan det ikke fortelle deg hva som skjedde.

- **Et overskrevet tall har ingen historie.** Hvis 40 blir til 25, sier ikke regnearket om 15 ble solgt, mistet eller feiltelt. En journalrad sier `-15`, `Issue`, `JOB-311`, med dato og navn.
- **To personer kan ikke trygt redigere ett tall.** Hvis to personer tar 5 esker hver og begge skriver 35 over 40, mister du en bevegelse. To nye rader med `-5` summeres riktig.
- **Feil rettes ved å legge til, ikke ved å slette.** En feil rad rettes med en motsatt rad, så både feilen og rettelsen forblir synlige.
- **Beholdningen på en hvilken som helst dato er bare en formel unna.** Summer bevegelsene frem til den datoen.
- **Beholdning per plassering får du gratis.** De samme radene gir summer per vare, per plassering eller begge deler.

Regelen for alle som bruker regnearket, er enkel: legg til rader i `Movements`, og rediger eller slett aldri gamle rader.

## Formler for beholdning

Alle formlene nedenfor forutsetter fane- og kolonneoppsettet ovenfor, med overskrifter i rad 1.

> **Note:** Formlene skiller argumenter med komma. Hvis regnearket ditt bruker en lokal innstilling med desimalkomma, for eksempel Norge, forventer Google Regneark semikolon: bytt ut kommaene mellom argumentene (ikke i tekst i anførselstegn) med `;`.

### Beholdning per vare

I `Items!E2`, og fyll deretter nedover:

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

[SUMIFS](https://support.google.com/docs/answer/3238496?hl=no) summerer hvert antall i kolonne D i journalen der SKU-en samsvarer med varen på den raden.

For å fylle hele kolonnen med én enkelt formel setter du i stedet denne inn i `Items!E2` og lar cellene under være tomme:

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

### Beholdning per vare og plassering

For én vare på én plassering, for eksempel plasseringen som står i celle `H1` i `Items`:

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

For en fullstendig beholdningstabell på en egen fane bruker du [QUERY](https://support.google.com/docs/answer/3093343?hl=no). Denne viser hvert par av vare og plassering som har bevegelser:

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

Denne gjør plasseringene om til kolonner, med én rad per vare:

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

> **Note:** QUERY forventer én datatype per kolonne. Googles dokumentasjon sier at når en kolonne har blandede typer, «er det den datatypen som er i flertall, som avgjør datatypen for kolonnen», og de andre verdiene behandles som tomme. Hold SKU-er som ren tekst og datoer som ekte datoer.

### Beholdning på en tidligere dato

For å se hva som var på lager ved slutten av en bestemt dag, for eksempel datoen i `Items!H2`:

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

### Fang opp negativ beholdning

En plassering kan ikke ha mindre enn null. Denne viser hvert par av vare og plassering under null, noe som som regel betyr et manglende varemottak eller en skrivefeil:

```
=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 indre QUERY-en lager summene per plassering; den ytre beholder bare de negative radene. Et tomt resultat betyr at ingen plassering er under null.

## Varsler om lav beholdning og bestillingspunkter

### En statuskolonne

I `Items!F2`, og fyll deretter nedover:

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

Statusen er tom når det ikke er satt noe bestillingspunkt, så nye varer gir ikke falsk alarm.

### Fremhev radene som må bestilles på nytt

1. Marker `A2:F` på `Items`-fanen.
2. Klikk på **Format → Betinget formatering**.
3. Under **Formatér cellene hvis…** velger du **Den tilpassede formelen er**.
4. Skriv inn `=AND($D2<>"", $E2<=$D2)`.
5. Velg en fyllfarge og klikk på **Ferdig**.

Dollartegnene holder kolonnene faste mens raden endres, så hele raden skifter farge. Google skriver at formler for betinget formatering [bare kan referere til det samme arket](https://support.google.com/docs/answer/78413?hl=no) med mindre du bruker `INDIRECT`. Derfor står beholdningen og bestillingspunktet ved siden av hverandre på `Items`-fanen.

Du kan bruke den samme funksjonen til å flagge journalrader der fortegnet ikke stemmer med typen. Marker `A2:H` på `Movements` og bruk:

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

### Grunnleggende om bestillingspunkt

Et bestillingspunkt svarer på ett spørsmål: hvor lavt kan beholdningen bli før du må bestille, slik at den nye leveransen kommer før du går tom? Den grunnleggende formelen er:

**Bestillingspunkt = gjennomsnittlig daglig forbruk × leveringstid i dager + sikkerhetslager**

- **Gjennomsnittlig daglig forbruk** finner du i journalen.
- **Leveringstid** er antall dager fra du bestiller til varene står på hyllen.
- **Sikkerhetslager** er bufferen for trege leveranser eller travle uker.

Legg til tre hjelpekolonner i `Items`: G «Snitt daglig forbruk (30 dager)», H «Leveringstid (dager)» og I «Sikkerhetslager». I `G2`:

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

Minustegnet gjør de negative `Issue`-antallene om til et positivt forbrukstall. Sett deretter bestillingspunktet i `D2`:

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

En vare som brukes med 4 esker om dagen, med 5 dagers leveringstid og 10 esker i sikkerhetslager, har for eksempel et bestillingspunkt på 4 × 5 + 10 = 30. Gå gjennom leveringstider og sikkerhetslager når leverandører eller sesonger endres; formelen er aldri bedre enn disse to inndataene.

## Datavalidering og rullegardinmenyer

Rullegardinmenyer stopper skrivefeilene som ødelegger SUMIFS og QUERY: en SKU med et mellomrom på slutten eller en plassering som skrives på to måter, gir aldri treff.

### Legg til en rullegardinmeny fra et område

1. På `Movements` markerer du `B2:B`.
2. Klikk på **Data → Datavalidering → Legg til regel**.
3. Under **Kriterier** velger du **Rullegardinmeny (fra et område)** og skriver inn `Items!A2:A`.
4. Klikk på **Ferdig**.

Gjenta for `C2:C` med `Locations!A2:A`. For `E2:E` velger du **Rullegardinmeny** og legger til elementene `Receive`, `Issue`, `Adjust` og `Transfer`. Google tilbyr også **Sett inn → Rullegardinmeny** og et **Rullegardinmeny**-valg når du høyreklikker; alle åpner det samme [panelet for datavalideringsregler](https://support.google.com/docs/answer/186103?hl=no).

### Avvis eller advar

Som standard avviser Google Regneark en verdi som ikke samsvarer med listen. Hvis du heller vil tillate den med en advarsel, åpner du **Avanserte alternativer** og velger **Vis en advarsel** under **Hvis dataene er ugyldige:**. For en lagerjournal bør du beholde avvisning: en bevegelse mot en ukjent SKU er nesten alltid en feil.

Legg også til en valideringsregel på `D2:D` som bare godtar tall, og på `A2:A` som bare godtar datoer. Et antall som er skrevet inn som tekst, ignoreres av SUMIFS, så beholdningen blir stille og rolig feil.

## Beskytt områder og del med omhu

Tillatelser i Google Regneark har to lag, og begge betyr noe.

1. **Deling** avgjør hvem som kan åpne filen, og om de er leser, kommentator eller redigerer. Du angir det med **Del**, og det gjelder hele filen.
2. **Beskyttede ark og områder** begrenser hva personer med redigeringstilgang kan endre inne i filen.

### Beskytt det ingen skal skrive i

1. Klikk på **Data → Beskytt regneark og områder**.
2. Klikk på **Legg til et ark eller et område**.
3. Velg **Område** og marker `Items!E2:F` (formelkolonnene).
4. Klikk på **Angi tillatelser**.
5. Velg **Begrens hvem som kan endre dette området**, velg **Bare du**, og klikk på **Ferdig**.

Beskytt hele `Locations`-fanen på samme måte hvis listen sjelden endres. På `Movements` må folk kunne legge til rader, så en streng beskyttelse passer ikke. Bruk i stedet **Vis en advarsel når dette området redigeres** på de eksisterende radene; da må folk bekrefte før de endrer historikken.

Vær klar over hva beskyttelse ikke gjør. Google skriver at beskyttelse [«ikke bør brukes som et sikkerhetstiltak»](https://support.google.com/docs/answer/1218656?hl=no), og at folk «kan fortsatt skrive ut, kopiere, lime inn, importere og eksportere kopier av et beskyttet regneark». Eieren kan alltid redigere et beskyttet område, og du kan ikke beskytte data med passord. Trinnvise detaljer finner du i [Beskytt et ark eller område](/nb/hjelp/google-regneark/beskytt-omrader).

### Del med den smaleste rollen

- Gi **Leser** til personer som bare trenger å slå opp beholdningen.
- Gi **Redigerer** bare til personer som registrerer bevegelser.
- Med delingsinnstillingene i Google kan du hindre at personer med redigeringstilgang deler filen, som beskrevet i [Del filer fra Google Disk](https://support.google.com/drive/answer/2494822?hl=no).

## Versjonslogg og endringslogg for celler

Google Regneark har to typer historikk: versjoner av hele filen og endringsloggen for én enkelt celle. [Du kan ikke se versjonsloggen](https://support.google.com/docs/answer/190843?hl=no) uten tillatelse til å redigere filen.

### Versjonslogg

For å se tidligere versjoner klikker du på **Siste endring** øverst til høyre i regnearket. Velg en versjon i panelet til høyre for å se hvem som endret hva. Som standard skjuler Google Regneark rader som ikke er endret; klikk på **Vis rader som ikke er endret** for å se alt.

Du kan gjenopprette en versjon eller lage en kopi av den. Når du gjenoppretter en versjon av et regneark, slettes endringsloggen for hver enkelt celle for endringer gjort før gjenopprettingen, så for en travel lagerfil er en kopi som regel det tryggere valget. Se [Gjenopprett en tidligere versjon](/nb/hjelp/google-regneark/gjenopprett-versjon).

Du kan gi navn til opptil 15 versjoner per regneark, og navngitte versjoner slås ikke sammen. Gi en versjon navn etter hver varetelling, for eksempel «Telling 31.10.2026», så kan du alltid gå tilbake til den.

### Endringslogg for celler

Høyreklikk på en celle og velg **Vis endringslogg** for å se hvem som endret cellen. Google lister opp endringer som kanskje ikke vises der:

- rader og kolonner som er lagt til eller slettet;
- endringer i formateringen av cellen;
- endringer gjort før en tidligere versjon ble gjenopprettet;
- endringer utført av formler.

Det siste punktet betyr noe i et regneark som drives av formler: beholdningscellene i kolonne E endres via formler, så endringsloggen deres forklarer ikke et nytt tall. Det gjør journalradene. Flere detaljer finner du i [Finn ut hvem som endret en celle](/nb/hjelp/google-regneark/hvem-endret-en-celle).

### Varsler om endringer

Klikk på **Verktøy → Varslingsinnstillinger → Endre varsler** for å få en e-post når andre endrer regnearket, enten med det samme eller som et daglig sammendrag. Google skriver at [du bare kan konfigurere varsler for deg selv](https://support.google.com/docs/answer/91588?hl=no).

## Grenser i Google Regneark du må planlegge for

Dette er grensene Google dokumenterer, kontrollert 28.10.2026. Hele listen, med hva du gjør når du nærmer deg hver grense, finner du i [Grenser i Google Regneark for lagerstyring](/nb/hjelp/google-regneark/grenser).

| Grense | Hva Google dokumenterer |
|---|---|
| Celler per regneark | Opptil 20 millioner celler eller 100 MB for regneark som er opprettet i eller konvertert til Google Regneark ([filgrenser i Disk](https://support.google.com/drive/answer/37603?hl=no)). Google økte grensen fra 10 millioner i september 2026 ([Workspace Updates](https://workspaceupdates.googleblog.com/2026/09/doubled-cell-limits-in-google-sheets-now-generally-available.html)) |
| Mange som redigerer samtidig | En fil i Google kan bare redigeres aktivt på opptil 100 åpne faner eller enheter samtidig ([delingsgrenser](https://support.google.com/drive/answer/2494822?hl=no)) |
| Deling | Opptil 600 individuelle e-postadresser per fil ([delingsgrenser](https://support.google.com/drive/answer/2494822?hl=no)) |
| Navngitte versjoner | Opptil 15 per regneark ([versjonslogg](https://support.google.com/docs/answer/190843?hl=no)) |
| IMPORTRANGE | Maksimalt 10 MB mottatte data per forespørsel; ser etter oppdateringer hver time mens dokumentet er åpent ([IMPORTRANGE](https://support.google.com/docs/answer/3093340?hl=no)) |

En journal vokser med én rad per bevegelse. Med 8 kolonner gir 1 000 bevegelser i måneden 8 000 celler i måneden, eller rundt 96 000 i året. De fleste små team når aldri cellegrensen, men store filer blir trege lenge før den. Arkiver avsluttede år i en egen fil, og før utgående beholdning videre som én `Adjust`-rad per vare og plassering.

## Når Regneark alene ikke lenger er nok

Oppsettet ovenfor fungerer godt for noen få nøye personer. Når teamet vokser, begynner disse hullene å koste tid eller penger.

- **Samtidige endringer.** Google Regneark viser endringer fortløpende, men ingenting hindrer to personer i å endre den samme raden, eller noen i å sortere journalen mens en annen skriver. Ingenting kontrollerer en endring før den lagres.
- **Ingen godkjenninger.** Hvem som helst med redigeringstilgang kan registrere en justering på 500 enheter eller endre et bestillingspunkt. Det finnes ikke noe trinn der en annen person vurderer endringen først.
- **Historikk som er vanskelig å revidere.** Versjonsloggen er gruppert, og [endringer kan av og til slås sammen](https://support.google.com/docs/answer/190843?hl=no). Endringsloggen for celler hopper over formelresultater, innsatte og slettede rader og formateringsendringer, og en gjenoppretting sletter den. Eieren av en fil i en personlig Google-konto kan slette versjoner uten navn permanent. Ingenting beviser at historikken du ser, er fullstendig.
- **Overskriving ved et uhell.** Én innliming over feil område eller en «fyll nedover» for langt endrer hundrevis av journalrader på én gang. Versjonsloggen kan hente det tilbake, hvis noen oppdager det.
- **Tillatelser gjelder hele filen.** En person med redigeringstilgang kan redigere alle faner og alle plasseringer med mindre du bygger beskyttelser for hånd, og beskyttelse er ikke et sikkerhetstiltak etter Googles egen beskrivelse. Du kan ikke si «denne personen registrerer bevegelser bare for lageret i nord».
- **Reglene finnes bare i hodene til folk.** «Rediger aldri gamle rader» og «oppgi alltid en referanse» er vaner. Regnearket håndhever dem ikke.

Hvis dette høres kjent ut, har du tre valg: godta risikoen, gå over til et eget lagersystem, eller beholde regnearket og legge kontroll oppå det.

## Slik legger LightInventory kontroll på det samme regnearket

LightInventory er en lagerapp bygd oppå et regneark i Google Regneark som du eier. Den er under utvikling og ennå ikke allment tilgjengelig. Den bruker den samme journalutformingen som denne veiledningen, og appen håndhever reglene ovenfor i stedet for å overlate dem til vaner.

- **Dataene dine blir i regnearket ditt.** Varer, plasseringer, bevegelser og endringsloggen er faner i ditt eget regneark. Hvis du slutter å bruke LightInventory, beholder du filen.
- **Hver endring registreres.** Hver endring skrives til en `Log`-fane med hvem som gjorde den, når, verdien før og verdien etter. Feil rettes med en motpostering, aldri ved å slette historikk.
- **Historikk som avslører manipulering.** En hashkjede med nøkkel over loggen, uten verdiene dine, lagres utenfor filen og forankres eksternt, så en loggrad som er endret eller slettet i det stille, feiler kontrollen. Se [revisjonssporet](/nb/funksjoner/revisjonsspor).
- **Godkjenninger.** Du velger hvilke endringer som krever godkjenning, for eksempel prisendringer. Den som vurderer, kan ikke være personen som ba om endringen.
- **Roller.** Eier, administrator, godkjenner, redigerer og leser, med valgfri avgrensning per plassering for redigerere og lesere. Teammedlemmer jobber i appen og legges ikke til i filen med mindre eieren gir dem direkte redigeringstilgang.
- **Oppdagelse av direkte endringer.** Hvis noen redigerer regnearket direkte, oppdager LightInventory endringen og håndterer den etter regelen din: blokker den til en eier godtar eller gjenoppretter den, loggfør den automatisk, eller send den til godkjenning.

Det finnes en Free-plan for 1 bruker og 1 regneark. Team koster 35 kr per bruker per måned ved månedlig fakturering, eller 29 kr ved årlig fakturering, eksklusive avgifter. Detaljer finner du under [priser](/nb/priser), og hvordan dataene og tilgangen din håndteres, står under [sikkerhet](/nb/sikkerhet).
