Rijen filteren

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

  • Hooz
  • Registratie: December 2023
  • Laatst online: 03-12-2023
Hi,

Ik heb in excel een dataset met 3 kolommen. In kolom A staan persoonsnummers, in kolom B staat een Ja of Nee, en in kolom 3 staat een leeftijd. Sommige persoonsnummers staan dubbel, en die wil ik filteren op basis van 2 voorwaarden.
Als een persoonsnummer dubbel staat en kolom B geeft voor de ene rij Ja aan en voor de andere Nee, dan wil ik de rij met Ja houden. Als Kolom B hetzelfde aangeeft, dan kijk ik naar kolom C en wil ik de hoogste leeftijd houden.
Het kan ook zijn dat persoonsnummers er 3,4,5 of 6 keer in staan.

Heeft iemand een idee hoe die efficient kan?

Beste antwoord (via g0tanks op 03-12-2023 20:43)


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Hooz schreef op zomdag 3 december 2023 @ 11:44:
Thanks, dat werkt bijna perfect! Er is alleen nog 1 ding waar ik niet uit kom. Het kan zijn dat iemand er meer dan 2x in staat. Dus bijvoorbeeld 2x Ja en 1x Nee. In dat geval wil ik van de 2 Ja's de laagste leeftijd kiezen. Maar als iemand er 2 of meer keer in staat met alleen maar Nee, dan wil ik de oudste kiezen. Is daar misschien nog een handige oplossing voor?
Dan vertaal ik het even als volgt: komt een persoon een of meer keer voor met ja, dan laagste leeftijd van de 'ja', anders hoogste leeftijd van de 'nee'.

Ik zou in een hulpkolom de te behouden leeftijd plaatsen dmv =ALS(AANTALLEN.ALS(A:A;A1;B:B;"j")=0;MAX.ALS.VOORWAARDEN(C:C;A:A;A1);MIN.ALS.VOORWAARDEN(C:C;A:A;A1;B:B;"J")). In mensentaal: komt de naam niet voor met een ja, pak dan de hoogste leeftijd, anders neem de laagste leeftijd van de regels met een 'ja'. Knip de hulpkolom, plak hem als waarde en laat excel alle duplicaten verwijderen.

Het is me niet duidelijk of je de laagste van de 'ja' wilt of sowieso de laagste. Voor de aanpak maakt dat niet uit: als je sowieso de laagste wilt dan kun je het tweede criterium bij min.als weglaten.

[ Voor 11% gewijzigd door Lustucru op 03-12-2023 15:26 ]

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

Alle reacties


Acties:
  • +1 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Wil je automatisch verwijderen? Dan ontkom je niet aan VBA.

Kan het handmatig via een filter?

Sorteer op kolom A, dan B en dan C, zodat de gelijke nummers onder elkaar staan. Dat maakt het makkelijker te checken.

Dan kan je een hulpkolom D maken: D2 =ALS(A2=A1;D1+1;1) en dat naar beneden trekken. Filter kolom D op alles hoger dan 1. Verwijder die rijen.

(Even de sortering omdraaien als je nu precies de verkeerde weggooit :P )

