• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Zoeken in table met meerdere criteria

Status
Niet open voor verdere reacties.

keesotto

Gebruiker
Lid geworden
12 mrt 2010
Berichten
9
Hoi allemaal,

ik ben opzoek naar een formule die zoekt naar een waarde van een cel met meerdere criteria.

In de excel een voorbeeld. Ik wil het beroep weten van iemand waarvan ik de naam, leeftijd en bloedgroep invoer.

Ik dacht dat dat met arrays altijd kon met sumproduct maar dat lukt me niet. Iemand een oplossing?

Dank,

Kees


Bekijk bijlage Vraag.xlsx
 
Met een helpkolom in kolom A.

Daarna met de formule vert.zoeken.

Zie het bijgevoegde bestand.
 

Bijlagen

  • (oeldere) Vraag.xlsx
    9 KB · Weergaven: 167
U zei SOMPRODUCT?
PHP:
=INDEX($D$2:$D$10;SOMPRODUCT(($A$2:$A$10=F17)*($B$2:$B$10=F18)*($C$2:$C$10=F19)*ROW($D$2:$D$10))-1)
Nou vraag ik me alleen af waarom je een sleutel zou willen samenstellen uit deze drie velden. Meestal is de naam al een geschikte sleutel, maar voor de zekerheid zou je inderdaad de leeftijd er nog bij kunnen nemen. Dus waarom ook nog de bloedgroep?
 
Het kan inderdaad ook met SOMPRODUCT.
Edit: zoals Timshel ook al aangeeft. Onderstaande formule in het bestand met de hulpkolom.
Code:
=INDEX($E$2:$E$10;SOMPRODUCT(($B$2:$B$10=$G$17)*($C$2:$C$10=$G$18)*($D$2:$D$10=$G$19)*(RIJ($E$2:$E$10)-RIJ($E$2)+1)))
 
Laatst bewerkt:
Of met de volgende matrixformule:
Code:
=INDEX(D2:D10;VERGELIJKEN(F17&F18&F19;A2:A10&B2:B10&C2:C10;0))
 
dan ook de oplossing met een draaitabel toegevoegd.
 

Bijlagen

  • (oeldere) Lookup Based on Multiple Conditions.xlsx
    109,7 KB · Weergaven: 180
Mij lijkt dit voldoende:

PHP:
=INDEX(D1:D10;SUMPRODUCT((A1:A10=F17)*(B1:B10=F18)*(C1:C10=F19)*ROW(1:10)))
 
Mij lijkt dit voldoende:

PHP:
=INDEX(D1:D10;SUMPRODUCT((A1:A10=F17)*(B1:B10=F18)*(C1:C10=F19)*ROW(1:10)))

Dat is inderdaad beknopter.

Ik hanteer altijd de constructie zoals in post #4: RIJ($E$2:$E$10)-RIJ($E$2)+1.
Die is wat robuuster (gaat nog steeds goed als er extra kopregels ingevoegd worden boven regel 1).

Het is maar net waar je voorkeur naar uitgaat.
 
Die is wat robuuster (gaat nog steeds goed als er extra kopregels ingevoegd worden boven regel 1)
Dat lijkt me niet. Beide zijn gelijk op dat aspekt.

In termen van redundantie is de toevoeging van de kolom bij Row(1:10) echt overbodig.
 
Laatst bewerkt:
Dat lijkt me niet. Beide zijn gelijk op dat aspekt.

In termen van redundantie is de toevoeging van de kolom bij Row(1:10) echt overbodig.

Als je een rij invoegt boven rij 1, dan wordt row(1:10) row(2:11).
Het opnemen van de kolom laat ook toe dat de gehele datareeks verplaatst wordt.

Maar zoals gezegd is het ook een kwestie van persoonlijke voorkeur.
 
Zet het in tekst.
Code:
*RIJ(INDIRECT("1:10"))))
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan