Excel vraagje...(Query?)

Windows, Android, iOS, Linux, Chrome OS, ...
Plaats reactie
Koelreuteria
Pro Member
Pro Member
Berichten: 385
Lid geworden op: 25 mei 2006, 01:30
Uitgedeelde bedankjes: 42 keer
Bedankt: 6 keer

Een vraagje van een Excel beginner voor de kenners hier:
Stel ik moet twee Excel rekenbladen met elkaar gaan combineren en daaruit data kopiëren. Data uit excel2 moet in excel1 komen.
Concreet:
Rekenblad excel1 bevat e-mail adressen
Rekenblad excel2 bevat dezelfde e-mail adressen en voornaam + naam.
Nu wil ik excel1 de juiste gegevens (voornaam + naam) krijgen bij het e-mail adres. De lijsten zijn uiteraard "willekeurig" in lengte.
'k Heb hier een soort stappenplan gevonden, maar 'k geloof dat het niet past met de versie van Excel die ik gebruik (versie 2010)
http://www.lochem.net/excel/1001.html
Google heeft veel resultaten.. Dus bos & bomen probleem. :-(
Kan iemand mij uit de brand helpen met een werkend voorbeeld of een link naar een tutorial die past voor mij?

Mijn dank zal groot zijn! ;-)
Gebruikersavatar
heist_175
Elite Poster
Elite Poster
Berichten: 13045
Lid geworden op: 07 okt 2010, 09:35
Locatie: Kempen
Uitgedeelde bedankjes: 433 keer
Bedankt: 856 keer

Je maakt een vlookup van werkblad1 naar werkblad2

Stel:
- werkblad1: email (kolom A)
- werkblad2: email+naam+tel (kolom A, B, C)
en beide werkbladen hebben niet hetzelfde aantal etc

dan doe je het volgende:
in cel B1 van werkblad1 zet je: =vlookup(A1;Werkblad2!A:C;2;FALSE)
-> Excel gaat in "werkblad2" in kolom A zoeken naar een match met "werkblad1/A1"
--> eens een match gevonden, gaat ie in cel B1 de waarde van de 2de kolom geven uit de range van werkblad 2 (in dit geval "A" +1 = "B" -> kolom B)
---> de "FALSE" duidt op een exacte match: [email protected] zal geen correcte match geven als je in werkblad1/A1 "[email protected]" had staan
in cel C1 van werkblad1 zet je: =vlookup(A1;Werkblad2!A:C;3;FALSE)
Koelreuteria
Pro Member
Pro Member
Berichten: 385
Lid geworden op: 25 mei 2006, 01:30
Uitgedeelde bedankjes: 42 keer
Bedankt: 6 keer

Na wat puzzelen, blijkt het in de Nederlandstalige Excel het te gaan over VERT.ZOEKEN()
'k Ga daar eens mee experimenteren.
Toch nog enkele bedenkingen:
- werkblad 1, met de e-mails, kan zowel 25 als 10 000 adressen bevatten. De formule telkens zover slepen zal wat onhandig zijn vrees ik?
- werkblad twee is een bestand die telkens van naam verandert... Telkens de formule's gaan aanpassen?

