Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

Gegevens opvragen door vergelijk

None
16 antwoorden
  • Ik heb op blad1 in kolom G unieke getallen staan
    Ik heb op blad2 in kolom J die unieke getallen ook staan.
    Op blad1 zou ik en formule willen op Cel H2 die kijkt naar G2 en dat unieke getal opzoekt in Blad2 in kolom J.
    Als hij dat vindt moet hij het gegeven wat in kolom B staat (de naam) neerzetten.

    Ik kom er niet uit. niet met vert.zoeken of vergelijken of met als wie?
  • Ik denk dat het fout gaat om dat de waarden waaruit je zoekt, (kolom J op blad 2), de eerste kolom van je zoek bereik moet zijn. Je kan dan niet meer verwijzen naar kolom B die ervoor staat.
    Verder, als kolom J niet gesorteerd is, moet in de functie zijn: =vert.zoeken(G1,Blad2!J1:K40,2,onwaar)
    Als je 'onwaar' weglaat, wordt aangenomen dat de waarden gesorteerd staan.

    Fred
  • Ik ben nog even met die formule aan het stoeien geweest.

    Het komt er vermoedelijk op neer dat excel het dus niet kan?

    Dan moet ik het via dBase oplossen die kan het via variabelen, plaatsen door vergelijken wel.

    maar ik laat me graag overtuigen dat excel het ook kan wie?
  • Natuurlijk kan Excel het wel, alleen met de cel-functies in het wat lastig.
    In Visual Basic (VBA) lukt veel meer.
    Heb je een voorbeeld van je spreadsheet en een omschrijving van wat je exact wil? Kun je dat sturen?
  • Waar kan ik het excel bestand heen sturen? naar je email?
  • Hier heb ik een kleine functie die volgens mij doet wat jij zoekt:
    [code:1:666c16faa1]
    Public Function SpecialLookup(ByVal nLookup As Long) As String

    Dim sheetLookup As Worksheet
    Dim rFound As Range
    Dim nRow As Long

    On Error GoTo SpecialLookup_Error

    Set sheetLookup = ActiveWorkbook.Worksheets("Blad2")
    Set rFound = sheetLookup.Range("J:J").Find(nLookup, LookIn:=xlValues)
    nRow = rFound.Row
    SpecialLookup = rFound.Offset(0, 2 - rFound.Column).Text
    Exit Function

    SpecialLookup_Error:
    MsgBox Err.Description
    End Function
    [/code:1:666c16faa1]
    Uitleg:
    Je moet deze functie in een VBA module plakken. Je kan hem dan in een cel aanroepen. De functie verwacht 1 numerieke waarde, nLookup.
    Deze waarde zoekt hij op in de rij J van Blad 2. Let op! Rij 1 wordt overgeslagen, maar ik ga er voor het gemak van uit dat je daar een kop hebt staan.
    Wanneer de waarde gevonden wordt, dan retourneert de functie de waarde in de 2e kolom (kolom B).
    Ik hoop dat je er wat aan hebt. Anders hoor ik het wel.
  • Een prima oplossing, die ook zou moeten werken voor tekst, door nLookUp als variant te definieren.
    Helaas kreeg ik dat niet goed werkend.
    Ik heb het wat aangepast en een kolom "offset" toegevoegd in de functie, zodat je kunt opgeven uit welke kolom je de gegevens wilt halen.

    [code:1:9b9c59db58]
    Public Function SpecialLookup(ByVal nLookup As Variant, OffSet As Integer) As String

    Dim sheetLookup As Worksheet
    Dim Data, c As Range

    On Error GoTo SpecialLookup_Error

    Set sheetLookup = ActiveWorkbook.Worksheets("Blad1")
    Set Data = sheetLookup.Range("Data")
    For Each c In Data
    If c.Value Like nLookup Then
    SpecialLookup = c.OffSet(0, OffSet).Value
    End If
    Next c
    Exit Function

    SpecialLookup_Error:
    MsgBox Err.Description
    End Function

    [/code:1:9b9c59db58]
  • Wat ik fout doe geen idee.

    Ik heb een loze macro macro1 aangemaakt en daar de macro is geplakt.
    Als ik deze wil opstarten in H2 krijg ik: dat er een end sub wordt verwacht.
    Als ik die plaats wordt de macro gescheiden waardoor het geheel niet iig niet bruikbaar is.


    Sub Macro1()

    '
    ' Macro1() Macro
    ' De macro is opgenomen op 12-6-2005 door Evert Pierik.

    Public Function SpecialLookup(ByVal nLookup As Long) As String

    Dim sheetLookup As Worksheet
    Dim rFound As Range
    Dim nRow As Long

    On Error GoTo SpecialLookup_Error

    Set sheetLookup = ActiveWorkbook.Worksheets("Blad2")
    Set rFound = sheetLookup.Range("J:J").Find(nLookup, LookIn:=xlValues)
    nRow = rFound.Row
    SpecialLookup = rFound.Offset(0, 2 - rFound.Column).Text
    Exit Function

    SpecialLookup_Error:
    MsgBox Err.Description
    End Function
  • Wat je nu doet is een functie inkapselen in een sub. Een sub is bijna helemaal hetzelfde als een functie maar een sub geeft geen waarde terug en daarom is wat jij wil een functie.

    Jouw probleem is dat je een regel 'Sub Macro1()' hebt zodat je programma denkt dat je een sub aan het uitvoeren bent. Uiteraard wil het programma dan ook weten waar de sub eindigt.

    Probeer het opnieuw maar haal dat 'Sub Macro1()' weg en zet er ook geen 'End Sub' neer. In plaats van de sub moet je dus alleen een function overhouden. Grote kans dat het dan gaat werken. :wink:
  • Als ik het nu goed begrijp wordt de functie nloopup gedefinieerd?

    Maar hoe geef ik dan aan dat hij die moet gebruiken in H2?

    Zoals ik het nu heb heb ik alleen over wat door Violist46 is opgegeven en niet via macro op te roepen.

    Ik hoop dat jullie nog even doorgaan met uitleggen zodat zelfs ik het begrijp.
  • =INDEX(Blad2!B1:J5;VERGELIJKEN(G2;Blad2!J1:J5;0);1)

    met deze formule in H2 moet het lukken.

    Aanvulling: B1 tot J5 is het bereik in mijn voorbeeld, hier moet jij uiteraard je eigen gegevens invullen.
  • Dat stukje tekst van Doof werkt prima! Ik denk dat je de hele functie gewoon moet laten voor wat het is, en de tekst van Doof moet gebruiken.

    Een functie is geen macro en kun je ook niet via macro openen. Wel kun je via invoegen - functie de nieuwe functie vinden en gebruiken.
  • als ik via functieargumenten kijk zie ik een deel van de formule wat met VERGELIJKEN begint eindigen in #N/B.

    Er gaat bij mij nog iets fout.


    De vraag was:

    Ik heb op blad1 in kolom G unieke getallen staan
    Ik heb op blad2 in kolom J die unieke getallen ook staan.
    Op blad1 zou ik en formule willen op Cel H2 die kijkt naar G2 en dat unieke getal opzoekt in Blad2 in kolom J.
    Als hij dat vindt moet hij het gegeven wat in kolom B staat (de naam) neerzetten.

    misschien als iemand de exacte formule geeft dat ik hem dan ook verder kan toepassen.

    er volgt nu een melding kan het project of bibliotheek niet vinden
    als ik de formule sleep komt er af en toe wel een naam te voorschijn, anders #N/B ook als de uniek kode wel bestaat. willekeur? of mis ik iets in de installatie van excel?
  • [quote:f2916a3c33="Droopy"]als ik via functieargumenten kijk zie ik een deel van de formule wat met VERGELIJKEN begint eindigen in #N/B.

    Er gaat bij mij nog iets fout.

    Ik heb op blad2 in kolom J die unieke getallen ook staan.
    Op blad1 zou ik en formule willen op Cel H2 die kijkt naar G2 en dat unieke getal opzoekt in Blad2 in kolom J.
    Als hij dat vindt moet hij het gegeven wat in kolom B staat (de naam) neerzetten.

    misschien als iemand de exacte formule geeft dat ik hem dan ook verder kan toepassen.

    er volgt nu een melding kan het project of bibliotheek niet vinden[/quote:f2916a3c33]

    =INDEX(Blad2!B1:J5;VERGELIJKEN(G2;Blad2!J1:J5;0);1)

    Blad2!B1:J5 Is het bereik vam kolom B (naam) tot en met Kolom J (uniek getal) in mijn voorbeeld 5 rijen

    G2 = de zoekwaarde

    Blad2!J1:J5 Is het bereik waarin je de zoekwaarde opzoekt, in mijn voorbeeld weer 5 rijen.

    Als je het bereik aanpast met je eigenwaarden, dan moet deze formule in cel H2 het gewenste resultaat opleveren.

    De melding: kan het project of bibliotheek niet vinden kan niet door deze formule veroorzaakt zijn. Is waarschijnlijk een VBA fout.
  • Je moet via de visual basic editor die functie weghalen, de beste methode is om de module1 te verwijderen waarin je de functie hebt staan. Vervolgens voer je op vakje H2 van Blad 1 de onderstaande tekst in.

    =INDEX(Blad2!B1:
  • Ik ben er eindelijk uit.

    Dat de formule niet altijd werkte lag aan het feit dat de celeigenschappen
    niet altijd overeenkwamen en dat soms het uniek nog niet aanwezig was.

    Daarom kreeg ik die #N/B

    thanks

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.