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

meerdere gegevens in kolom op basis van overeenkomst

Status
Niet open voor verdere reacties.

Visara

Gebruiker
Lid geworden
10 mrt 2019
Berichten
217
Goedeavond,

Ik had wat moeite met het bedenken van een goede titel voor mijn vraag :) Ik hoop dat mijn screenshot duidelijkheid verschaft.

Kan iemand mij laten zien hoe ik dit voor elkaar krijg? (zonder XLOOKUP). Ik vermoed iets met INDEX, MATCH? Ik kreeg het zelf niet voor elkaar :(
Vraag Visara gegevens aanvullen screenshot.jpg

SHEET 1: Een Database (10.000 rijen, 30 kolommen)
SHEET 2: Een kolom waar de gebruiker Product_id's in kan plaatsen.
SHEET 3: De Product_id's van de gebruikers met bijbehorende gegevens uit andere kolommen uit de database. Kan met een simpele VLOOKUP functie, maar ik wil meer resultaten.

Mijn vraag: de gebruiker voert product_id's in in Sheet 2.
In Sheet 3 wil ik niet alleen de ingevoerde product_id's zien, maar ook de bijbehorende product_id's uit dezelfde kolom in de database. Bijbehorend = 'zelfde ean in kolom B'. Zie kleurtjes in de sheet.

Je zou mij een groot plezier doen als je mij kan helpen :)

Mvg, Visara
 

Bijlagen

  • Vraag Visara gegevens aanvullen.xlsx
    9,7 KB · Weergaven: 15
Inderdaad met met index vergelijken of de engelse versie.

Zie bijlage.
Blad 3 beveiligen voor de formules.
 

Bijlagen

  • Visara_Test.xlsx
    11,5 KB · Weergaven: 10
Helaas, dat is 'm niet. Toch bedankt voor uw poging. Ik heb misschien te onduidelijk uitgelegd wat ik nodig heb.
Als ik in uw sheet '200' invoer, krijg ik alleen regel 3 als resultaat. Ik had moeten krijgen: regel 2,3 en 4. Waarom: omdat ze dezelfde ean-code hebben (kolomA).
Vraag Visara gegevens aanvullen screenshot deel2.jpg

Er moet dus gezocht worden naar de overeenkomstige (unieke) waarde in Database kolom D (zie afbeelding). Vervolgens moet er de bijbehorende ean-code (kolomA) bij worden gezocht. Het resultaat moet zijn: geef alle regels met de gevonden ean-codes.
De waarde in kolom D heeft in kolom A een bijbehorende ean-code staan. Deze ean-code kan meerdere keren voorkomen, product_id's zijn uniek.
 
Laatst bewerkt:
Ik heb het inmiddels zelf voor elkaar gekregen. Dat wil zeggen: de formules kloppen en het werkt, maar het maakt excel zeer traag. En dan is dit nog maar de mini-versie van het echte bestand...

Ik gooi het over een andere boeg en ga kijken of ik dynamische filters in Power Query kan krijgen.
 
Hallo Visara, ik ben heel benieuwd naar jouw formules .
stuur eens een werkend voorbeeldje, daar kan ik wat van leren.
 
Ik ga mijn best doen om het compact uit te leggen :)

Achtergrond:
Een afdeling vraagt mij om en lijst van 100 verschillende producten in de reclame te zetten. Ze geven mij bijv 100 verschillende product_id's. Deze id's kan ik knippen-plakken in ons computerprogramma en ik voer een start- en einddatum en kortingpercentage in. Klaar is kees, zou je denken. Maarrr...
Ik krijg alleen de product_id's van de losse producten 'per 1'. Wij zetten een product ook vaak 'per 2' en 'per 4' op de site. Deze 'per 2' en 'per 4' moeten ook de reclame komen, maar hebben een andere product_id. Ik moet deze er steeds handmatig bij zoeken, want deze moeten dus óók in de reclame... De lijst van de 100 product_id's moet dus worden uitgebreid met de product_id's van de 'per 2' en 'per 4' etc. Wat de 'per 1', 'per 2' etc gemeen hebben met elkaar is de ean-code.

De sheet (zie bijlage voor de echte sheet):
Het doel is dus in dit voorbeeld de invoer [333,777] om te zetten in [333,444,555,777,888]:
Vraag Visara uitleg.jpg
De eerste stap is om de product_id om te zetten in ean.
Daarna gegevens uit de database (sheet Data) tonen op basis van de Rows waar de ean in voor komt. Daar heb ik een array-formule voor gebruikt. Dat is een formule die je op een speciale manier moet opslaan, met Ctrl-Shift + Enter. Er verschijnen dan accolades om de formule heen. De gewenste resultaten staan in kolom F. Hier gebruik je INDEX gecombineerd met MATCH formules voor. Er is online veel uitleg over te vinden.

Mijn voorbeeld sheet is heel klein, maar ondanks dat is de sheet heel erg traag; de formules zijn gewoon te zwaar voor excel. Het werkt dus zoals ik wil, behalve dan dat excel zal vastlopen als ik dit toepas op de echte productdatabase.

Ik ga het anders aanpakken. (dit zie je niet terug in mijn bijlage, hier moet ik nog mee beginnen:
Ik ga de product_id's nog steeds omzetten in ean (zie geel gearceerde velden), maar de blauwe velden ga ik wissen.
Ik ga dit gebruiken: https://www.exceldemy.com/excel-vba-advanced-filter-copy-to-another-sheet/
Ik ga Sheet: formules, kolom A gebruiken om de Sheet Data mee te filteren, zoals in de link is beschreven. Dit probeerde ik voor elkaar te krijgen, en toen zag ik jouw bericht :)
 

Bijlagen

  • Vraag Visara sheet bij uitleg.xlsx
    21,2 KB · Weergaven: 10
Laatst bewerkt:
bvb A:E is heel veel data
gebruik tabellen dat verkleint de hoeveelheid data .

als in kolom A van de Data gelijke getallen voorkomen werken jouw formules niet correct.

is vba een optie? dan zou ik geavanceerd filter gebruiken met een knopje om hem aan te roepen.
 
Laatst bewerkt:
Komt goed, kolom A is een index-kolom (123456 etc). Staan dus alleen unieke waarden in.
Ik gebruikte A:E omdat de productdatabase-grootte kan schommelen. Het zijn er enkele duizenden. Ik verwachtte dat excel niet élke cel in A:E1000000 (ofzo) af zou gaan, maar dat hij zou "weten" dat de onderkant leeg is en daar geen tijd aan zou besteden.

Mbv VBA filter ik op ean-code. Ik heb daar deze fijne formule voor gevonden (kolommen en Sheet-namen wijken iets af van het voorbeeldbestand). Het proces gaat nu soepel. "listEAN" zijn de naar ean omgezette product_id's.
Code:
Private Sub cmdProductIDs_Click()
Dim iRange As Range
Dim iCriteria As Range
[SIZE=1]'set the range to filter and the criteria range[/SIZE]
Set iRange = Sheets("Data").Range("A1:G15000")
Set iCriteria = Sheets("formules").Range("listEAN")
[SIZE=1]'copy the filtered data to the destination[/SIZE]
iRange.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=iCriteria, CopyToRange:=Sheets("Output_id_product").Range("A2:G15001"), Unique:=True
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan