Hvordan åbner jeg en CSV-fil med store tal i Excel uden de bliver vist som Scientific Notation – og hvordan gemmer jeg uden at miste præcision?

Her kommer endnu et nørde-indlæg. Alle der har arbejdet med CSV-filer med store tal, fx stregkoder eller anden identifikation, har oplevet, at når man åbner filen i Excel, så vises cellerne på en (for de fleste) underlig måde. Og skulle man formaste sig til at gemme sine ændringer, vil man på et tidspunkt se, at de mindst betydende cifre i tallene nu er lavet om til 0’er. Frustrerende? Læs videre her.

TL;DR

Skal du bare til løsningen?

Hvad er problemet?

Når Excel åbner en CSV-fil, så vil den se på cellerne i hver kolonnes og gætte sig til hvilken type, der er i disse celler – er det tekst, tal, datoer eller andet – og vise cellens indhold sådan. Med store tal kan den se, at det er tal, men Excel kan ikke håndtere store tal, så den viser det i det såkalde Scientific Notation. Dette kan se sådan ud:

Scientific Notation

Hvad er Scientific Notation?

Scientific Notation er en måde at beskrive meget meget store (eller små) tal, fx hvor mange meter der er til Mars. Hvis du også spekulerer over dette om natten, så er svaret her: Ca. 225 milliarder meter.

Excel kan dog ikke finde ud af “milliarder” og skal i stedet have det skrevet ud som 225.000.000.000. Det er så stort et tal, at Excel ‘snyder’ – ligesom vi gør, når vi bruger “milliarder” – og viser tallet som 2,25E+11, hvilket skal læses som 2,25 * 1011, udtalt som 2,25 gange ti i ellevte potens. Det bliver til 2,25 * 100.000.000.000 = 225.000.000.000 – altså 225 milliarder.

Når vi som mennesker bruger “milliarder”, så er det fordi de mindst betydende cifre – dem længst til højre i tallet, ikke er ret vigtige. Vi siger bare 225 milliarder. Det samme gør Excel, fordi så slipper den for at huske på de store tal, men blot 2,25E+11.

Men alle mine cifre er vigtige!

Men hvad hvis det faktisk ér vigtigt. Hvad hvis det ikke er en afstand, men et ID-nummer, fx en stregkode? Så skal vi helst have alle vores cifre med.

Først og fremmest skal du sikre dig, at alle cifrene faktisk er med i dit dokument. Hvis du markerer en celle og ser oppe i formellinjen, kan du se, at tallet faktisk er gemt i cellen. Excel kan bare ikke vise det korrekt. Pyh.

Markeret celle med tal gemt som Scientific Notation – bemærk alle cifre er der!

Problemet med Excel er bare, at når man så gemmer en CSV-fil, hvor Excel har vist tallet som Scientific Notation, ja så gemmer den ikke det bagvedliggende tal (som vi kan se, når vi markerer cellen), men det tal der kommer, når man skriver tallet ud udfra Scientific Notation. 5,71E+12 = 5,71 * 1012 = 5.710.000.000.000.

Lad os gemme filen (Ctrl+S), lukke Excel og åbne filen igen.

Markeret celle med tal gemt som Scientific Notation – bemærk de mindste betydende cifre er ændret til 0’er!

Øv! Nu er de fleste stregkoder i vores CSV-fil blevet ens, fordi Excel har strøget de mindst betydende cifre. Det er ikke pivgodt, hvis vi fx skal importere varedata i vores kasseapparat-software. Det giver i hvert fald problemer ude i butikken, når ekspedienten prøver at scanne en vare, eller printer nye prislabels ud…

For pokker, Excel!

Hvad gør vi nu?

Ja, jeg håber, at du har det oprindelige dokument, fordi ellers har du simpelthen ikke de mindst betydende cifre. Det kan også ses ved at åbne CSV-filen i en teksteditor, fx Notepad++ og navigere hen til kolonnen med de store tal. Dette er sandheden som Excel forsøger at vise – og er sandheden så med eller uden de mindst betydende cifre?

Vores CSV-fil åbnet i Notepad++, hvor vi kan se, at vi heldigvis stadig har alle cifrene i tallet.

Du kan finde andre guides på nettet, der vil have dig til at bruge Excels Importér fra Tekst/CSV-fil-funktion. Problemet er blot, at importeren har nogle andre fejl, der kan ødelægge dit datasæt – fx hvis du har en en tekststreng i din fil, der indeholder linjeskift.

En række i en CSV-fil, hvor et af felterne består af en tekststreng med linjeskift – et beskrivelsesfelt. Bemærk at tekststrengen starter og slutter med “, hvilket Excel godt kan finde ud af når man blot åbner en CSV-fil, men ikke når man importerer.

Dette kan Excel fint finde ud af, hvis du bare lader Excel åbne CSV-filen selv, men hvis du importerer, så vil den se linjeskiftet som en ny række i CSV-filen. Skrammel! Men giv ikke op!

Løsningen

Der er en meget nem måde at åbne din CSV-fil på. Glem importeren, bare sæt kolonnens format til Number med 0 decimaler:

  1. Åbn CSV-filen i Excel (typisk kan du dobbelt-klikke på filen)
  2. Find den kolonne med de lange tal i
  3. Klik på kolonneoverskriften, så du markerer alle celler i kolonnen
  4. Vælg format-dropdown (“General”) i Home-båndet og vælg “More number formats”
  5. Herinde vælges Number og antal decimaler sættes til 0.
  6. Tryk OK og se nu alle dine cifre

Hvis du nu gemmer filen som CSV-fil, vil du bibeholde alle cifrene. Du skal dog igennem møllen igen, næste gang du åbner CSV-filen, fordi CSV-formatet ikke har viden om formatet, det er bare en tekstfil. Excel gætter nu igen på at det er et nummer-format men viser det som Scientific Notation.

Du kan i stedet gemme filen som Excel-format, efter du har formateret kolonnen som Number. Således vil Excel huske at denne kolonne er en Number-kolonne og kan vise indholdet “normalt” – og ikke mindst gemme som CSV korrekt.

Hey Microsoft – kunne I evt. lokkes til at fikse Excel, så det selv retter kolonneformatet til Number ved store tal, i stedet for at bruge Scientific Notation? Eller i hvert fald giver mulighed for at vælge det i Indstillinger? – Og nu I er igang, så fiks lige importeren også! Tassaduha…

Nu ved du, hvordan du åbner en CSV-fil med store tal og gemmer det igen som CSV-fil uden at miste præcision – altså miste de mindst betydende cifre.

 

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.