Waarde in tabel opzoeken op basis van 2 criteria

Status
Niet open voor verdere reacties.

Igin19

Gebruiker
Lid geworden
13 jan 2021
Berichten
16
Hallo,

Ik heb een database met allemaal oplopende getallen in kolom B. Helaas zijn deze op zichzelf niet uniek en kunnen er dubbele getallen in staan. Kolom A is één van de 2 letters (S of M). De combinatie tussen kolom A en kolom B vormt wel een unieke code. Kolom C is leeg.

In tabblad (blad 2) heb ik een tabel waar de gebruiker zowel een waarde uit kolom A (B1) als een waarde uit kolom B (B2) zelf moet invullen.

De macro die ik graag zou maken zou dan in de de database (blad 1) op zoek moeten gaan naar de rij die overeenkomt met de combinatie ingevuld in cel B1 en B2 EN de waarde in cel B3 moeten repliceren in de kolom 3 van de betreffende rij.

Volgende macro werkt wel, maar zoekt enkel in 1 kolom en niet in de 2 kolommen...

Code:
Sub test()
    
With Sheets("Blad 2")
    Sheets("Blad 1").Range("B:B").Find(.Cells(2, 2), lookat:=xlWhole).Offset(, 3) = .Cells(3, 2)
End With

End Sub

Voorbeeldbestand heb ik toegevoegd.
Dankjewel voor de hulp!
 

Bijlagen

  • Testdoc.xlsm
    14,9 KB · Weergaven: 20
Probeer het hier eens mee:
Code:
Sub ZoekWaarde()
    With Sheets("Blad1")
        .Range("$A$1:$C$23").AutoFilter Field:=1, Criteria1:=Range("B1")
        .Range("$A$1:$C$23").AutoFilter Field:=2, Criteria1:=Range("B2")
        If .Range("C1").End(xlDown) <> vbNullString Then
            Range("B3") = .Range("C1").End(xlDown)
        Else
            Range("B3") = "Combinatie niet gevonden."
        End If
        .ShowAllData
    End With
End Sub
 
Dankjewel voor de hulp!
Nu wordt de 'V' vermeld in de database op blad 1 (kolom C), afgebeeld in de tabel op blad 2 (B3), maar het zou omgekeerd moeten zijn :).
De waarde in cel B3 (blad 2) moet gekopieerd worden naar kolom 3 van blad 1.

Hoe doe ik dat best?
 
Zo dan:
Code:
Sub ZoekWaarde()
    With Sheets("Blad1")
        .Range("$A$1:$C$23").AutoFilter Field:=1, Criteria1:=Range("B1")
        .Range("$A$1:$C$23").AutoFilter Field:=2, Criteria1:=Range("B2")
        If .Range("A1").End(xlDown) = vbNullString Then
            MsgBox "Combinatie niet gevonden.", vbCritical
        Else
            .Cells(.Range("A1").End(xlDown).Row, 3) = Range("B3")
        End If
        .ShowAllData
    End With
End Sub

Maar dan zou ik de tekst op de knop wijzigen in "Plaats waarde in database".
 
Waarom maak je geen gebruik van Excel ?

klik in de kolomnaam van kolom C
 

Bijlagen

  • __Testdoc.xlsb
    9,9 KB · Weergaven: 18
Dat gaat sneller ja!
Alleen 1 probleem. Kolom C zou verborgen moeten zijn in dat geval, maar de functie .FIND wil niet werken wanneer de kolom verborgen is. Hoe ga ik hiermee best om?
 
Sneller opzoeken dan in het werkblad zelf gaat niet.
Vergeet die VBA.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan