Unieke (nieuwe) nummers filteren o.b.v. twee kolommen.

Status
Niet open voor verdere reacties.

FcExcelRookie

Nieuwe gebruiker
Lid geworden
7 jul 2016
Berichten
4
Hallo,

Volgens mij is er voor onderstaande vraag een hele simple oplossing en heb ook al wel wat gevonden alleen werkt die niet zo heel mooi en heb geen flauw idee wat ik er aan moet veranderen om hem wel aan mijn wensen te voldoen.

Ik heb twee kolommen, met als naam (in dit geval) MS Project (in cel A1) en ERP (in cel B1). Deze rijen worden gevuld met getallen die (officieel) uit MS Project en een ERP-systeem komen.

In het ERP-systeem worden dagelijks/wekelijks/maandelijks nieuwe getallen in gezet, hierdoor zijn ze in MS Project dus niet meer up to date. Nu kunnen deze getallen uit beide programma's heel gemakkelijk gekopieerd worden in Excel (in de eerder genoemde kolommen dus) waar ik ze vervolgens met elkaar wil kunnen vergelijken en dit laten zien in een 3e kolom genaamd 'Verschil' (in cel C1).

VOORBEELD:

In de kolom 'MS Project' staan de nummers 1,2,3,4,5 en in de kolom 'ERP' staan de getallen 1,2,3,4,5,6,7,8,9.
Zodra ik dan de gewenste MACRO activeer moet in de kolom 'Verschil' de getallen 6,7,8,9 komen te staan. Deze zijn namelijk nieuw toegevoegd.


Iemand die hier een VBA-code voor heeft?

Hartelijk dank alvast!

Mvg, Robert
 
Dat kan toch zeer eenvoudig met een formule? En anders even een eigen voorbeeldje plaatsen met wat waar staat. Wat is het verschil tussen nummers en getallen?
 

Bijlagen

Ooh nummers en getallen is gewoon wat onduidelijk getypt op deze manier. Uiteraard bedoel ik gewoon hetzelfde in beide gevallen.

Maar terugkomend op het probleem, ik gaf ff een simpel voorbeeld om het niet al te moelijk te maken in de omschrijving.
Maar normaal gesproken staan er veel grotere getallen (9-cijferige codes) in beide kolommen, die overigens niet op volgorde staan en het is ook niet de bedoeling dat deze vooraf eerst gesorteerd moeten worden van klein naar groot.

Hij moet in feite gewoon de unieke waardes er uit filteren en deze in Kolom C plaatsen. Dus zodra er in kolom B een 9-cijferige code staat die niet aanwezig is in kolom A moet hij deze code gaan weergeven in Kolom C.

Eventueel wil ik morgen wel een voorbeeld plaatsen, kom ik nu niet meer aan toe.
 
In het geplaatste voorbeeldje maakt de lengte van de getallen en de sortering niets uit.

Als het Per se / persé met code moet dan bv
Code:
Sub VenA()
With Sheet1
    ar1 = .Columns(1).SpecialCells(2, 1)
    ar2 = .Columns(2).SpecialCells(2, 1)
    ReDim ar3(UBound(ar2) - UBound(ar1) - 1)
    For j = 1 To UBound(ar2)
        If IsError(Application.Match(ar2(j, 1), ar1, 0)) Then
            ar3(t) = ar2(j, 1)
            t = t + 1
        End If
    Next j
    .Cells(2, 3).Resize(t) = Application.Transpose(ar3)
End With
End Sub
 
Laatst bewerkt:
Het lukt nog niet

Hartelijk dank VenA voor je reacties, alleen het lukt nog niet met jou code. Hij geeft iets van een foutmelding.
Maar zoals gisteren gezegd plaats ik even mijn Excel bestand met tekst en uitleg.

Waarom ik zo graag een VBA wil is omdat ie uiteindelijk voor iemand anders bedoeld is. En dan heb ik het liefst geen formules in het werkblad zelf staan.
Dus gewoon lekker gemakkelijk een button invoeren waar ik de macro onder hang zodat ie alleen daar maar op hoeft te drukken.
Een button invoeren lukt me overigens zelf wel.

Bijgevoegd een Excel-bestand.

Bekijk bijlage Vergelijken_nummers.xlsx
 
Gewoon de Excelformules gebruiken in VBA:

Code:
Sub M_snb()
  [C2:C2000] = [if(B2:B2000="","",if(countif(A2:A2000,B2:B2000)=0,B2:B2000,""))]
  [D2:D2000] = [if(A2:A2000="","",if(countif(B2:B2000,A2:A2000)=0,A2:A2000,""))]
End Sub
of
Code:
Sub M_snb()
  [C2:C2000] = [if(iserror(match(B2:B2000,A2:A2000,0)),B2:B2000,"")]
  [D2:D2000] = [if(iserror(match(A2:A2000,B2:B2000,0)),A2:A2000,"")]
End Sub
 
Goedemorgen snb,

Dit is precies wat ik zocht, en de code is ook zeer gemakkelijk opgebouwd zodat die nog aanpasbaar is ook.

Hartelijk dank voor jullie hulp!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan