Help!

PC-Problemen?
De vrijwilligers van Oplossing.be zoeken gratis met u mee!

Hulp bij posten

Recente topics

Auteur Topic: Fout in HLookup Functie  (gelezen 30174 keer)

0 leden en 1 gast bekijken dit topic.

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.203
  • Geslacht: Man
  • Nobody is perfect, not even me...
Fout in HLookup Functie
« Gepost op: 17 december 2018, 19:06:54 »
Hallo helpers,

ik had graag een kleine Userform gemaakt, om in een bestaande database een gegeven op te halen.

Maar die HLookup is toch even moeilijker dan ik dacht....

Wat ik dus wil is via de Userform te kiezen, en dan de gekozen gegevens naar het "rekenblad" te schrijven.
Ik ga naar een tabblad via de gekozen Y
Ik wil Horizontaal gaan zoeken op Naam (M), dan naar de Rij (D) en dan moet ik de gegevens ophalen van de cel links van (D) en die datum wil ik in "Rekenblad!D2"

Soms werkt de macro, soms niet.
Ik zou in de lijn
datum = Application.WorksheetFunction.HLookup(M, ActiveSheet.Range("A1:Z31"), D, False)een Offset naar de cel links van D willen.

Dank je wel.

:) SoftAid :)             



Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Fout in HLookup Functie
« Reactie #1 Gepost op: 17 december 2018, 19:53:27 »
Hey SoftAid,

Hlookup is op zich hetzelfde als Vlookup, maar dan 90° gedraaid  ;)

Er is iets anders aan de hand : zou het kunnen dat je de variabele D voor verschillende doeleinden probeert te gebruiken ?
Eerst krijgt die de waarde van faktuurnummer + 1, en in je hlookup staat D voor het kolomnummer.
We horen het wel als blijkt dat er na aanpassing nog iets tegenpruttelt ?

Met de hlookup zoals je die nu gebruikt kan je maximaal de kolom vinden. Om nadien de juiste rij te vinden is een regel extra code nodig. Een betere optie is dan de index-functie. Als het D-probleem opgelost raak wil ik die ook voor je samenstellen, al weet ik dat je vaak liever zelf doorpuzzelt. Tot schrijfs dus ?

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.203
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Fout in HLookup Functie
« Reactie #2 Gepost op: 17 december 2018, 20:02:05 »
Hlookup is op zich hetzelfde als Vlookup, maar dan 90° gedraaid  ;)
Dacht ik het niet   ;D ;D ;D
Nee, zo veel was me ook al duidelijk.

Nu krijg ik inderdaad de factuurNr, maar ik zou factuurdatum (die overeenkomt met het nummer D in het werkblad Y) willen als datum.
Er moet dus nog één stap verder gegaan worden, een Offset( 1 , 0) of zo vanaf de positie van D.

En Ja, je mag me gerust een duwtje geven.

Ik ben geen Expert, hé....

Groeten,

:) SoftAid :)             



Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Fout in HLookup Functie
« Reactie #3 Gepost op: 17 december 2018, 21:52:14 »
Hoi,

Ik moet mezelf dan toch herhalen : je steekt in D eerst het gekozen faktuurnummer +1.
Momenteel kan je faktuurnummer kiezen uit 1001, 1002 en 1003.
In D komt dus een waarde tussen 1002 en 1004.
Dan kan je daarna D echt niet gebruiken als rijnummer in hlookup.

Tenzij de ganse bedoeling mij ontgaat. Klopt het dat de werkbladen 2016, 2017 en 2018 enkel opzoektabellen zijn ? en waar dus niets moet geschreven worden ?
Zoals het er nu uitziet kan daar ook onmogelijk een faktuurnummer worden gevonden, want ik zie daar enkel telkens van 1 tot 3 staan.

Als je dat even uitklaart kan het Offset-probleem vermoedelijk vlug een ex-probleem worden.

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Fout in HLookup Functie
« Reactie #4 Gepost op: 17 december 2018, 22:22:39 »
SoftAid, Ook mij ontgaat ff de opbouw van je documentje. De grap is dat je sheet "Rekenblad" eigenlijk de enige juiste opmaak heeft voor waar je mee bezig bent. De andere tabellen zijn meer "rapportages" en niet zozeer de benodigde platte data tabel... Daarnaast lijkt het me ook niet nodig om nog de klantnaam op te moeten geven in je formulier als je het klantnummer al hebt opgegeven. Die kan je nou juist mooi laten opzoeken en weergeven. De volgende stap zou dan zijn dat je alléén de factuurnummers en datums toont in je listbox die horen bij de betreffende klant.

Mocht je deze weg willen inslaan, ben ik uiteraard ook bereid om je daarmee te helpen.
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.203
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Fout in HLookup Functie
« Reactie #5 Gepost op: 17 december 2018, 22:28:32 »
Hallo pitufo, en RedHead  ;)

3 tabbladen met Factuur-data: 2016, 2017, 2018 en een data-sheet voor de Userform.

Met de Y = Me.ComboBox3.Value  geef ik het te activeren werkblad in.
Met het geopend werkblad 2018, moet ik in de Rij 1 gaan zoeken naar een naam die ik heb ingegeven via
M = Me.ComboBox2.Value
De 2de parameter van HLookup is de Range, die staat rechtstreeks in de formule: Range("A1:F10")
De 3 de parameter is de offset naar beneden vanaf de cel waarin M stond.
Dat is niet zo moeilijk. Maar het werkt niet.

Ik heb die HLookup eens volledig handmatig getest, dus al de waarden er rechtstreeks ingezet, en dan doet hij het nog niet.
Die Offset lijkt me juist, maar doordat de HLookup Functie niet werkt kan ik die ook niet testen.
Sub Commandbutton1_Click()
Dim datum As Range, Datum2 As String
Application.Worksheets("2018").Activate
datum = Application.WorksheetFunction.HLookup("Jans", Range("A1:F10"), 3, False)
Range(datum).Offset(0, 1).Select
Datum2 = Selected.Cells.Value
Worksheets("Rekenblad").Select
Range("D2").Value = Datum2
TextBox1.Value = Datum2
End Sub

Getest in de userform-code,  maar ook in een module.

Zie bijlage

Theo

:) SoftAid :)             
Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline RedHead

  • Excel-Expert
  • Ambassadeur
  • *****
  • Berichten: 2.284
  • Geslacht: Man
  • Met Excel lukt 't wel.... (toch???)
Re: Fout in HLookup Functie
« Reactie #6 Gepost op: 17 december 2018, 22:53:47 »
SoftAid, als je vast wilt houden aan je opzet, zou deze formule gebruikt kunnen worden in je formulier...
=VLOOKUP(2;$A$1:$F$4;MATCH("Evers";A1:F1;0)+1;0)
Uiteraard heb ik deze even opgebouwd in een worksheet, maar door de puntkomma's te veranderen in komm's en de "worksheetfunction" er aan toe te voegen, zóu het kunnen werken. ;)
______________________________

Groet, Leo

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.203
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Fout in HLookup Functie
« Reactie #7 Gepost op: 17 december 2018, 23:13:44 »
SoftAid, als je vast wilt houden aan je opzet, zou deze formule gebruikt kunnen worden in je formulier...
=VLOOKUP(2;$A$1:$F$4;MATCH("Evers";A1:F1;0)+1;0)
Het is wel HLookup() (Horizontaal Zoeken), en de door jou gegeven formule kan ik niet lezen of bewerken.
Sorry, maar ik ben echt geen specialist...  :-[
Citaat
Uiteraard heb ik deze even opgebouwd in een worksheet, maar door de puntkomma's te veranderen in komma's en de "worksheetfunction" er aan toe te voegen, zóu het kunnen werken. ;)
Ik gebruik toch komma's al als lijstscheidingsteken ?

Ik wil enkel de datum in de Cel D2 krijgen, en in de listbox.
Maar de HLookup formule blijft me foutmeldingen geven.

Dank voor de hulp.

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Fout in HLookup Functie
« Reactie #8 Gepost op: 17 december 2018, 23:25:48 »
Je idee is okay, SoftAid, maar de uitvoering ervan (nog) niet.
In je testcode zet je nu
datum = Application.WorksheetFunction.HLookup("Jans", Range("A1:F10"), 3, False)
en in je originele stond
datum = Application.WorksheetFunction.HLookup(M, ActiveSheet.Range("A1:Z31"), D, False)
Variabele D krijgt evenwel een waarde hoger dan 1000 in je procedure en nooit iets dat in de buurt van 3 komt (zie mij 1° en 2° reactie).
Daar moet echt eerst duidelijkheid over komen.
Het vervolg, zo het van mij komt, zal wel niet meer voor vandaag zijn (denk ik).
Morgen evenwel met alle graagte !

Groeten,
pitufo

Update : sorry, niet gezien dat je een nieuwe bijlage had gepost (zie je wel dat ik aan slaap toe ben...)
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.203
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Fout in HLookup Functie
« Reactie #9 Gepost op: 17 december 2018, 23:42:51 »
Hallo RedHead,

Het "lijkt" anders zo gemakkelijk  >:(
>>>>    https://www.exceltrick.com/formulas_macros/hlookup-in-excel-with-examples/


Deze geeft ook een fout:
datum = Application.WorksheetFunction.HLookup("Jans", ActiveSheet.Range("A1:F10"), 2, False)
pitufo,

slaap wel, je hebt het verdiend  ;D Ik ga ook mijn bedje opzoeken.

Tot morgen beide.

:) SoftAid :)             

Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Fout in HLookup Functie
« Reactie #10 Gepost op: 17 december 2018, 23:55:42 »
Toch nog effe terugkomen (heb namelijk iets gezien) : je hebt "Dim datum As Range" staan, dat moet "Dim datum as String" zijn.
En "Datum2 = Selected.Cells.Value" is hier overbodig. Moet dan verder wel Range("D2").Value = Datum worden.
Hopelijk zijn we er dan.
En nu ECHT onder de wol  ;D
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline emields

  • Ervaren lid
  • ***
  • Berichten: 257
  • Geslacht: Man
  • Oplossing.be
Re: Fout in HLookup Functie
« Reactie #11 Gepost op: 18 december 2018, 01:34:31 »
Is het toegestaan te zeggen dat dit ongeveer het slechts opgemaakt bestand is dat ik mijn leven al gezien heb?


Ik denk als iemand in het derde leerjaar van de lagere school zoiets produceert hij (of zij) terug naar de kleuterklas gestuurd word.


't Is niet volmaakt maar het doet wat er gevraagd is.

Offline pitufo

  • Ambassadeur
  • *****
  • Berichten: 1.343
  • Geslacht: Man
Re: Fout in HLookup Functie
« Reactie #12 Gepost op: 18 december 2018, 11:06:07 »
@ emields,

Tja, we vinden bv. op het formulier de tekst "Klantnummer ?" terwijl dat eigenlijk over het jaar gaat, en de benamingen Repjaar, Repmaand en Repdag die respectievelijk voor jaar, klantnaam, en faktuurnummer staan.
Zelf zou ik dan eerder denken dat dit een testbestandje is waarvan de basis ergens anders vandaan is gehaald, en dat enkel dient om een werkwijze uit te proberen die nadien in een degelijk bestand kan worden toegepast.
Een betere opbouw ging ons misschien wel geholpen helpen om sneller de preciese bedoeling te zien, alhoewel : mijn onmiddellijke reactie was argwaan bij het gebruik van 'hlookup'

@ SoftAid,

Zoals je ziet denken we ondertussen allemaal dat je eerst in de bovenste rij de kolom wil zoeken waarin de gekozen naam staat, en dan in die kolom de rij wil zoeken waarin het gekozen faktuurnummer staat, om uiteindelijk de datum te vinden die erbij hoort.
Dat red je nooit met 'hlookup', en evenmin met 'vlookup' of een combinatie ervan, want die zoeken een waarde in een range uitgaande van een gekende rij of kolom, terwijl jij juist die kolom en rij moet vinden op basis van een gekende waarde. Mijn eerste opmerking dat hlookup een gekantelde versie van vlookup was deed dus wel degelijk terzake, want ik ben ervan overtuigd dat je vert.zoeken altijd blindelings correct gebruikt, en met hlookup was je echt wel verkeerd bezig.

Ik heb een verduidelijkingsbestandje toegevoegd. Er zit ook een mini-macro in. Als je daar stap voor stap door gaat zal je merken dat die hetzelfde doet als de formules. Ook hier kan het (zelfs gemakkelijker) in één draai : als je de eerste 3 instructies in commentaar zet zal het nog steeds werken.
Hopelijk is het duidelijk. In dat geval zal hetzelfde doen via een formulier ook wel meevallen.

En anders is er nog altijd oplossing.be  0:-)

Groeten,
pitufo
"De computer doet wel degelijk wat je hem vraagt,
 maar NIET wat je DENKT dat je hem vraagt"

Offline SoftAid

  • Administrator
  • Ambassadeur
  • *****
  • Berichten: 20.203
  • Geslacht: Man
  • Nobody is perfect, not even me...
Re: Fout in HLookup Functie
« Reactie #13 Gepost op: 18 december 2018, 12:42:48 »
Is het toegestaan te zeggen dat dit ongeveer het slechts opgemaakt bestand is dat ik mijn leven al gezien heb?
Ik denk als iemand in het derde leerjaar van de lagere school zoiets produceert hij (of zij) terug naar de kleuterklas gestuurd word.
hallo emields,

heb je het nu over mijn bestand of over jou bestand?  ;D

't Is niet volmaakt maar het doet wat er gevraagd is.
Als dit op jou bestand slaat, dan moet ik je teleurstellen, het doet niet wat het moet doen....  :(

Je deel code:
Set rnum = Range("a1:a4")......Slaat op een vaste range, en zou dus een variabele range moeten zijn, de kolom afhankelijk van de variabele rnaam
Dus iets als:
col = rnaam.Column
Set rnum = Range(col & "1" & : & col & "4")......
maar dat krijg ik nog niet dadelijk werkend....

Toch bedankt om er naar te kijken.

Groeten,

:) SoftAid :)             


Maximum grootte bijlagen vergroot naar 4 MB
Dubbelposten, het posten op verschillende forums van dezelfde vraag, dient op
voorhand gemeld te worden, met een link naar het topic op de andere site.
Overtreding van deze regel kan bestraft worden met verbanning !

Offline spyder

  • Ambassadeur
  • *****
  • Berichten: 5.265
  • PC probleem zit meestal tussen scherm en rugleun
Re: Fout in HLookup Functie
« Reactie #14 Gepost op: 18 december 2018, 13:00:33 »
De logica van de userform van SoftAid is me ook totaal niet duidelijk (maar ik ben dan ook een leek), maar SoftAid gaf aan dat het resultaat uit de linkse kolom moet komen. Ik vraag me af of Index - Match dan geen oplossing is?
Windows 7 Ultimate Unknow NLD
Intel(R) Core(TM) i7 CPU         870  @ 2.93GHz 2934
P7P55D-E PRO
NVIDIA GeForce GTX 470 1280MB 1680 x 1050
HD 1 : INTEL SSDSA2M080G2GC (80GB)
HD 2 : ST31500341AS (1,5TB)
HD 3 : ST320006 41AS (2TB)
browser: Maxthon  mail:Thunderbird AV: Bitdefender
Scarlet user

 


www.combell.com