• 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.

Sorteren uit Matrix

Status
Niet open voor verdere reacties.

swanwil

Gebruiker
Lid geworden
30 aug 2010
Berichten
165
Besturingssysteem
Windows 11
Office versie
Office 365 NL
Hallo,

Ik heb een Matrix met Nummers en Namen
Bij iedere naam hoort een bepaalde set nummers
Als een nummer bij een naam hoort staat in die cel een 1
Nu wil ik op een 2e tabblad de naam uit een lijst kunnen kiezen en dat vervolgens de bijbehorende nummers eronder vermeld worden.
Bijgevoegd een voorbeeld van mijn bestand. De nummers lopen op tot 1000 en er zijn zo'n 50 verschillende namen

Kan iemand me daarbij helpen?

Groeten, SwanwilBekijk bijlage Sorteren uit matrix.xlsx
 
Laatst bewerkt:
Hierbij een ideetje met een klein macrootje waarbij er in blad2 wordt gefilterd op kolom D.
Kijk maar of het wat is.

Groet
 

Bijlagen

Beste Joost1 en JeanPaul28,

ziet er prima uit. Dank daarvoor!
Ik ben niet thuis in macro's dus was het aan het proberen zonder macro.
Is dit ook mogelijk? Dan begrijp ik het zelf beter en kan ik het collega gebruikers ook weer uitleggen...
Anders ga ik de macro proberen te doorgronden.:shocked:

groet, Swanwil
 
was het aan het proberen zonder macro. Is dit ook mogelijk?
Ja, dat is mogelijk.
Stel in Blad2 cel B1 in met validatie, bereik: B1:AZ1
Typ op blad2 in B2 en kopieer naar beneden in kolom B:
Code:
=INDEX(Blad1!A$1:AZ$1000;VERGELIJKEN(A2;Blad1!A$1:A$1000;0);VERGELIJKEN(B$1;Blad1!A$1:AZ$1;0))
Het is voor jou misschien gemakkelijker als je de bereiken die in de formule staan een naam geeft.
 
@zapatr

Ik ben het met je eens dat het zonder macro kan.
Maar de formule zoals die nu gegeven is, leidt naar mijn mening niet tot de oplossing die swanwil voor ogen heeft aangezien naar getallen wordt gezocht uit kolom A van blad1.


Groet
 
Zou ik de vraag enigszins verkeerd begrepen hebben?
Ik begreep uit de indeling van blad 2 dat er in kolom A nummers worden ingevoerd en dat dan uit kolom B moest blijken (na keuze van de naam in B1) welke nummers bij de gekozen naam van toepassing zijn. Omdat de nummers al in kolom A staan, leek het mij dubbelop om die in kolom B ook nog eens te vermelden. Maar het kan wel, daarvoor moet mijn formule ietwat (maar niet veel) worden aangepast. De formule in B2 wordt dan:
Code:
=ALS(INDEX(Blad1!A$1:AZ$1000;VERGELIJKEN(A2;Blad1!A$1:A$1000;0);VERGELIJKEN(B$1;Blad1!A$1:AZ$1;0))>0;A2;"")
NB: De vragensteller heeft in zijn bestand de berekening op 'handmatig' ingesteld, niet erg handig voor vragenbeantwoorders.
 
Sorry voor de verwarring, maar het is inderdaad mijn bedoeling om een naam te kiezen uit een lijst op blad 2 cel B1 en dat daarna de bijbehorende nummers in kolom A opgesomd worden.

Dus als ik Jan kies, zou er in mijn voorbeeld in kolom A achtereenvolgens; 101, 106, 107, 108 moeten komen staan
Als ik Piet kies, zou er in mijn voorbeeld in kolom A achtereenvolgens; 102, 105, 107, 109, 112 moeten komen staan
Als ik Kees kies, zou er in mijn voorbeeld in kolom A achtereenvolgens; 103, 104, 107, 110, 111 moeten komen staan

Berekening staat bij mij standaard op handmatig omdat ik vaak in grote Excelbestanden werk die data uit andere servers moet ophalen wat behoorlijk lang kan duren.
Sorry voor het misverstand

Allen bedankt voor het meedenken maar ik krijg het nog niet voor elkaar met formule

Groet, Swanwil
 
@zapatr

Naar mijn mening heb je de vraag inderdaad enigszins verkeerd begrepen.
Zoals ik het begrepen heb, is het de bedoeling dat de getallen zoals die in kolom A van blad 2 vermeld staan gegeneerd moeten worden in kolom A op basis van de keuze van de naam in B1.

( N.B: Het is inderdaad heel vervelend dat de berekening op handmatig staat)
 
Prima oplossing van jou hoor, Jean-Paul !
Ik zocht nog even naar een oplossing zonder vba. Typ in A2 van blad2 en sluit af met Ctrl-Shift-Enter:
Code:
=ALS.FOUT(INDEX(Blad1!A$1:A$1000;KLEINSTE(ALS(INDIRECT("blad1!"&ADRES(1;VERGELIJKEN(Blad2!B$1;Blad1!A$1:AT$1;0))&":"&ADRES(1000;VERGELIJKEN(Blad2!B$1;Blad1!A$1:AZ$1;0)))=1;RIJ(A$1:A$1000));RIJ(1:1));1);"")
Formule kan een stuk korter gemaakt worden door bepaalde delen ervan en naam te geven.
 
Laatst bewerkt:
Nog een variant met gedefinieerde naam DataMatrix die zowel qua rijen als kolommen dynamisch is.
Code:
=Blad1!$A$1:INDEX(Blad1!$1:$1048576;AANTALARG(Blad1!$A:$A);AANTALARG(Blad1!$1:$1))

Voorwaarde is wel dat de matrix in Blad1!A1 begint (niet verplaatsen dus) en geen tussenliggende lege cellen in kolom A of rij 1.

Matrixformule in Blad2!A2 en gekopieerd naar beneden:
Code:
=ALS.FOUT(INDEX(DataMatrix;KLEINSTE(ALS(INDEX(DataMatrix;1;)=$B$1;ALS(DataMatrix=1;RIJ(DataMatrix)));RIJEN(A$2:A2));1);"")
 

Bijlagen

@ JeanPaul,
Ik krijg je formule niet werkend

De formule van zapatr werkt nu bij mij

Iedereen bedankt voor hun bijdrage!

Groet, swanwil
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan