Ga naar inhoud

Waarde uit 2 cellen zoeken in reeks 2 kolommen


vermhans9000

Aanbevolen berichten

Hallo,

ik geraak er maar niet uit, combinaties ALS, ISFOUT, VERGELIJKEN etc. geprobeerd, doch noppes

Ik heb een excellijst met genodigden voor een evenement. De inschrijvingen verlopen via een online tool die voor mij excellijsten genereert van de antwoorden. Dus 2 aparte excels.

Wat wil ik in se bekomen: een formule die kijkt welke van mijn genodigden reeds heeft geantwoord (om zo nodig een herinnering te sturen). Daarvoor wil ik mijn initiële lijst gebruiken en in een aparte kolom vergelijken met de kolommen van de ingeschreven of zij hierin (al) voorkomen. Very basic ben ik dus enkel op zoek naar de formule (of ev. VBA, doch geen kennis ervan) die dit doet in een excellijst:

Ik kijk of combo A2+B2 zo voorkomt in kolommen D + E. Zo ja, retourneer ik in C bij die persoon "geantwoord", anders "nee".

Om dit wat aanschouwelijk te maken:

image.png.142ef3da821963855d952955ac60c46d.png

Alvast dank, de uiteindelijke lijst telt een 500 genodigden dus ...

Link naar reactie
Delen op andere sites

@vermhans9000,

Het ontgaat mij waarom je de namen twee keer in je bestand opneemt als je alleeen maar wil weten of iemand wel of niet gereageerd heeft. Het is dan toch veel praktischer om in een kolom bv. een kruisje te plaatsen als iemand gereageerd heeft (of "Ja") ?

Link naar reactie
Delen op andere sites

Beperk het aantal lees- en schrijfbewerkingen van en naar het werkblad tot een minimum.
 

Sub tst()
    Set dic1 = CreateObject("scripting.dictionary")
    Set dic2 = CreateObject("scripting.dictionary")
    sn = Range("A2:A" & Cells(Rows.Count, 1).End(xlUp).Row).Resize(, 5).Value
    For i = 2 To UBound(sn)
        x0 = dic1.Item(Join(Array(sn(i, 1), sn(i, 2)), ","))
        If (sn(i, 4) <> vbNullString) * (sn(i, 5) <> vbNullString) Then
            x0 = dic2.Item(Join(Array(sn(i, 4), sn(i, 5)), ","))
        End If
    Next
    For j = 0 To dic1.Count - 1
        dic1.Item(dic1.keys()(j)) = IIf(dic2.exists(dic1.keys()(j)), "Geantwoord", "Neen")
    Next
    Range("C3").Resize(dic1.Count) = Application.Transpose(dic1.items)
End Sub

 

Link naar reactie
Delen op andere sites

Een iets kortere versie van mijn formule hierboven.

Typ in C3 (afsluitend met Ctrl-Shift-Enter) en kopieer naar beneden:

=als(isnb(vergelijken(a3;als(e$3:e$510=b3;d$3:d$510;0)));"Nee";"Geantwoord")

Als je ook nog wil controleren of de A- en B-cel zijn ingevuld, typ dan in C3 (natuurlijk ook weer afsluitend met Ctrl-Shift-Enter):

=als(en(a3>0;b3>0);als(isnb(vergelijken(a3;als(e$3:e$510=b3;d$3:d$510;0)));"Nee";"Geantwoord");"")
aangepast door alpha
Link naar reactie
Delen op andere sites

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.