Andre fag

Excel hjælp

15. december 2016 af Haxxeren - Niveau: Universitet/Videregående

Hej alle excelbrugere

Jeg er i en situation, hvor jeg skal have genereret en masse (op til 6000) forskellige navne. Helt specifickt er jeg interesseret i en navnestruktur på formen:

AA01

AA02

..

AA99

AB01

AB02

..

AB99

etc.

Jeg tænker, at det er simpelt at generere i excel, men jeg kan ikke selv få det op at gøre. Er der nogle mere erfarne excelbrugere, der kan give en hjælpende hånd her?

På forhånd tak.


Brugbart svar (1)

Svar #1
20. december 2016 af Therk

Disclaimer: Hvis dit styresystem er sat til danske enheder, skal du benytte semikolon (;), de steder hvor jeg har brugt komma (,). Hvis dit Excel er dansk, skal du benytte de danske funktionsnavne, som du sikkert kan slå op et sted eller gætte dig til.

\rule{7cm}{0.4pt}

Vi benytter at funktionen ROW returnerer rækkenummeret. For at generere tallene 01,...,99 vha. ROW benytter vi MOD, som returnerer et tal modulus en divisor. For at få nullet foran benyttes TEXT med formatet "00", som sikrer at tallet er tocifret med leading zero. Vi har nu at 

=TEXT(MOD(ROW(A1)-1,99)+1,"00")

Returnerer 01,...,99,01,...,99, etc. Vi starter i række "nul" og løber modulus 99. Det giver 00,01,...,98,00,01,02,...,098, etc. Læg 1 til for at få den ønskede talrække. Smid denne formular i kolonne D.

Dernæst skal vi have det "bagerste" bogstav, dvs. "cifferet" A i BA01. Her benytter vi at CHAR(65) = A, CHAR(65+1) = B, etc. op til CHAR(65+26) = Z. Det varierende tal skal derfor være modulus 26 for at returnere til A efter Z. Dernæst benytter vi FLOOR af rækkenummeret (minus 1 for at starte med 01, se ovenfor) divideret med 99 og runder ned til største hele tal. Det giver 0 for de første 99, 1 for de næste 99 tal etc.

I kolonne C skriver vi derfor formlen

=CHAR(65+MOD(FLOOR((ROW(A1)-1)/99,1),26))

Kolonne B er nu triviel. Det skal blot være samme som kolonne C, men modulus 99*26: Først efter 26 bogstaver er løbet igennem 99 gange hver, stiger denne med 1. Vi skriver i kolonne B

=CHAR(65+MOD(FLOOR((ROW(A1)-1)/(99*26),1),26))

Konkatener de tre kolonner til én tekststreng med CONCATENATE.

=CONCATENATE(B1,C1,D1)

Scroll ned til række 6000 og indsæt et eller andet i cellerne A6000,B6000,C6000,D6000. Scroll helt op, marker A1, tryk CTRL+SHIFT+Pil ned, tryk F2 for at redigere i cellen og tryk CTRL+Enter; så bliver alle cellerne udfyldt med samme formular. Gør det samme for B1, C1 og D1.

Det giver dig AA01, ..., CI60; 6000 forskellige tal. :)


\rule{7cm}{0.4pt}

Alternativt, samlet i én formel:

=CONCATENATE(CHAR(65+MOD(FLOOR((ROW(A1)-1)/(99*26),1),26)),CHAR(65+MOD(FLOOR((ROW(A1)-1)/99,1),26)),TEXT(MOD(ROW(A1)-1,99)+1,"00"))


Svar #2
22. december 2016 af Haxxeren

#1

Jeg synes ikke jeg kan få det til at virke.

Er det vigtigt, hvor jeg indsætter formlen som du har skrevet til sidst?

Jeg får fejlmeddelelsen: "The formula you typed contains an error".


Brugbart svar (1)

Svar #3
23. december 2016 af Therk

Det er ligegyldigt hvilken celle du indsætter formularen i; den starter med AA01 derfra.
Som jeg nævnte i #1, så er det ikke sikkert du har samme Excel- og styresystemsindstillinger som jeg har. Hvis dit Excel er på engelsk, men dit styresystem er sat op med danske formater, så vil du skulle bruge SEMIKOLON i stedet for KOMMA. Et simpelt search and replace ; , burde fikse koden. Prøv koden her:

=CONCATENATE(CHAR(65+MOD(FLOOR((ROW(A1)-1)/(99*26);1);26));CHAR(65+MOD(FLOOR((ROW(A1)-1)/99;1);26));TEXT(MOD(ROW(A1)-1;99)+1;"00"))

Hvis dit Excel er på dansk, så skal du bruge danske funktionsnavne (som også nævnt). De kan oversættes med fx http://www.piuha.fi/excel-function-name-translation/index.php?page=dansk-english.html. Jeg har gjort det for dig, men har, af gode grunde, ikke kunne teste koden.

=sammenkædning(tegn(65+rest(afrund.gulv((række(A1)-1)/(99*26);1);26));tegn(65+rest(afrund.gulv((række(A1)-1)/99;1);26));tekst(rest(række(A1)-1;99)+1;"00"))

(Funktionsnavne er ikke case-sensitive i den forstand at Excel selv retter dem til store bogstaver)

Sig til hvis det stadig ikke virker!


Svar #4
23. december 2016 af Haxxeren

#2

Tak for det hurtige svar. Jeg ved ikke lige, hvad der skete før, men det virker nu! Mange tak!


Skriv et svar til: Excel hjælp

Du skal være logget ind, for at skrive et svar til dette spørgsmål. Klik her for at logge ind.
Har du ikke en bruger på Studieportalen.dk? Klik her for at oprette en bruger.