Toon posts:

Excel functie aantal.als geeft niet de juiste waarde!

Pagina: 1
Acties:
  • 1.418 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Ik heb al zitten zoeken of er iets over te vinden was. Er was veel te vinden over aantal.als functie maar niet als hij niet werkt.

Ik heb een spreadsheet met daarin een hele rij getallen. Deze rij getallen komt voor uit het scannen van barcodes. Deze barcodes kunnen per ongeluk wel eens dubbel gescand worden. Dat moet eruit gefilterd worden. De code bestaat uit:

a) uniek nummer
b) gewicht van de pallet
c) pallet nummer van de vracht
d) totaal aantal pallets van die vracht.

Je krijgt dus....
230715909 821 14 28

Dat geeft
a) 230715909
b) 821
c) 14
d) 28

pallet weeg dus 821 kg en is pallet 14 van de 28.

Goed, deze scannummers staan dus allemaal onder elkaar. Ik gebruik de functie aantal.als op de volgende manier: =AANTAL.ALS($H$2:$H$198;H43)
Dat is dus om te kijken hoevaak het getal H43(waarde dan) voorkomt in H2 tot H198.
Wat gebeurd er nou:

26207158609202526 1

247051404710081924 2
247051404710081824 2

2307159098211428 1

Je ziet hier 2 verschillende nummers.... maar hij geeft wel aan dat hij 2 keer voorkomt. Alleen.... hij komt helemaal niet 2 keer voor in de lijst. Deze pallet weegt dus 1008 kilo en is 18/24 en 19/24.
2 verschillende dus. ik kan die 18 en 19 in de waarde zelf ook veranderen tussen de 10 in en de 19 en hij blijft op 2 staan. Tevens kan ik de 24 uit de waarde veranderen van 10 tot 99. Toch blijft die 2 staat. Pas als ik buiten de 10 en 99 verander, komt er een 1 te staan.

Wat doe ik verkeerd :)

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Oef, da's een lelijke :'(
Op de achtergrond worden beide teksten geevalueerd als een getal, en opmaak of tekst() lost het ook niet op. Gelukkig wordt een '=' wel correct geevalueerd dus
code:
1
{=SOM(ALS(($A$1:$A$100)=A1;1;0))}

werkt wel.

t'is een zgn matrix formule, dus de {} niet intikken maar de formule na invoeren met crtl+shift+enter bevestigen

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Klopt, als ik deze formule gebruik, geeft hij overal de waarde 1
Alleen doet hij dat ook bij de getallen die er wel dubbel instaan!
Er staat dus over de waarde 1. En juist die dubbele moeten eruit gefilterd worden :)

edit:
Het is net alsof Excel er niet mee om kan gaan met dusdanig grote getallen.
Bij de wat kortere getallen doet hij het namelijk prima. Alleen als ze langer worden lijkt het een probleem te worden omdat hij dat denk dat er toch veel identieke waarden inzitten?!

[ Voor 38% gewijzigd door Verwijderd op 04-04-2007 10:52 ]


Verwijderd

ff snelle tip, kan je niks doen met vlookup ?

Is idd heel typisch, zelfs als ik die getallen geforceerd als tekst invoert gaat dit fout.

[ Voor 53% gewijzigd door Verwijderd op 04-04-2007 11:00 ]


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 21:37
Maak eventueel een hulpkolom waarin je met de functie TEKST de waardes omzet in tekst.
Zodra je een goedwerkende set hebt kan je ook met VERT.ZOEKEN werken, maar wel op een speciale manier.
Stel, je teksten staan in kolom B. Zet dan in C2: =ALS(ISFOUT(VERT.ZOEKEN(B2,B$1:B1,1,ONWAAR)),"Komt hierboven niet vaker voor", "Komt hierboven eerder voor") en sleep die formule naar beneden. (Let op het dollarteken, die is belangrijk)
Dan krijg je álleen bij de tweede (en volgende) vermelding een andere uitdrukking, dus voorkom je dat je allebei de dubbel aanwezigen eruit gooit.
[edit] aha: die getallen zijn lager dan de interne precisie van Excel. Misschien kan je ervoor zorgen dat je een kolom formateert als tekst en daar de aanlevering inplakt. Later weer terugconverteren naar tekst is niet goed genoeg. Als je uit een tekstbestand importeerd: zet de kolom op "tekst", dan blijft Excel ervanaf.

[ Voor 21% gewijzigd door onkl op 04-04-2007 11:34 ]


Verwijderd

Topicstarter
Oke nu ga je wat te ver met precisie :)

je bedoelt dit: http://support.microsoft.com/kb/263213/nl?

(al werk ik niet echt met komma's maar excel intern misschien wel)

[ Voor 17% gewijzigd door Verwijderd op 04-04-2007 12:14 ]


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 21:37
Nee, het is wat simpeler. Excel neemt aan dat een getal maximaal x(ik meen 15) nummers lang mag zijn, met de komma op een willekeurige plek. De barcode's zijn lager, dus rondt Excel ze af. Daardoor ziet hij "247051404710081924" en "247051404710081824" klaarblijkelijk allebei als "247051404710082000" en zal ze melden als dubbel.

Waar komen de data vandaan? Tekstbestand? Access? Iets anders?

Verwijderd

Topicstarter
Deze nummers komen uit een tekstbestand.

ik snap je verhaal :)

Ik heb het tijdelijk opgelost door het gewicht eruit te laten in het getal.
Hij bouwt het getal op als A1&A2 A1&B1 enz. natuurlijk :D
Nu het gewicht eruit is werkt het wel omdat ik dan inderdaad 4 cijfers (of 3) minder heb.
Het is nog niet echt een oplossing maar ik krijg tijdelijk iig een goede waarde.

[ Voor 3% gewijzigd door Verwijderd op 04-04-2007 12:35 ]


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Verwijderd schreef op woensdag 04 april 2007 @ 10:45:
Klopt, als ik deze formule gebruik, geeft hij overal de waarde 1
Alleen doet hij dat ook bij de getallen die er wel dubbel instaan!
Er staat dus over de waarde 1. En juist die dubbele moeten eruit gefilterd worden :)
Je hebt de kleine lettertjes niet gelezen. :(
Het is een matrixformule dus bevestigen met [ctrl]+[shift]+[enter] en controleren of Excel er keurig die {} omheen zet.

[ Voor 50% gewijzigd door Lustucru op 04-04-2007 12:38 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

Topicstarter
Lustucru schreef op woensdag 04 april 2007 @ 12:34:
[...]

Je hebt de kleine lettertjes niet gelezen. :(
Het is een matrixformule dus bevestigen met [ctrl]+[shift]+[enter] en controleren of Excel er keurig die {} omheen zet.
Je hebt helemaal gelijk! ik heb dat inderdaad niet gelezen en toen werkte het idd niet!
Dit werkt inderdaad naar behoren! Mijn excuses daarvoor!

In ieder geval bedankt voor je (jullie!) hulp!

Problem solved...!

  • hamsteg
  • Registratie: Mei 2003
  • Laatst online: 24-12 13:49

hamsteg

Species 5618

Het gewicht maakt de uitdaging nog eens groter ...

Per regel heb ik alles even uitgesplitst met simpele formules:
A=jouw getal in text
B =+LEN(A2)
C= +LEFT($A$2;10)
D= +MID(A2;11;B2-10-4) // Lengte - barcode lengte links - 2 x 2 lengte rechts
E= +MID(A2;B2-4+1;2) // +1 omdat het tellen begint bij 1
F= +MID(A2;B2-2+1;2) // +1 omdat het tellen begint bij 1

Sorteren op Colum C, Advanced filter op Colum C met unieke IDs.

Niet quoten, zorgvuldige reacties volgens de regels worden zo weggewerkt: *knip*, reactie op geknipte reactie.


  • Roy Batty
  • Registratie: Oktober 2004
  • Laatst online: 13-12 13:36
Ik gebruik voorwaardelijke opmaak voor het zoeken van dubbele records, voor een instructie kijk hier maar eens:

http://office.microsoft.com/nl-nl/excel/HA011366161043.aspx

"We're not computers, Sebastian. We're physical."

Pagina: 1