• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

vergelijken van gegevens op meerdere bladen

Status
Niet open voor verdere reacties.

jvondermans

Gebruiker
Lid geworden
14 feb 2005
Berichten
75
oplossers,

In bijgevoegd bestand heb ik een voorbeeldje gemaakt van wat ik zou willen, maar mij lukt het niet.
In blad 1 in staan in een kolom een aantal gegevens en het enige wat ik wil weten is of het voorkomt in kolommen op de andere bladen. het hoeft als resultaat alleen WAAR of ONWAAR te geven.

hopelijk is het niet al te ingewikkeld en alvast bedankt voor het meedenken.
Jordy vondermans


Bekijk bijlage vergelijk.xls
 
Ik heb al eens heel snel iets in elkaar gestoken, maar het zal zeker niet de beste oplossing zijn denk ik. Hij gebruikt wel CSE-formules! (om een idee te hebben wat dat is, neem eens een kijkje op http://www.mrexcel.com/articles/CSE-array-formulas-excel.php)

De formule die in de kolom B staat van Blad1 is:
Code:
{=ALS(SOM(ALS(OF(Blad2!A$1:A$400=maanden!A1;Blad3!A$1:A$400=maanden!A1);1;0))>0;WAAR;ONWAAR)}
Let op de accolades (CSE-formules)! Heel krachtig is ze nog niet, want als je blad4 aanmaakt of blad2 van naam verandert of "feb" op A401 invult werkt het niet meer!Bekijk bijlage vergelijk_PJ.xls
 
PieterJan, hier worden dit gewoon matrixformules genoemd (bevestigen met Ctrl-Shift-Enter) ipv gewoon Enter, dit om de accollades rond de formule te krijgen ;)
 
Code:
Sub tst()
For Each cl In [A1:A12]
On Error Resume Next
    For i = 2 To Sheets.Count
        x = Sheets(i).Columns(1).Find(cl, , xlValues, xlWhole, xlByRows, xlNext, False)
        If Not IsEmpty(x) Then
            cl.Offset(, 1) = "Waar":Exit For
        Else
            cl.Offset(, 1) = "Onwaar"
        End If
    Next
Next
End Sub
 
Laatst bewerkt:
Hoi Pieter Jan,

Dit werkt inderdaad prima! ik snap dat ik formule moet aanpassen als het bereik verandert of als de bladnamen wijzigen.

Ik moet wel zeggen dat ik de formule niet helemaal begrijp, maar hij werkt en ik kan hem aanpassen.

Groeten,
Jordy
 
Hoi Warme bakker,

Waar moet ik deze VBA code dan plaatsen, ik weet wel een klein beetje wat, maar geen idee waar neer te zetten. en als mijn gegevens veranderen (kolommen en bladen), waar moet ik dat dan aanpassen?

Jordy
 
Laatst bewerkt:
PieterJan, hier worden dit gewoon matrixformules genoemd (bevestigen met Ctrl-Shift-Enter) ipv gewoon Enter, dit om de accollades rond de formule te krijgen ;)

Ok, matrixformules dus! Ik noem het altijd CSE-formules, maar ik wil me best aanpassen aan de gebruiken van het forum! ;)

Warme bakkertje heeft een macro voor je geschreven, nog veel krachtiger! (afhankelijk van je Excel-versie) Extra -> Macro -> Macro's ... (ofwel Alt+F8) en dan naam invullen (tst), op "Maken" drukken en de code in kopiëren. Daarna de macro uitvoeren en/of eventueel bij "opties" een sneltoets toevoegen.

Groetjes en veel succes!
Pieter-Jan
 
Hoi Pieter-Jan,

Ik heb inderdaad de macro aangemaakt en ik zie ook hoe het celbereik aan te passen, maar moet ik dan verder nog iets doen als aantal tabbladen wijzgen of zoekkolom aanpassen?

ik kan jouw formule gebruiken (en dat werkt super!!), maar als dit werkt gaat het denk iets sneller aangezien ik met 16 tabbladen te maken heb ;)

super dat je zo helpt!
 
Nu met een woordje uitleg
Code:
Sub tst()
On Error Resume Next
For Each cl In [A1:A12] 'het bereik waar de maanden staan
    For i = 2 To Sheets.Count 'vanaf het tweede blad tot het laatste blad wordt gezocht
        'onderstaande regel plaatst de gevonden waarde in een variabele
        'er wordt gezocht in kolom 1 ( Columns(1) )
        x = Sheets(i).Columns(1).Find(cl, , xlValues, xlWhole, xlByRows, xlNext, False)
        If Not IsEmpty(x) Then 'controleert of de variabele gevuld is
        'op basis van vorige controle wordt actie ondernomen
            cl.Offset(, 1) = "Waar": Exit For
        Else
            cl.Offset(, 1) = "Onwaar"
        End If
    Next
Next
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan