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