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

Matrix zoeken

Status
Niet open voor verdere reacties.

Desiree2

Gebruiker
Lid geworden
3 sep 2010
Berichten
12
Hallo allemaal,

Ik loop stage bij een groenteboer en wij verkopen veel aan lokale winkeliers die 1 keep per week komen afrekenen.
Nou houd mijn baas dat bij op allemaal losse bonnetjes en heb ik dus voorgeteld om wat in excel voor hem te maken.

Ik heb nu een bestandje met 2 tabbladen, het eerste blad is een overzicht per klant en op het 2de blad staan de producten en klanten, omdat het om maar ongeveer 30 klanten gaat leek me dat wel zo eenvoudig.

Wat ik nu graag zou willen dat als ik op het eerste blad in A1 de klantnaam zet hij automatisch de gegevens ophaalt van blad 2.
Ik heb heel lang zitten stoeien met vert.zoeken en dat lukt ook wel maar dan moet ik alle productregels doen terwijl ik op het eerste blad alleen de producten wil hebben die die klant heeft afgenomen. Kan iemand mij helpen ? Ik heb een voorbeeldje mee gepost.

Groetjes Desiree
 

Bijlagen

Beste Desiree2,

Code:
Ik heb heel lang zitten stoeien met vert.zoeken en dat lukt ook wel

Kun je even het bestandje met jouw formules van vert.zoeken (op blad 1) plaatsen.

Op blad 1 staan nu geen formules (alleen waarden).
 
Beste Desiree2,

Code:
Ik heb heel lang zitten stoeien met vert.zoeken en dat lukt ook wel

Kun je even het bestandje met jouw formules van vert.zoeken (op blad 1) plaatsen.

Op blad 1 staan nu geen formules (alleen waarden).

Bij deze, ik bedoelde overigens horizontaal.zoeken.
Het probleem is dat ik dan op blad1 alle producten krijg, in dit voorbeeld zijn het er slechts 5 maar in werkelijkheid hebben we er ongeveer 100. Ik zou dat nog met VBA kunnen oplossen door elke rij waarin de waarde in kolom B 0 is te verbergen, maar dat lijkt mij erg omslachtig.

Groetjes Desiree
 

Bijlagen

bij onderstaande topic (o.a. #4) vind je met de index en vergelijken formule de waarden in een matrix.
dit kan je helpen bij het vullen van blad 1.
blijft dan wel het probleem bestaan dat je toch alle producten op blad 1 dient in te vullen

http://www.helpmij.nl/forum/showthr...mbineren-Echt-een-uitdaging?highlight=oeldere

oplossing 2

met VBA:
autofilter in blad 2 aanmaken
cel a1 van werkblad 1 opzoeken in rij 1 van blad 2
op deze persoon de autofilter toepassen als waarde > 0
kolom A en kolom (met de naam van persoon) copieren naar werkblad 1 cel a3

Nu ben ik zelf niet goed in VBA, maar voor autofilter en copieren heb ik code op dit forum gezien.

Misschien is dit een 1e aanzet tot de oplossing van jouw probleem.

Waarschijnlijk komen van andere forumleden ook reacties.
 
Laatst bewerkt:
oeldere,

Bedankt voor al je hulp. Ik ben met horz.zoeken in combinatie met VBA al een stuk verder gekomen en ik heb A1 een validatieveld gemaakt, alleen wordt me VBA code op deze manier wel heel lang voor 100 producten, misschien iemand een tip ?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Range("d2").Value = 0 Then Rows(2).Hidden = True
If Range("d2").Value > 0 Then Rows(2).Hidden = False
If Range("d3").Value = 0 Then Rows(3).Hidden = True
If Range("d3").Value > 0 Then Rows(3).Hidden = False
If Range("d4").Value = 0 Then Rows(4).Hidden = True
If Range("d4").Value > 0 Then Rows(4).Hidden = False
If Range("d5").Value = 0 Then Rows(5).Hidden = True
If Range("d5").Value > 0 Then Rows(5).Hidden = False
If Range("d6").Value = 0 Then Rows(6).Hidden = True
If Range("d6").Value > 0 Then Rows(6).Hidden = False
Application.ScreenUpdating = True
End Sub

Bijlage als zip gedaan want xlsb mag blijkbaar niet.

Groetjes
Desiree
 

Bijlagen

Laatst bewerkt:
Afgaande op je code zou je de gewijzigde rij al dan niet kunnen verbergen.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Rows(Target.Row).Hidden = Range("D" & Target.Row).Value = 0
End Sub

Wil je alle cellen controleren dan zou je aan een lus kunnen denken.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim lRij As Long
Dim lLaatsteRij As Long
    lLaatsteRij = Range("D" & Rows.Count).End(xlUp).Row
    For lRij = 2 To lLaatsteRij
        Rows(lRij).Hidden = Range("D" & lRij).Value = 0
    Next
Application.ScreenUpdating = True
End Sub
Het is aan te bevelen om in de code aan te geven wanneer deze moet worden gestart.
Nu wordt de code gestart bij elke wijziging. Dat is meestal niet gewenst.

Met vriendelijke groet,


Roncancio
 
Een aanpak gebaseerd op formules. Opgelet, sommige zijn matrix-formules.
 

Bijlagen

Een aanpak gebaseerd op formules. Opgelet, sommige zijn matrix-formules.

WHER, super dat is precies wat ik bedoel, zo hoef ik niet met VBA rijen te verbergen. Wel nog een vraagje, kun je uit leggen wat deze regel precies doet, want die snap ik niet
Code:
{=ZOEKEN(HERHALING("z";10);KIEZEN({1\2}
?

Daarnaast neem ik aan dat dit het enige stukje matrix formule is ? Dus eerst deze kopieren naar me echte bestand en afsluiten met alt+enter en dan de rest van de formule plakken ?

PS Roncancio jouw oplossing heb ik in een ander bestandje ook opgeslagen voor het geval dat ik toch op VBA terug moet vallen :-)

Groetjes
Desiree
 
Laatst bewerkt:
Dat stukje formule is gewoon de "errorcatching" die een lege string ("") geeft i.p.v. een foutmelding zoals "#N/A", toe te passen indien de formule normalerwijze een string als resultaat moet geven (bv. "appel"). Dit heeft dezelfde functie als =if(iserror(formule);"";formule). Ik gebruik dit omdat het in vele gevallen de formule korter maakt, maar om de werking nu haarfijn uit de doeken te doen is een ander paar mouwen.
 
Dat stukje formule is gewoon de "errorcatching" die een lege string ("") geeft i.p.v. een foutmelding zoals "#N/A", toe te passen indien de formule normalerwijze een string als resultaat moet geven (bv. "appel"). Dit heeft dezelfde functie als =if(iserror(formule);"";formule). Ik gebruik dit omdat het in vele gevallen de formule korter maakt, maar om de werking nu haarfijn uit de doeken te doen is een ander paar mouwen.

ahh ok, dat snap ik denk ik wel. Dus dat kan ik gewoon overnemen naar me hoofdbestand zonder bereik te hoeven aanpassen.
Dan is mijn vraag volgens mij bij deze opgelost.

Super bedankt allemaal.

Groetjes
Desiree
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan