Jeg er lidt fortabt, men der er sikkert en nem løsning jeg bare overser
Jeg har en kolonne med knap 2000 rækker af tal (kolonne A).
Der er formentlig omkring 100 forskellige tal.
Jeg skal lave en NY kolone (kolonne B) hvori alle værdier der er identiske med A1 får værdien "1" sat i B1.
Alle identiske med A2 får værdien "2" MEDMINDRE det er identisk med A1, sat i B2, og så fremdeles.
Nogen idéer
Last edited by SnowmanDK on 5. Jul 2010 14:13, edited 1 time in total.
Hvis du har mulighed for at lave en hjælpekolonne i E med de værdier (200, 2, 12 osv) der i kolonne B skal erstattes med 1,2,3 osv kan du bruge denne formel i B1 og så trække ned i fyldhåndtaget:
=SAMMENLIGN(A1;$E$1:$E$100;0)
Jeg efterprøvede Jens' løsning, men fik det ikke til at virke (SAMMENLIGN er det danske navn for LOOKUP?).
Min løsning kræver 2 hjælpekolonner og virker kun hvis dine tal er heltal, men til gengæld behøver du ikke kende hvilke tal der er tale om!
Kolonne B dækker over samtlige tal mellem minimum og maksimum (inklusive), f.eks. tallene 1 til 2000.
Kolonne C angiver første placering af tallet og kan beregnes med formlen:
=VLOOKUP(B1;$A$1:$B$2000;2;0)
(på dansk hedder funktionen LOPSLAG). Nogle af resultaterne bliver #N/A, men det betyder blot at tallet ikke blev fundet i kolonne A. Det sidste 0 i funktionen er tilsyneladende vigtigt.
Kolonne D giver dig dit endelige resultat:
=VLOOKUP(A1;$B$1:$C$2000;2;0)
øhm... Jeg tror at jeg fik formuleret det forkert. Jeg beklager.
B1 skal have værdien 1. Den samme værdi skal alle øvrige rækker i B have, HVIS A er lig med A1.
B2 skal have værdien 2, HVIS værdien i A2<>A1, ellers er B2=B1.
B3 skal have værdien 3, HVIS værdien i A3<>A1 OG A3<>A2 MEN HVIS A3=A1 så er B3=B1 OG HVIS A3=A2 så er B3=B2.
Hej SME. Dit svar kom mellem jeg læste, og fik svaret
Mit sidste svar var til Jens S.
Angående din løsning...
Du har forstået hvad jeg vil have
MEN... Nu skal jeg være sikker på at jeg har forstået det korrekt.
Jeg har nemlig fundet ud af at mine værdier ligger fra 5798002700000
til 5798002800000.
Vil det sige at jeg skal lave 100000 værdier i kolonne B?
Last edited by SnowmanDK on 22. Jun 2009 11:43, edited 1 time in total.
SnowmanDK wrote:MEN... angående din løsning...
Nu skal jeg være sikker på at jeg har forstået det korrekt.
Jeg har nemlig fundet ud af at mine værdier ligger fra 5798002700000
til 5798002800000, hvilket vil sige at jeg skal lave 100000 værdier i kolonne B?
Teknisk set, ja, medmindre du kan se, at dine numre har et vist trinstørrelse, f.eks. at der efter 5798002700000 ikke kommer 5798002700001 men blot 5798002701000. Så kan du jo nøjes med tallene 5798002700000, 5798002701000, 5798002702000, 5798002703000 osv.
Hvis dine tal begynder at blive decimal tal eller antallet af tal bliver for stor, er jeg bange for, at du må ty til makroprogrammering. Men så kan det nok også klares uden ekstra hjælpekolonner.
Denne virker måske nemmere. I B1 indtaster du og trækker nedad:
=SAMMENLIGN(A1;$A$1:$A$2000;0)
Det er tilsyneladende ikke nødvendig at lave en sammenligningskolonne. SAMMENLIGN er det samme som MATCH på engelsk.
Her kan du hente regneark med oversættelse http://peecee.dk/upload/view/177138
NB! den er ikke helt stabil, hvis du ændre tal i kolonne A
mvh
Jens
Last edited by Jens S on 22. Jun 2009 11:57, edited 1 time in total.
Jens S wrote:Denne virker måske nemmere. I B1 indtaster du og trækker nedad:
=SAMMENLIGN(A1;$A$1:$A$2000;0)
Det er tilsyneladende ikke nødvendig at lave en sammenligningskolonne. SAMMENLIGN er det samme som MATCH på engelsk.
Her kan du hente regneark med oversættelse http://peecee.dk/upload/view/177138
mvh
Jens
Ja, det forklarer nok hvorfor jeg ikke kunne genskabe dine resultater . Og denne metode ser klart ud til at være at foretrække frem for min metode.
Så er vi ved at være der Jens
Men desværre virker din metode ikke HELT som jeg vil have den til.
Jeg får nedenstående med din formel (dette er bare et meget lille udklip):
Jeg prøvede at sortere kolonne A for at få et overblik under tests.
Din formel tildeler ikke løbende numre, men numre baseret på rækkenummer. Derfor har 4. række værdien 4 i stedet for 2 som den burde, og 17. række får værdien 17 i stedet for 3.
Oprindeligt havde jeg kigget på noget VLOOKUP (da: LOPSLAG), men det voldte mig store problemer. Men tror nu, at problemet var fraværet af den sidste parameter.
Hvad har du til at generere de 2000 tal? For er du ikke i bund og grund på udkig efter de enkelte tal samt ??
Jeg tænker på, om der ikke er et bedre medie til din opgave end calc. F.eks. en database (her får du SQL udtrykket "DISTINCT") eller Python (her vil jeg kunne skrive en rutine med lukkede øjne til at løse denne opgave).
Det er virksomheds-EAN numre som skal bruges til afregning hos vores teleselskab.
De vil ikke lave samlede regninger ud fra vores EAN numre, men have en liste med fortløbende numre at basere det på.
De har en fast skabelon i xls format som vi skal bruge...
De er jo desværre lidt sstive med hvordan de vil have tingene gjort.
Har i øvrigt lige testet dit sidste forslag SME.
De giver samme resultat som Jens' gjorde... Når den finder en værdi der ikke er set før, tildeler den et nummer baseret på rækken værdien er i, i stedet for et fortløbende nummer.
Argh... P1S. Havde overset den vigtige detalje, at hvis et element forekommer flere gange før alle har været der, går det galt.
Nu er jeg hooked på at få en løsning der virker (gjorde min af kl. 10:02?), så kom med det! Jeg sover ikke før det virker!
Har du Python installeret? Hvad genererer dit output? Er det i CSV? Tekst? Bla? Og hvordan skal tingene sættes ind i XLS skabelonen? Copy-and-paste?
Jeg fik det nok formuleret lidt forkert, da det er et xls dokument i færdig format med diverse låste kolonner og celler med videre.
Det er ÉT kæmpe dokument på 10,5Mb.
Alle data der skal bruges er der allerede, lige med undtagelse af de fortløbende numre som jeg skal have genereret.
Det skal gemmes igen som xls.
I det ene ark jeg skal bruge, er der p.t. række 1 til 1401 fordelt på kolonne A til CP i brug.