index/match met gefilterde data

Status
Niet open voor verdere reacties.

JVLDR

Gebruiker
Lid geworden
11 okt 2017
Berichten
25
Goedenmiddag allen,

Stel u het volgende databestand met 3 kolommen voor (maar dan met een vele malen groter aantal rijen):

aa 2 x
aa 4 y
aa 7 z
bb 16 a
bb 11 b
bb 5 d
cc 8 m
cc 2 k


De eerste kolom is een 'hoofdgroep' en ik wil van een hoofdgroep weten welke letter (uit kolom 3) er bij een specifiek cijfer (kolom 2) hoort. Dus: Stel mijn 'invoer' is bb en 11. Dan zou er b uit moeten komen.

Nu dacht ik dat als volgt aan te pakken met een macro: Eerst sorteer ik de complete dataset op hoofdgroep (dit lukt) om vervolgens met een index/match combinatie in een cel de juiste data er uit te plukken. Zie code ter verduidelijking:


Code:
'filter de dataset (criteria1 verwijst naar een cel waarin de benodigde hoofdgroep staat)

Worksheets("naam").Range("A1").AutoFilter Field:=1, Criteria1:=Worksheets("naam").Range("B1")


'haal de juiste data uit de dataset 
With ActiveSheet
.Range("I2").Formula = "=INDEX('bladnaam'!I:I,MATCH('bladnaam'!B2,'bladnaam'!C:C,0))" 
.Range("I2:I" & LR).FillDown
.Range("I1:I" & LR).Font.Bold = True
.Range("I1:I" & LR).HorizontalAlignment = xlCenter
.Range("I1") = "naam kolom"
.Range("I:I").EntireColumn.AutoFit
End With

Ik fantastisch blij dat ik dat werkend heb gekregen, loop ik (verrassing) tegen het volgende aan: Hij negeert het filter. Aangezien in kolom 2 een cijfer meerdere keren voor kan komen, leidt dit er dus toe dat hij niet de juiste data uit kolom 3 pakt. M.a.w: Als ik in bovenstaand voorbeeld hoofdgroep "CC" en getal "2" zou selecteren, is de uitkomst "x" terwijl ik "k" zou moeten hebben.

Nu heb ik een tweeledige vraag:

1) Kan ik dit zo doen dat hij wél rekening houdt met het fliter
2) Als dit niet kan, hoe los ik het dan op?

alvast bedankt!
 
Ik zou het met een formule doen.

Code:
=ALS.NB(ZOEKEN(2;1/((A2:A1000=G1)*(B2:B1000=G2));C2:C1000);"")
 

Bijlagen

  • dubbele_match.xlsx
    10,6 KB · Weergaven: 40
Laatst bewerkt:
Zonder bestand kan ik mij er niet veel bij voorstellen.
 
Beste SjonR

Deze formule werkt inderdaad voor mij en het lukt me ook hem middels een macro in een cel te 'plaatsen'. Dit is noodzakelijk omdat het betreffende werkblad waarin de output moet komen te staan óók ter plekke gecreëerd wordt middels een macro.

Nu is het echter zo dat ik nog niet zo goed begrijp wat deze formule precies doet. Ik hoe een basis zoeken functie werkt en volgens mij zie ik dat er hier gespeeld wordt met 'waar' en 'onwaar', zoals dat ook kan met een somproduct formule. Wat ik niet snap is oa hoe dit een zoekvector oplevert en waarom '2' de zoekwaarde is. Google levert tot nu toe weinig op wat bij mij voor een beter begrip zorgt, maar ik zoek (haha) nog even verder. Mogelijk heeft u een zinvolle link voor mij, of een beknopte uitleg? Een lang epos zal ik uiteraard niet van u vragen hier ;)


hartelijk dank!
 
Gewone formule:

PHP:
=INDEX(C1:C9;SUMPRODUCT((A1:A9&B1:B9=G1&G2)*ROW(1:9)))

of Matrixformule

PHP:
=INDEX(C1:C9;MATCH(G1&G2;A1:A9&B1:B9;0))
 
Laatst bewerkt:
Bedankt snb

Deze oplossingen werken ook prima én begrijp ik!
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan