2 werkbladen met elkaar vergelijken en samenvoegen

Status
Niet open voor verdere reacties.

p123cyriel

Gebruiker
Lid geworden
16 mrt 2012
Berichten
10
Goedemiddag deskundigen:thumb:.

Even hier een vraagje van een beginnen.
Ik wil in excel 2 werkbladen met elkaar vergelijken en deze samenvoegen, en indien waardes van de twee werkbladen gelijk zijn aan elkaar dan deze bij elkaar optellen.

Is dit mogelijk en zo ja in welke richting moet ik de oplossing zoeken

ALvast bedankt voor de genomen moeite

Cyriel

Bekijk bijlage test samenvoegen.xls
 
Samenvoegen twee tabbladen.

Cyriel

Dit probleem kan je op twee manieren oplossen, met en zonder VBA.
Zonder VBA is het meest simpel en heb ik op het tabblad Samen gezet,
je kan hier de formule Som.als gebruiken. Nadeel is wel dat je er zeker van
moet zijn dat in het tabblad samen alle artikelen worden genoemd die op tabblad art1 en art2 staan vermeld. Mis je er een dan ben je onvolledig.

Een tweede mogelijkheid is om dit met VBA op te lossen.
Ik gebruik hiervoor een array die ik vul met artikelnummers, aantallen en prijzen.
Ik begin op het eerste tabblad en kijk of het artikelnummer al voorkomt, zo niet toevoegen, anders de aantallen bij elkaar tellen.
Daarna doe ik dat zelfde op het tweede tabblad. Op het eind heb ik dus een Array met alle gegevens die ik op het tabblad Samen print.

Veel Succes.


Bekijk bijlage HelpmijSamenvoegen.xls
 
Bedankt voor je reactie.

Ik zal even proberen uit te leggen wat precies de bedoeling is.
Ik krijg 2 afname lijsten van verschillende bedrijven Art1 en Art2 met gelijke artikelnummers maar ook met verschillende artikelnummers
Deze 2 wil ik samenvoegen naar 1 werkblad. Artikelen welke op Art1 wel voorkomen maar op Art2 niet vermelden op samen. zo ook omgekeerd Art2 wel Art1 niet
Komen artikelen op beide voor dan deze 1X vermelden op samen en de aantallen van Art1 en Art2 optellen

Is dit wat je bedoeld bij optie 2? en hoe moet ik dat dan aanpakken?
Sorry voor mijn onkunde

Ik hoop dat dit iets duidelijker is

Alvast bedankt voor de moeite

Cyriel
 
Laatst bewerkt:
Samenvoegen met VBA

Cyriel,

In heb bestandje wat ik je stuurde vorige keer zit al een macro verborgen om de gegevens op te halen zoals ik dat de vorige keer beschreven heb.
Ik heb geen idee heb wat je ervaring is met VBA stuur ik je hierbij hetzelfde bestand nog een keer toe maar nu met een knop op het tabblad zodat je de macro kan starten. Mocht je verder willen weten waar je de VBA code kan vinden en hoe je deze kan lezen verwijs ik je naar een van Excel boeken in de bibliotheek.

Ik ben er trouwens van uit gegaan dat alleen de artikelen opgeteld moeten worden en niet de prijs (deze zijn verschillend op Art1 en Art2)

Bekijk bijlage HelpmijSamenvoegen.xls
 
Iets korter en eenvoudiger om te begrijpen
Code:
Sub tst()
    Dim arr()
    For Each sh In Sheets(Array("art1", "art2"))
        For Each cl In sh.Columns(1).SpecialCells(2)
            If InStr(c01, cl.Value) = 0 Then c01 = c01 & "|" & cl.Value
        Next
    Next
    ReDim arr(1 To UBound(Split(c01, "|")), 1 To 2)
    For i = 1 To UBound(Split(c01, "|")) - 1
        arr(i, 1) = Split(c01, "|")(i + 1)
    Next
    For j = 1 To UBound(arr)
        For Each sh In Sheets(Array("art1", "art2"))
            For Each cl In sh.Columns(1).SpecialCells(2)
                If InStr(arr(j, 1), cl.Value) <> 0 Then arr(j, 2) = arr(j, 2) + cl.Offset(, 1)
            Next
        Next
    Next
    With Sheets("samen")
        With .Cells(1, 1)
            .CurrentRegion.ClearContents
            .Resize(, 2) = Split("artnr|aantal", "|")
        End With
        .Cells(2, 1).Resize(UBound(arr), 2) = arr
    End With
End Sub
 
Hey warm bakkertje,

Helemaaal geweldiggggggg

werkt perfect:thumb:

bedankt

Cyriel
 
Hey warm bakkertje,


toch nog 1 klein vraagje
Hoe kan ik zorgen dat de andere cellen van het betreffende artikelen ook mee overgenomen worden
wellicht voor jouw nog een kleine aanpassing

alvast bedankt
 
Wat bedoel je met overige kolommen als jouw voorbeeldbestand slechts 3 kolommen bevat ?
 
Hey warm bakkertje

