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

Kolommen vergelijken + data filteren

Status
Niet open voor verdere reacties.

NiekvanMeer

Gebruiker
Lid geworden
30 sep 2013
Berichten
129
Beste,

Ik zit met het volgende probleem.
Vanuit een mapje op mijn pc haal ik bestandsnamen naar kolom A.
Deze bestandsnamen worden vergeleken met data uit kolom B (en de bestandsnamen die in kolom B staan en niet in kolom A voorkomen, worden in kolom C geplaatst) via de volgende vba code:

Code:
Sub kolomcheck()
Dim lRij As Long
Dim lSRij As Long
    lRij = 1
    lSRij = 1
    While Range("B" & lRij).Value <> ""
        Set Order = Range("A:A").Find(Range("B" & lRij).Value, LookIn:=xlValues, Lookat:=xlPart)
        If Order Is Nothing Then
            Range("C" & lSRij).Value = Range("B" & lRij).Value
            lSRij = lSRij + 1
        End If
        lRij = lRij + 1
    Wend
End Sub

Nu gaat er iets mis in de code (helaas ben ik echt een leek in vba; deze formule heb ik dan ook ergens van het internet gehaald :cool: )
Het is namelijk zo dat de code wel werkt wanneer er 'zelfgetypte' data in kolom A staat, of data van gekoppelde bestanden, maar níét wanneer de data uit kolom A geüpload is uit een mapje van de computer.
Het lijkt wel alsof de cellen gezien worden als leeg of iets dergelijks...

Heeft iemand enig idee wat er mis is?
(de andere vba codes in het bestandje zeggen dat de functie die de bestandsnamen upload uit het mapje op de pc, iedere 20 minuten opnieuw in werking moet treden)

Het gaat over dit bestandje:
Bekijk bijlage TEST bestandenlijst (1).xlsm
 
Het bestandje is wel bekend. Je kan er het beste niet bijzetten op welke rij het fout gaat en hoe je de data in deze corrupte regels zet. Dit geef natuurlijk het meeste inzicht waar het fout zou kunnen gaan.:confused:

Dus mijn advies zou zijn plaats een voorbeeldje zonder alle koppelingen naar jouw schijf met een paar regels waarmee het wel goed gaat en in het bijzonder de regels waarmee het niet goed gaat en hoe je deze in jouw bestand zet.
geüpload is uit een mapje
Komt dit wel in je bestand?
 
Laatst bewerkt:
Hoi VenA,

Ik begrijp niet helemaal precies wat je bedoelt, maar hier een simpel bestandje waarin het wel werkt.
Bekijk bijlage TEST bestandenlijst vergelijken.xlsm
Nu krijg ik in mijn eigenlijke bestand de data in kolom A via hetvolgende:

Formules --> Naam definiëren --> link naar mapje in A1
A2:A.... met de volgende formule gevuld:

=ALS.FOUT(INDEX(Bestandenlijst;RIJ()-1);"")

De data wordt nu niet meer vergeleken zoals in het voorbeeldbestandje nog wél gebeurd.
Kolom C blijft dus leeg..
 
Geen idee waarom het niet werkt bij jou.

Bestandje gemaakt met gegevens in kolom A (bestand even opgeslagen), gedefinieerde naam aangemaakt, formule in A2 en verder naar onderen.
Conclusie: code werkt hier prima.
Wat je wel zou kunnen doen is 'xlpart' verruilen voor 'xlwhole'.
 
Hoi HSV,

Ik was net op het net op zoek naar een mogelijke verklaring, maar toen kwam ik het volgende tegen wat veel beter werkt!
De bestandenlijst download ik nu met de volgende code in kolom A:

Code:
Sub GetFiles()
    Dim fileList() As String
    Dim fName As String
    Dim I As Integer, X As Integer
    fName = Dir("M:\Afd. PD\Scans\" & "*.pdf")
    While fName <> ""
        I = I + 1
        ReDim Preserve fileList(1 To I)
        fileList(I) = fName
         fName = Dir()
    Wend
    If I = 0 Then
        MsgBox "Geen bestanden gevonden"
        Exit Sub
    Else
        Columns(1).ClearContents
        For X = 1 To I
            Cells(X, 1) = fileList(X)
        Next
    End If
End Sub

Nu had ik dus deze code om te vergelijken met kolom B:

Code:
Sub kolomcheck()
Dim lRij As Long
Dim lSRij As Long
    lRij = 1
    lSRij = 1
    While Range("B" & lRij).Value <> ""
        Set Order = Range("A:A").Find(Range("B" & lRij).Value, LookIn:=xlValues, Lookat:=xlPart)
        If Order Is Nothing Then
            Range("C" & lSRij).Value = Range("B" & lRij).Value
            lSRij = lSRij + 1
        End If
        lRij = lRij + 1
    Wend
End Sub

Tot dusverre werkt dat allemaal prima!
Ook wanneer ik de 'OnTime' functie er in zet werkt het goed.

Vreemd genoeg loop ik nu tegen iets anders aan...
Kolom B wordt bij mij gevuld met data uit een ander excel bestand; een koppeling dus.
Ook deze moet iedere zo veel tijd geüpdate worden. Dat doe ik met deze macro:

Code:
Sub Koppelingen()
'
' Koppelingen Macro
'

'
    Workbooks.Open Filename:= _
        "G:\Operators\B-ploeg\N.v.Meer\Bulk-portier-test.csv"
    ActiveWindow.Close
    Application.OnTime Now + TimeValue("00:01:00"), "Koppelingen"
End Sub

Gegevens die ik nu in kolom B krijg (bijv. 13246) hebben nu een toevoeging, zonder dat dit in de gekoppelde cellen staat.
In plaats van "13246" is het nu "13246;0" of "13246;1" geworden.

Heeft iemand enig idee hoe dit kan?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan