Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Opzoeken in matrix

199 views
Skip to first unread message

vincent

unread,
Sep 24, 2010, 8:34:44 AM9/24/10
to
Beste forumers,

Op 10 sept heb ik een vraag gesteld mbt opzoeken van een waarde in een
matrix. Gezien het geringe aantal reacties heb ik het vermoeden dat
het niet zo eenvoudig is.
Nog even in het kort samengevat:

Ik wil een unieke waarde opzoeken in een tabelmatrix (zeg A1:H15) en
de gezochte formule moet verwijzen naar de kolomtitel in rij 1.

Is dit samen te vatten in een formule of wordt het VBA?
Kan iemand me op weg helpen?

Vincent

Maurrieske

unread,
Sep 25, 2010, 7:53:20 AM9/25/10
to
Vincent, het feit dat je weinig antwoorden krijgt ligt niet zozeer aan de
moeilijkheid van de vraag, maar aan het feit dat deze nieuwsgroep niet meer
ondersteund wordt.
De oplossing voor jouw vraag is onderstaande UDF(User defined function).
Plaats deze maar op een moduleblad.

Function eerste_uniekewaarde(bereik As Range)
For Each i In bereik
If WorksheetFunction.CountIf(bereik, i.Value) = 1 Then
eerste_uniekewaarde = Cells(1, i.Column).Value
Exit Function
End If
Next
eerste_uniekewaarde = "geen unieke waarde in bereik"
End Function


De te gebruiken formule is:
=eerste_uniekewaarde(A2:H15)

Ik pak met opzet niet A1:H15 omdat anders de kolomtitels meegenomen worden
in de formule. En indien de kolomtitels uniek zijn zal de uitkomst altijd de
kolomtitel in A1 zijn.
Indien er geen unieke waardes voorkomen in het bereik zal de uitkomst "geen
unieke waarde in bereik" zijn.

Succes,

Maurrieske

"vincent" <vincent...@hotmail.com> schreef in bericht
news:7a836afc-7ef8-41c2...@c32g2000vbq.googlegroups.com...

Tonny

unread,
Sep 25, 2010, 2:54:51 PM9/25/10
to
Hoi Vincent,

Ik weet niet of ik je vraag goed begrijp maar ik dacht het volgende:

Als voorbeeld een stukje excelblad met in regel 1 de kolomtitels (
kolomA,B,C,D en E )
A B C D
E F G
1 KOLOM A KOLOM B KOLOM C KOLOM D KOLOM E
kleren
2 fiets pet stoel kom
bos
3 hoed kast kleren klas
bloem
4 tol boom roos vis
vuur
5
6
7 kleren

In cel A7 typ je het woord dat je in de matrix A2:E4 wilt zoeken.
In dit geval heb ik kleren getypt maar kan ook een ander woord zijn.
Typ in cel G1: =A7 ( het woord kleren zal dan in dit geval in deze cel
verschijnen ).
Als je A7 verandert dan verandert G1 uiteraard ook.
We gaan nu eerst kijken of het woord dat in A7 staat in rij 2 voor komt.
Hiervoor typen we de volgende regel in F2.
=ALS(A2=$A$7;KOLOM(A2);ALS(B2=$A$7;KOLOM(B2);ALS(C2=$A$7;KOLOM(C2);ALS(D2=$A$7;KOLOM(D2);ALS(E2=$A$7;KOLOM(E2);"")))))
Als het woord dat we zoeken ( A7) in deze regel voor komt komt in F2 een
getal te staan ( 1,2,3,4 of 5 )
Het getal geeft aan in welke kolom het woord dan staat ( kolom A,B,C,D of E)
Als het woord niet in deze regel staat blijft de cel leeg.
Hetzelfde doen we nu in F3, we typen daarvoor het volgende
=ALS(A3=$A$7;KOLOM(A3);ALS(B3=$A$7;KOLOM(B3);ALS(C3=$A$7;KOLOM(C3);ALS(D3=$A$7;KOLOM(D3);ALS(E3=$A$7;KOLOM(E3);"")))))
Hetzelfde als hierboven:
Als het woord dat we zoeken ( A7) in deze regel voor komt komt in F3 een
getal te staan ( 1,2,3,4 of 5 )
Het getal geeft aan in welke kolom het woord dan staat ( kolom A,B,C,D of E)
Als het woord niet in deze regel staat blijft de cel leeg.
In F4 typen we hetvolgende:
=ALS(A4=$A$7;KOLOM(A4);ALS(B4=$A$7;KOLOM(B4);ALS(C4=$A$7;KOLOM(C4);ALS(D4=$A$7;KOLOM(D4);ALS(E4=$A$7;KOLOM(E4);"")))))
Ook hier weer
Als het woord dat we zoeken ( A7) in deze regel voor komt komt in F4 een
getal te staan ( 1,2,3,4 of 5 )
Het getal geeft aan in welke kolom het woord dan staat ( kolom A,B,C,D of E)
Als het woord niet in deze regel staat blijft de cel leeg.

Als het goed is staat er nu in F3 het getal 3 ( als je kleren in A7 hebt
getypt )
Deze 3 geeft aan dat het gezochte woord in kolom 3 staat.
F2 en F4 zijn als het goed is leeg.
Je kunt nu ieder willekeurig woord uit de matrix in A7 typen en er zal een
getal in F2,F3 of F4 verschijnen.
Als je een woord typt dat niet voorkomt in de matrix dan zullen de cellen F2
t/m F4 leeg blijven.

Als je het beeld mooier wilt maken typ je in cel G2:
=ALS(F2=1;"staat in kolom A";ALS(F2=2;"staat in kolom B";ALS(F2=3;"staat in
kolom C";ALS(F2=4;"staat in kolom D";ALS(F2=5;"staat in kolom E";"")))))
In G3:
=ALS(F3=1;"staat in kolom A";ALS(F3=2;"staat in kolom B";ALS(F3=3;"staat in
kolom C";ALS(F3=4;"staat in kolom D";ALS(F3=5;"staat in kolom E";"")))))
In G4:
=ALS(F4=1;"staat in kolom A";ALS(F4=2;"staat in kolom B";ALS(F4=3;"staat in
kolom C";ALS(F4=4;"staat in kolom D";ALS(F4=5;"staat in kolom E";"")))))
In G5:
=ALS(EN(G2="";G3="";G4="");"geen overeenkomstig woord gevonden";"")

Als je nu kleren typt in A7 dan zal in F3 een 3 staat en in G3 "staat in
kolom C".
Je zou kolom F kunnen verbergen.
In G1 staat het gezochte woord en in de cel eronder (G3) staat "staat in
kolom C"
Dit zal nu zo voor ieder getypt woord gelden.
Als je eemn woord typt dat niet voorkomt in de matrix komt in G5 te staan :
"geen overeenkomstig woord gevonden".

Dit lijkt veel typwerk maar door de dollartekens kun je de formules
doorvoeren.
Ik ben niet goed thuis in macro's vandaar dat ik op deze , misschien iet wat
omslachtige, methode ben gekomen.

Hoop dat je hier wat aan hebt.

Groet Tonny


"vincent" <vincent...@hotmail.com> schreef in bericht
news:7a836afc-7ef8-41c2...@c32g2000vbq.googlegroups.com...

Tonny

unread,
Sep 25, 2010, 3:12:31 PM9/25/10
to
Zie dat het excelblad niet goed overgekomen is dus nog een keer

A B C D E F
G
1 kolom A kolom B kolom C kolom D kolom E kleren

2 fiets pet stoel kom bos
3 hoed kast kleren klas bloem
4 tol boom roos vis vuur
5
6
7 kleren

Hopelijk nu duidelijker

Tonny

"Tonny" <tonny....@home.nl> schreef in bericht
news:6f0ca$4c9e456e$541dc8b0$20...@cache3.tilbu1.nb.home.nl...

Maurrieske

unread,
Sep 26, 2010, 4:18:57 AM9/26/10
to
Je loopt hier tegen een maximum van 7 keer nesten van de ALS formule op
indien het bereik te groot wordt. Je kunt beter gebruik maken van
=VERGELIJKEN($A$7;A2:E2;0) in cel F2. Deze kun je vervolgens doorkopieren
naar beneden.


Onderstaande functie doet hetzelfde in een keer. Kopieer de code naar een
moduleblad in de VBA editor.

Function kolomkop_waarde(zoekwaarde As String, bereik As Range)


For Each i In bereik

If LCase(i.Value) = LCase(zoekwaarde) Then
kolomkop_waarde = Cells(1, i.Column).Value


Exit Function
End If
Next

kolomkop_waarde = "niet gevonden"
End Function

De te gebruiken formule is nu
=kolomkop_Waarde(A7;A2:E4)
er van uitgaande dat de zoekwaarde ingevoerd wordt in cel A7 en het
zoekbereik A2 t/m E4 is en in rij1 de kolomkoppen staan die je wil opvragen.

Groetjes,

Maurrieske

"Tonny" <tonny....@home.nl> schreef in bericht

news:5bbed$4c9e4999$541dc8b0$30...@cache3.tilbu1.nb.home.nl...

Tonny

unread,
Sep 26, 2010, 4:49:20 AM9/26/10
to
Hoi Maurrieske,

Volgens mij geeft jouw oplossing een foutmelding als het te zoeken woord
niet in de regel voor komt.
Jouw oplossing met behulp van macro's zal wel makkelijker zijn maar ik ben
niet goed thuis in het werken hiermee
vandaar dat ik zoiets met formules ( in verschillende stappen ) probeer op
te lossen.

Groet Tonny

"Maurrieske" <maurr...@hotmail.com> schreef in bericht
news:e05b5$4c9f02f6$541c2006$20...@cache4.tilbu1.nb.home.nl...

Maurrieske

unread,
Sep 26, 2010, 8:36:26 AM9/26/10
to
Je hebt helemaal gelijk Tonny. Deze foutmelding kun je echter weer afvangen
met
=ALS(ISFOUT(VERGELIJKEN($A$7;A2:E2;0));"";VERGELIJKEN($A$7;A2:E2;0))
Indien de waarde niet gevonden wordt zal de uitkomst een lege cel zijn.

Voor wat betreft het maken van macro's kan ik zeggen dat dit redelijk
eenvoudig is. Ik kan het je aanbevelen om je daar eens in te verdiepen. Het
gaat uiteraard veel verder dan het alleen maken van eigen functies (lees
formules). Je kunt in Excel een heleboel automatiseren en eventueel ook op
gebeurtenissen (waarde in een blad verandert of de celwijzer wordt
verplaatst) laten reageren. Op die manier wordt werken met Excel veel
leuker.

Indien je er iets meer van wil leren moet je het maar laten weten.

Maurrieske

"Tonny" <tonny....@home.nl> schreef in bericht

news:69720$4c9f0902$541dc8b0$28...@cache2.tilbu1.nb.home.nl...

Tonny

unread,
Sep 26, 2010, 2:37:07 PM9/26/10
to
Hoi Maurrieske,

Ik heb in het verleden wel wat met macro's gedaan maar ben eigenlijk nooit
verder gekomen dan het werken met de macrorecorder.
Je komt al snel met het probleem te zitten dat wat jij wilt niet met de
recorder kan.
Ook het werken met werkbladknoppen heb ik toegepast maar het automatisch
starten van een macro bij een gebeurtenis is me nog nooit gelukt.
Het is me gewoon niet duidelijk hoe ik hieraan moet beginnen.
Verschillende boeken hebben me ook niet echt verder geholpen omdat de
stappen die daarin gemaakt werden voor mij toch te groot waren.
Misschien dat jij een titel van een boek hebt dat wel heel geleidelijk
uitleg geeft ?
Ben erg geïnteresseerd.

Tonny

"Maurrieske" <maurr...@hotmail.com> schreef in bericht

news:26a60$4c9f3f4d$541c2006$18...@cache4.tilbu1.nb.home.nl...

Maurrieske

unread,
Sep 27, 2010, 2:40:41 PM9/27/10
to
Ik weet niets van boeken af, maar ik kan wel uitleg geven over het maken van
event macro's en gewone macro's. Het leuke aan werken met macro's is dat je
bijna alles kunt maken.

Ik kan jou wel helpen hiermee indien je dat wil. Dat zal echter wel enkel
gebeuren op tijden die ik beschikbaar heb en zin heb (meestal weekenden).
Tevens zal dit niet via deze nieuwsgroep gaan maar via de mail. Mail maar
naar mij via beantwoorden in plaats van groep beantwoorden. Dan zal ik je
verder helpen.
Dinsdags heb ik echter nooit tijd. Dus ik zal pas op zijn vroegst woensdag
antwoorden.

Groetjes,

Maurrieske

"Tonny" <tonny....@home.nl> schreef in bericht

news:68df8$4c9f92c7$541dc8b0$83...@cache3.tilbu1.nb.home.nl...


> Hoi Maurrieske,
>
> Ik heb in het verleden wel wat met macro's gedaan maar ben eigenlijk nooit
> verder gekomen dan het werken met de macrorecorder.
> Je komt al snel met het probleem te zitten dat wat jij wilt niet met de
> recorder kan.
> Ook het werken met werkbladknoppen heb ik toegepast maar het automatisch
> starten van een macro bij een gebeurtenis is me nog nooit gelukt.
> Het is me gewoon niet duidelijk hoe ik hieraan moet beginnen.
> Verschillende boeken hebben me ook niet echt verder geholpen omdat de
> stappen die daarin gemaakt werden voor mij toch te groot waren.
> Misschien dat jij een titel van een boek hebt dat wel heel geleidelijk
> uitleg geeft ?

> Ben erg geďnteresseerd.

vincent

unread,
Sep 28, 2010, 2:50:49 AM9/28/10
to
Beste Maurrieske en Tonny,

Ik ga er nog even goed voor zitten, maar met jullie tips gaat het
zeker lukken.
Bedankt voor jullie hulp.

Groeten,
Vincent

0 new messages