Ja ik had maar een simpel voorbeeld bestandje gemaakt.
In het echte bestand zitten natuurlijk artikel omschrijving verpakking inhoud eenhoud leverancier btw tarief enz.....

Alvast bedankt

Cyriel
 
Ok, maar over hoeveel kolommen spreken we dan ??
Dit is een gegeven dat nodig is om de macro aan te passen.
 
Post eens een voorbeeld dat gelijklopend is met je initiele vraag nl 2 werkbladen vergelijken en samenvoegen.
Ik kan uit je laatste voorbeeld niet opmaken welke kolommen in beide werkbladen(er is maar 1 werkblad ingevuld) moeten vergeleken en samengevoegd worden.
Plaats op het derde werkblad het resultaat dat je uiteindelijk wil krijgen.
 
Code:
Sub tst()
    Dim arr()
    For Each sh In Sheets(Array("art1", "art2"))
        For Each cl In sh.Columns(4).SpecialCells(2)
            If InStr(c01, cl.Value) = 0 Then c01 = c01 & "|" & cl.Value
        Next
    Next
    ReDim arr(1 To UBound(Split(c01, "|")), 1 To 9)
    For i = 1 To UBound(Split(c01, "|")) - 1
        arr(i, 1) = Split(c01, "|")(i + 1)
    Next
    For j = 1 To UBound(arr)
        For Each sh In Sheets(Array("art1", "art2"))
            For Each cl In sh.Columns(4).SpecialCells(2)
                If InStr(arr(j, 1), cl.Value) <> 0 Then
                    arr(j, 2) = cl.Offset(, 4)
                    arr(j, 3) = cl.Offset(, 13)
                    arr(j, 4) = cl.Offset(, 1)
                    arr(j, 5) = cl.Offset(, 2)
                    arr(j, 6) = cl.Offset(, 3)
                    arr(j, 7) = arr(j, 7) + cl.Offset(, 5)
                    arr(j, 8) = cl.Offset(, 7)
                    arr(j, 9) = arr(j, 9) + cl.Offset(, 8)
                End If
            Next
        Next
    Next
    With Sheets("samen")
        With .Cells(1, 1)
            .CurrentRegion.ClearContents
            .Resize(, 9) = Split("Artnr|Omschrijving|Leverancier|Verpakking|Inhoud|Eenheid|Aantal|Prijs|Omzet", "|")
        End With
        .Cells(2, 1).Resize(UBound(arr), 9) = arr
    End With
End Sub
 
Gaat Nog niet helemaal goed,:(

Het artikelnr extern moet vergeleken worden of die er is.
is deze er niet dan art nr vestiging wegzetten met zijn gegevens.
is deze er wel dan kijken of dat artikelnr op het andere werkblad staat
als deze ook op het andere werkblad staat dan de aantallen en omzetten optellen.
(dit kan je zien op mijn vorige bijlage, in samen, ik had de kaas opgeteld)

Sorry Hoor !
 
Hopelijk had je deze keer alle juiste informatie gegeven.
Code:
Sub tst()
    Dim arr()
    For Each sh In Sheets(Array("art1", "art2"))
        For Each cl In sh.Columns(15).SpecialCells(2)
            If InStr(c01, IIf(cl <> 0, cl.Value, cl.Offset(, -11).Value)) = 0 Then c01 = c01 & "|" & IIf(cl <> 0, cl.Value, cl.Offset(, -11).Value)
        Next
    Next
    ReDim arr(1 To UBound(Split(c01, "|")), 1 To 9)
    For i = 1 To UBound(Split(c01, "|")) - 1
        arr(i, 1) = Split(c01, "|")(i + 1)
    Next
    For j = 1 To UBound(arr)
        For Each sh In Sheets(Array("art1", "art2"))
            For Each cl In sh.Columns(15).SpecialCells(2)
                If InStr(arr(j, 1), IIf(cl <> 0, cl.Value, cl.Offset(, -11).Value)) <> 0 Then
                    arr(j, 2) = cl.Offset(, -7)
                    arr(j, 3) = cl.Offset(, 2)
                    arr(j, 4) = cl.Offset(, -10)
                    arr(j, 5) = cl.Offset(, -9)
                    arr(j, 6) = cl.Offset(, -8)
                    arr(j, 7) = arr(j, 7) + cl.Offset(, -6)
                    arr(j, 8) = cl.Offset(, -4)
                    arr(j, 9) = arr(j, 9) + cl.Offset(, -3)
                End If
            Next
        Next
    Next
    With Sheets("samen")
        With .Cells(1, 1)
            .CurrentRegion.ClearContents
            .Resize(, 9) = Split("Artnr|Omschrijving|Leverancier|Verpakking|Inhoud|Eenheid|Aantal|Prijs|Omzet", "|")
        End With
        .Cells(2, 1).Resize(UBound(arr), 9) = arr
    End With
End Sub
 
Helemaal geweldig:thumb:

Dit gaat geweldig werken!!!!!!!!!!


Bakkertje bedankt hé voor alle tijd en moeite


Cyriel
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan