Ga naar inhoud

Aanbevolen berichten

Geplaatst:

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 ...

Geplaatst: (aangepast)

Typ in C3 en kopieer naar beneden:

=als.fout(als(vergelijken(a3;d$3:d$510;0)=vergelijken(b3;e$3:e$510;0);"Geantwoord";"");"Nee")
aangepast door alpha
Geplaatst:

Bovenstaande formule is niet juist als bv. dezelfde achternaam 2 keer voorkomt (met verschillende voornamen) en beide namen 'geantwoord' hebben. Zal wat anders zoeken.

Geplaatst:

@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") ?

Geplaatst:

Dit zal wel het resultaat geven wat je wenst. Typ in C3 en sluit de invoer af met Ctrl-Shift-Enter (vergeet dat niet!!) :

=als.fout(als(vergelijken(a3;als(e$3:e$10=B3;d$3:d$10;0));"Geantwoord";"");"Nee")

Geplaatst:

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

 

Geplaatst: (aangepast)

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
×
×
  • 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.