[ Voor 4% gewijzigd door F_J_K op 03-12-2023 11:14 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Acties:
  • 0 Henk 'm!

  • Hooz
  • Registratie: December 2023
  • Laatst online: 03-12-2023
Thanks, dat werkt bijna perfect! Er is alleen nog 1 ding waar ik niet uit kom. Het kan zijn dat iemand er meer dan 2x in staat. Dus bijvoorbeeld 2x Ja en 1x Nee. In dat geval wil ik van de 2 Ja's de laagste leeftijd kiezen. Maar als iemand er 2 of meer keer in staat met alleen maar Nee, dan wil ik de oudste kiezen. Is daar misschien nog een handige oplossing voor?

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 00:16

g0tanks

Moderator CSA
Hooz schreef op zondag 3 december 2023 @ 11:44:
Thanks, dat werkt bijna perfect! Er is alleen nog 1 ding waar ik niet uit kom. Het kan zijn dat iemand er meer dan 2x in staat. Dus bijvoorbeeld 2x Ja en 1x Nee. In dat geval wil ik van de 2 Ja's de laagste leeftijd kiezen. Maar als iemand er 2 of meer keer in staat met alleen maar Nee, dan wil ik de oudste kiezen. Is daar misschien nog een handige oplossing voor?
Volgorde van sorteren omdraaien: eerst leeftijd sorteren van hoog naar laag (kolom C), dan Ja/Nee en dan pas het persoonsnummer.

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • Hooz
  • Registratie: December 2023
  • Laatst online: 03-12-2023
Dat werkt niet: Dan staan alle hoogste leeftijden bovenaan en de persoonsnummers door elkaar wat er voor zorgt dat D2 =ALS(A2=A1;D1+1;1) bijna nooit op meer dan 1 uit komt.

Het ziet er als volgt uit. Ik wil hier dat de gele rijen overblijven

Afbeeldingslocatie: https://tweakers.net/i/lgmXElXjQXin-CDdSejELm8xtSw=/full-fit-in/4920x3264/filters:max_bytes(3145728):no_upscale():strip_icc():fill(white):strip_exif()/f/image/Y5wkjMGHjC5l86nBxVPGkmzT.jpg?f=user_large

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 00:16

g0tanks

Moderator CSA
Hooz schreef op zondag 3 december 2023 @ 14:14:
Dat werkt niet: Dan staan alle hoogste leeftijden bovenaan en de persoonsnummers door elkaar wat er voor zorgt dat D2 =ALS(A2=A1;D1+1;1) bijna nooit op meer dan 1 uit komt.

Het ziet er als volgt uit. Ik wil hier dat de gele rijen overblijven

[Afbeelding]
wil ik de hoogste leeftijd houden
Wil je nou de hoogste of laagste leeftijd behouden? In jouw voorbeeld heb je nu voor Pers 4 de laagste leeftijd en Pers 5 de hoogste leeftijd.

Wat ik eerder voorstelde werkt trouwens prima voor het behouden van hoge leeftijd:
Afbeeldingslocatie: https://tweakers.net/i/iE8ne2pe-OAcpS0Vd08C5iX_Ix0=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/eXsshJjZ9InO0IWSt1YsQVty.png?f=user_large

Wil je de laagste leeftijd, dan sorteer je eerst leeftijd van laag naar hoog.

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • 0 Henk 'm!

  • Will_M
  • Registratie: Maart 2004
  • Niet online

Will_M

Intentionally Left Blank

Is het tevens niet handiger om de bovenste rij (A1-D1) even te selecteren en daar onder 'Data' het 'auto-filter' op aan te zetten (en dan meteen de optie 'Freeze Panes' onder 'View' er bij te gaan gebruiken)?

Boldly going forward, 'cause we can't find reverse


Acties:
  • 0 Henk 'm!

  • Hooz
  • Registratie: December 2023
  • Laatst online: 03-12-2023
Er zijn 3 varianten dubbele personen:

J/N: Hier wil ik de laagste leeftijd
J/J: Hier wil ik de laagste leeftijd
N/N: Hier wil ik de hoogste leeftijd

Acties:
  • 0 Henk 'm!

  • g0tanks
  • Registratie: Oktober 2008
  • Laatst online: 00:16

g0tanks

Moderator CSA
Hooz schreef op zondag 3 december 2023 @ 15:02:
Er zijn 3 varianten dubbele personen:

J/N: Hier wil ik de laagste leeftijd
J/J: Hier wil ik de laagste leeftijd
N/N: Hier wil ik de hoogste leeftijd
Dan zou ik werken met twee draaitabellen als hulptabel:
Draaitabel 1 bepaalt per persoon hoe vaak Ja en Nee vorkomen.
Draaitabel 2 bepaalt per persoon de laagste en hoogste leeftijd.

Vervolgens bepaal je per persoon met behulp van ALS():
Ja/Nee - Ja als J minimaal een keer voorkomt, anders Nee.
Jaar - Laagste leeftijd indien persoon Ja heeft, anders hoogste leeftijd.

Afbeeldingslocatie: https://tweakers.net/i/pddEnaZZQJ70_X8zOPYZ-lQ8mc4=/full-fit-in/4000x4000/filters:no_upscale():fill(white):strip_exif()/f/image/c0QSyVfiN80AR7MYfp8uzVYr.png?f=user_large

Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW


Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Hooz schreef op zomdag 3 december 2023 @ 11:44:
Thanks, dat werkt bijna perfect! Er is alleen nog 1 ding waar ik niet uit kom. Het kan zijn dat iemand er meer dan 2x in staat. Dus bijvoorbeeld 2x Ja en 1x Nee. In dat geval wil ik van de 2 Ja's de laagste leeftijd kiezen. Maar als iemand er 2 of meer keer in staat met alleen maar Nee, dan wil ik de oudste kiezen. Is daar misschien nog een handige oplossing voor?
Dan vertaal ik het even als volgt: komt een persoon een of meer keer voor met ja, dan laagste leeftijd van de 'ja', anders hoogste leeftijd van de 'nee'.

Ik zou in een hulpkolom de te behouden leeftijd plaatsen dmv =ALS(AANTALLEN.ALS(A:A;A1;B:B;"j")=0;MAX.ALS.VOORWAARDEN(C:C;A:A;A1);MIN.ALS.VOORWAARDEN(C:C;A:A;A1;B:B;"J")). In mensentaal: komt de naam niet voor met een ja, pak dan de hoogste leeftijd, anders neem de laagste leeftijd van de regels met een 'ja'. Knip de hulpkolom, plak hem als waarde en laat excel alle duplicaten verwijderen.

Het is me niet duidelijk of je de laagste van de 'ja' wilt of sowieso de laagste. Voor de aanpak maakt dat niet uit: als je sowieso de laagste wilt dan kun je het tweede criterium bij min.als weglaten.

[ Voor 11% gewijzigd door Lustucru op 03-12-2023 15:26 ]

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

Pagina: 1