[LØST] Hvis værdi=?

Brugerhjælp og support til regneark i LibreOffice Calc

Moderator: Lodahl

SnowmanDK
Posts: 23
Joined: 16. Jun 2009 12:16
Location: Hammel

[LØST] Hvis værdi=?

Post by SnowmanDK »

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.
Jens S
Posts: 1091
Joined: 25. Mar 2007 22:42

Post by Jens S »

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)

mvh
Jens
SME
Posts: 163
Joined: 29. Sep 2008 11:05
Location: Silkeborg, Danmark
Contact:

Post by SME »

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)
OOo 3.1 kører fint på Vista Home Premium.
SnowmanDK
Posts: 23
Joined: 16. Jun 2009 12:16
Location: Hammel

Post by SnowmanDK »

ø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.

Håber det er bedre ;)
SME
Posts: 163
Joined: 29. Sep 2008 11:05
Location: Silkeborg, Danmark
Contact:

Post by SME »

Dvs. du vil have:

Code: Select all

  A  |  B  
===========
  5  |  1
  2  |  2
  8  |  3
  5  |  1
  8  |  3
Det mener jeg også min løsning giver. Blot er resultatet i kolonne B flyttet hen til kolonne D pga. hjælpekolonnerne, så overstående vil se således:

Code: Select all

  A  |  B  |  C  |  D  
========================
  5  |  1  | #NA |  1  
  2  |  2  |  2  |  2
  8  |  3  | #NA |  3
  5  |  4  | #NA |  1
  8  |  5  |  1  |  3 
     |  6  | #NA |
     |  7  | #NA |  
     |  8  |  3  |  
OOo 3.1 kører fint på Vista Home Premium.
SnowmanDK
Posts: 23
Joined: 16. Jun 2009 12:16
Location: Hammel

Post by SnowmanDK »

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 :D

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.
SME
Posts: 163
Joined: 29. Sep 2008 11:05
Location: Silkeborg, Danmark
Contact:

Post by SME »

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.
OOo 3.1 kører fint på Vista Home Premium.
Jens S
Posts: 1091
Joined: 25. Mar 2007 22:42

Post by Jens S »

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.
SME
Posts: 163
Joined: 29. Sep 2008 11:05
Location: Silkeborg, Danmark
Contact:

Post by SME »

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 :lol:. Og denne metode ser klart ud til at være at foretrække frem for min metode.
OOo 3.1 kører fint på Vista Home Premium.
SnowmanDK
Posts: 23
Joined: 16. Jun 2009 12:16
Location: Hammel

Post by SnowmanDK »

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):

Code: Select all

      A       |   B
====================
5798002754506 |	1
5798002754506 |	1
5798002754506 |	1
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759754 |	4
5798002759785 |	17
5798002759785 |	17
5798002759785 |	17
5798002759785 |	17
5798002759808 |	21
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.
SME
Posts: 163
Joined: 29. Sep 2008 11:05
Location: Silkeborg, Danmark
Contact:

Post by SME »

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.

Jeg er nu nået frem til følgende forslag:

Code: Select all

  A  |  B  |  C
==================
  5  |  1  |  1
  2  |  2  |  2
  8  |  3  |  3
  5  |  4  |  1
  8  |  5  |  3
hvor C1 har koden: =VLOOKUP(A1; $A$1:$B$5; 2; 0)
OOo 3.1 kører fint på Vista Home Premium.
SME
Posts: 163
Joined: 29. Sep 2008 11:05
Location: Silkeborg, Danmark
Contact:

Hvad med databaser?

Post by SME »

Hej igen

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).

Så hvad laver du? :)
OOo 3.1 kører fint på Vista Home Premium.
SnowmanDK
Posts: 23
Joined: 16. Jun 2009 12:16
Location: Hammel

Post by SnowmanDK »

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.
SME
Posts: 163
Joined: 29. Sep 2008 11:05
Location: Silkeborg, Danmark
Contact:

Post by SME »

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?
OOo 3.1 kører fint på Vista Home Premium.
SnowmanDK
Posts: 23
Joined: 16. Jun 2009 12:16
Location: Hammel

Post by SnowmanDK »

:lol:
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.

Er det info nok?
Post Reply