Vandaar dat ik even dacht aan een query, zodat e.e.a. geautomatiseerd kan verlopen.
Maar hoe daar aan te beginnen... Heb hier helemaal geen kaas van gegeten. :-(
axs
Moderator
Moderator
Berichten: 2548
Lid geworden op: 18 dec 2010, 11:56
Uitgedeelde bedankjes: 445 keer
Bedankt: 215 keer

Je tabel omzetten in een 'lijst'
Kan je doen door de volledige tabel te selecteren en dan CtRl+L
Als je nu een formule invoert in een kolom, zal deze die automatisch dynamisch aanpassen, ook al boeg je rijen / kolommen toe.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Koelreuteria schreef:Toch nog enkele bedenkingen:
Ik heb ook een bedenking... Excel is een rekenblad, geen database. Misschien eens overwegen de juiste tool te gebruiken ?

Ik herinner me zo secretaresses die hun brieven in Excel maakten omdat het eenvoudiger was met kolommen te werken :bang:
fvhbrugge
Elite Poster
Elite Poster
Berichten: 1584
Lid geworden op: 23 nov 2008, 20:38
Uitgedeelde bedankjes: 99 keer
Bedankt: 120 keer

Excel heeft wel degelijk enkele basis-database functies en is uitstekend geschikt voor eenvoudige database bewerkingen en zoals OP nodig heeft.

Complexere zaken dienen natuurlijk in een echte database afgehandeld.
Koelreuteria
Pro Member
Pro Member
Berichten: 385
Lid geworden op: 25 mei 2006, 01:30
Uitgedeelde bedankjes: 42 keer
Bedankt: 6 keer

r2504 schreef:Ik heb ook een bedenking... Excel is een rekenblad, geen database. Misschien eens overwegen de juiste tool te gebruiken ?
Weet ik, maar Access zit niet in het Office pakket die ik gebruik...
philippe_d
Moderator
Moderator
Berichten: 16487
Lid geworden op: 28 apr 2008, 11:22
Locatie: Waregem
Uitgedeelde bedankjes: 820 keer
Bedankt: 2998 keer

Ik ben het eigenlijk niet eens met deze kritiek.

Een timmerman die zal natuurlijk zijn professionele verstekzaag gebruiken, ook een loodgieter zal de juiste tools gebruiken voor zijn koppelingen, enz ...
Maar een doe-het-zelver behelpt zich met het materiaal dat hij heeft, en zal geen circelzaag kopen om één plankje te zagen :wink:

Akkoord dat Excel geen echte Database is, maar de Database functies die Excel bevat zijn toch redelijk uitgebreid, en waarschijnlijk méér dan genoeg voor wat de OP wil.

Secretaresses die hun brieven in Excel maken is natuurlijk grappig, die worden geacht Word Experts te zijn.
Maar voor een eenvoudig document die tabellen bevat (vb factuurke) zal ik ook Excel gebruiken ...
VoIP: WeePee (vaste nummers geporteerd), Sipgate.de, Sipgate.co.uk, MegaVoip (uitgaand België).
Provider: Proximus Start (60/4 mbps down/up).
Modem/Router: Fritz!Box 7590 int, OS 07.39-97058 BETA, profiel 100/35.
Telefoon centrale: Euracom 181 achter FritzBox So.
TV: Telenet CI+, Fritz!DVB-C.
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Koelreuteria schreef:Weet ik, maar Access zit niet in het Office pakket die ik gebruik...
Geen idee welke versie je gebruikt maar in Office365 is het sinds kort terug beschikbaar (is een tijd eruit genomen).

Ik ken de exacte omstandigheden ook niet en weet niet of dit werk gerelateerd is... maar ik krijg kippevel als gebruikers data uit andere systemen gaan trekken en deze hun eigen leven begint. Eerst en vooral zijn dat enorme risico's (als een laptop gestolen wordt ligt plots eventueel gevoelige data op straat), en erger is dat de wijzigingen op dergelijke data nooit nog terug geraken naar het centrale systeem. Dit in combinatie met ondersteuning naar toekomstige versies (bv. mensen die iets gemaakt hadden in Access waarbij deze dan plots verdwijnt uit Office365) is het de nachtmerrie voor iedere IT afdeling.

Voor privé doeleinden spelen die dingen natuurlijk niet en zijn de beschikbare tools/kennis ook vaak veel beperkter.
tb0ne
Elite Poster
Elite Poster
Berichten: 1017
Lid geworden op: 24 aug 2012, 11:49
Uitgedeelde bedankjes: 28 keer
Bedankt: 84 keer

De andere kant is natuurlijk dat een gebruiker soms dingen nodig heeft die niet zomaar uit het centraal systeem kunnen komen of waarvoor IT geen tijd heeft of de middelen niet krijgt.
Zoals door anderen gezegd, vlookup met eventueel een macro moeten volstaan in dit geval denk ik.
Gebruikersavatar
heist_175
Elite Poster
Elite Poster
Berichten: 13045
Lid geworden op: 07 okt 2010, 09:35
Locatie: Kempen
Uitgedeelde bedankjes: 433 keer
Bedankt: 856 keer

Zonder macro heeft vaak de voorkeur, omdat het niet tegengehouden zal worden door mailfilters.
In dit geval zie ik geen reden om een macro te gebruiken.
Koelreuteria
Pro Member
Pro Member
Berichten: 385
Lid geworden op: 25 mei 2006, 01:30
Uitgedeelde bedankjes: 42 keer
Bedankt: 6 keer

r2504 schreef:
Koelreuteria schreef:Weet ik, maar Access zit niet in het Office pakket die ik gebruik...
Geen idee welke versie je gebruikt maar in Office365 is het sinds kort terug beschikbaar (is een tijd eruit genomen).

Ik ken de exacte omstandigheden ook niet en weet niet of dit werk gerelateerd is... maar ik krijg kippevel als gebruikers data uit andere systemen gaan trekken en deze hun eigen leven begint. Eerst en vooral zijn dat enorme risico's (als een laptop gestolen wordt ligt plots eventueel gevoelige data op straat), en erger is dat de wijzigingen op dergelijke data nooit nog terug geraken naar het centrale systeem. Dit in combinatie met ondersteuning naar toekomstige versies (bv. mensen die iets gemaakt hadden in Access waarbij deze dan plots verdwijnt uit Office365) is het de nachtmerrie voor iedere IT afdeling.

Voor privé doeleinden spelen die dingen natuurlijk niet en zijn de beschikbare tools/kennis ook vaak veel beperkter.
1. 'k Heb enkel de beschikking over Excel 2010...
2. vrijwilligerswerk...
3. er komen twee .csv bestanden aan te pas.
4. ik ken en deel je bezorgdheid i.v.m. dataconsistentie, maar in deze situatie speelt het niet.
5. data die ik ontvang is geanonimiseerd en tb0ne heeft een punt.
6. concreet probleem even opnieuw schetsen, maar nu meer concreet, minder "familiaal":

Ik moet (... mag...) twee Excel rekenbladen met elkaar gaan combineren en daaruit data kopiëren.
Data uit excel2 moet in excel1 komen.
Concreet:
Rekenblad excel1 bevat enkel een reeks e-mail adressen die ook in excel2 voorkomen.
Rekenblad excel2 bevat uitgebreide lijst aan e-mail adressen en een vier cijferige code.
Nu wil ik excel1 de juiste nummercode "plakken" uit excel2 aan het het bijhorende e-mail adres die voorkomt in excel1. De lijsten zijn uiteraard "willekeurig" in lengte.

De tip om verticaal te zoeken is een gouden start, maar 'k zou het wat meer willen automatiseren, zoals hier is beschreven:
http://www.lochem.net/excel/1001.html
Maar het stappenplan past blijkbaar niet voor Excel 2010.
Vandaar mijn vraag of hier iemand mij op het juiste pad - of een werkend stappenplan - kan zetten. ;-)
Gebruikersavatar
heist_175
Elite Poster
Elite Poster
Berichten: 13045
Lid geworden op: 07 okt 2010, 09:35
Locatie: Kempen
Uitgedeelde bedankjes: 433 keer
Bedankt: 856 keer

@stappenplan
Alleen het lezen van dat stappenplan duurt langer dan het realiseren van de VLOOKUP :)
fvhbrugge
Elite Poster
Elite Poster
Berichten: 1584
Lid geworden op: 23 nov 2008, 20:38
Uitgedeelde bedankjes: 99 keer
Bedankt: 120 keer

Koelreuteria schreef: Ik moet (... mag...) twee Excel rekenbladen met elkaar gaan combineren en daaruit data kopiëren.
Data uit excel2 moet in excel1 komen.
Concreet:
Rekenblad excel1 bevat enkel een reeks e-mail adressen die ook in excel2 voorkomen.
Rekenblad excel2 bevat uitgebreide lijst aan e-mail adressen en een vier cijferige code.
Nu wil ik excel1 de juiste nummercode "plakken" uit excel2 aan het het bijhorende e-mail adres die voorkomt in excel1. De lijsten zijn uiteraard "willekeurig" in lengte.

De tip om verticaal te zoeken is een gouden start, maar 'k zou het wat meer willen automatiseren, zoals hier is beschreven:
http://www.lochem.net/excel/1001.html
Maar het stappenplan past blijkbaar niet voor Excel 2010.
Vandaar mijn vraag of hier iemand mij op het juiste pad - of een werkend stappenplan - kan zetten. ;-)
VLOOKUP (of vert.zoeken() ) dat is toch gewoon volledig automatisch? De correcte formule 1000x kopiëren dat gaat binnen 5 seconden !

hierbij de uitgeschreven formule voor nederlandstalige excel:
=VERT.ZOEKEN(A2;[excel2.xlsx]Blad1!$A$1:$B$1000;2;ONWAAR)

dat is zoeken naar mail uit cel A2 in de range uit de EXCEL2 tussen A1 en B1000 ,met mail in kolom A en code in kolom B

ONWAAR is nodig omdat bij onbestaand mailadres het dichtst benaderend mail adres gekozen wordt, hetgeen uiteraard verkeerd is.

uitleg over vertikaal zoeken : http://www.exhelp.be/formules/functies/348

en een extraatje: andere manier van zoeken: http://www.exhelp.be/formules/functies/969
INDEX() en VERGELIJKEN() als alternatief voor VERT.ZOEKEN()
Héél interessant, beetje moeilijker dan vertikaal zoeken maar heeft meer mogelijkheden
Het is een combinatie van INDEX() en VERGELIJKEN()
schizm
Starter
Starter
Berichten: 22
Lid geworden op: 29 jun 2013, 09:22
Uitgedeelde bedankjes: 5 keer
Bedankt: 1 keer

ik gebruik VERT.ZOEKEN ook vaak, werkt gewoon makkelijker in excel om iets snel in mekaar te steken dan in access.

nog enkele tips :
- Nooit bang zijn om kopiëren en plakken te gebruiken in excel
- zet je vert.zoeken in een ALS(ISNB(),,) als je een propere lijst als resultaat wil (zie voorbeeld 1)
- Het meegeven van een rijen-bereik is aangewezen voor het zoekblad (snelheid) maar neem die ruim genoeg, als het echt om een lijst met een onbekende willekeurige lengte gaat is het echter niet verplicht (zie in voorbeeld 1 : A:B ipv $A$1:$B$9999)
- Indien je het excel bestand niet telkens wil hernoemen of de gegevens wil plakken kan je met de INDIRECT functie hele leuke dingen doen (zie voorbeeld 2, in cel H1 vul je in dit geval de naam van het excel bestand in waarin je wil zoeken bijvoorbeeld [excel2.xlsx]).

Voorbeeld 1 :
=ALS(ISNB(VERT.ZOEKEN(A2;[excel2.xlsx]Blad1!A:B;2;ONWAAR));"";VERT.ZOEKEN(A2;[excel2.xlsx]Blad1!A:B;2;ONWAAR))

Voorbeeld 2 :
=VERT.ZOEKEN(A2;INDIRECT(TEKST.SAMENVOEGEN($H$1;"Blad1!$A$1:$B$9999"));2;ONWAAR)
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

Koelreuteria schreef:Rekenblad excel1 bevat e-mail adressen
Rekenblad excel2 bevat dezelfde e-mail adressen en voornaam + naam.
Nu wil ik excel1 de juiste gegevens (voornaam + naam) krijgen bij het e-mail adres.
De simpelste oplossing is... delete Excel1 en rename Excel2 naar Excel1 :lol:
schizm schreef:ik gebruik VERT.ZOEKEN ook vaak, werkt gewoon makkelijker in excel om iets snel in mekaar te steken dan in access.
Het is maar hoe je het bekijkt... onderstaande SQL is zelfs korter dan je Excel formule.

update table1 set name = (select name from table2 where mail = table1.mail)
schizm
Starter
Starter
Berichten: 22
Lid geworden op: 29 jun 2013, 09:22
Uitgedeelde bedankjes: 5 keer
Bedankt: 1 keer

Die query is inderdaad kort en simpel maar tegen de tijd dat je de data in access-tabellen hebt zitten is die excel al lang klaar. (als de oorspronkelijke gegevens al in access staan heb je natuurlijk wel gelijk)
Plaats reactie

Terug naar “Software en apps”