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

Getallen uit verschillende werkbladen samenvoegen

Status
Niet open voor verdere reacties.

richardbakker

Gebruiker
Lid geworden
9 mrt 2010
Berichten
44
Goedemorgen!

Ik zit met de volgende situatie en ik heb geen idee hoe ik het op moet gaan lossen:

Ik heb drie werkblad met gegevens: A)Ideaal productaanbod, B)Overzicht actuele afzet en C)een databank met alle beschikbare producten en haar productgegevens.
Mijn vervolgtaak is om de EAN nummers uit A & B samenvoegen en vervolgens de bijbehorende gegevens plukken uit werkblad C.
Stap twee lijkt me niet zo lastig (verticaal zoeken op de benodigde informatie). Echter weet ik niet hoe ik de eerste stap automatisch kan laten verlopen.

In het kort: is het mogelijk om alle EAN nummers (staan in de eerste kolom) automatisch uit bestand A te trekken en onder elkaar te plaatsen in een nieuw werkblad. Vervolgens moeten hier de EAN nummers uit werkblad B aan worden toegevoegd. Dubbele EAN nummers mogen vervolgens worden overgeslagen.

Ik zou het voorbeeld wel willen plaatsen, maar dat mag ik niet doen vanwege informatiegevoeligheid (het is een stageopdracht). Ik hoop dat mijn omschrijving de bedoeling duidelijk maakt en ik hoop dat jullie mij een duwtje in de goede richting kunnen verschaffen.

UPDATE: Bijlage voorbeeld toegevoegd.
De oplossing waarnaar ik zoek: dat automatisch de cijfers uit de eerste kolom van werkblad 'Ideale producten', wordt toegevoegd naar het werkblad 'samenvoegen'. Vervolgens moeten de cijfers uit de eerste kolom van werkblad 'gevoerde producten', aan de cijfers worden toegevoegd welke net zijn geplaatst in het werkblad 'samenvoegen'. Het getal 708537 komt in beide werkbladen voor, dus die moet niet dubbel worden geplaatst in het werkblad 'samenvoegen'.

Ik hoop dat het zo wat duidelijker is!


Gr,
Richard
 

Bijlagen

  • voorbeeld Helpmij.xlsx
    10,5 KB · Weergaven: 34
Laatst bewerkt:
Dan haal je de gevoelige info er toch uit?
Of maak een zelfde document met relevante voorbeeld gegevens.
 
Dan haal je de gevoelige info er toch uit?
Of maak een zelfde document met relevante voorbeeld gegevens.

Akkoord, heb een voorbeeldje! De oplossing waarnaar ik zoek: dat automatisch de cijfers uit de eerste kolom van werkblad 'Ideale producten', wordt toegevoegd naar het werkblad 'samenvoegen'. Vervolgens moeten de cijfers uit de eerste kolom van werkblad 'gevoerde producten', aan de cijfers worden toegevoegd welke net zijn geplaatst in het werkblad 'samenvoegen'. Het getal 708537 komt in beide werkbladen voor, dus die moet niet dubbel worden geplaatst in het werkblad 'samenvoegen'.

Ik hoop dat het zo wat duidelijker is!
 
Laatst bewerkt:
Dat kun je oplossen door twee tabellen te maken van je gegevens, daar vervolgens twee queries voor maken en die queries samenvoegen.
 
Ik heb het in je voorbeeldje toegepast. De tabbladen qIdeaal en qGevoerd kun je verbergen, want die zijn alleen nodig om de query te maken. Ze worden automatisch bijgewerkt als je de hoofdquery ververst.
 

Bijlagen

  • voorbeeld Helpmij v1.xlsx
    28,4 KB · Weergaven: 48
Hee OctaFish, dank voor je antwoord. Ik moet eerlijk bekennen dat ik er nog niet heel veel wijzer van wordt. Op dit soort momenten loop ik echt tegen mijn beperkte Excel kennis aan. Ik zie niet echt hoe je het hebt gedaan? Tevens kan de bronlijst (ideale en gevoerde producten werkbladen) met producten echt iedere dag worden aangevuld of worden er producten verwijderd. Wordt dan de samengevoegde lijst ook automatisch hieraan aangepast?

EDIT: ik denk dat het komt doordat ik niet kan werken met power query? Ik heb privé een macbook waarop powerquery niet wordt ondersteund door Excel (?). En de windows pc op mijn stage heeft een te oude versie van Excel welke ik vanwege licensie etc. niet mag upgraden.. Kan dit zijn waarom ik niet zie wat je hebt gedaan?
 
Laatst bewerkt:
Met een macro. De code moet je plaatsen in de module van het blad 'Samenvoegen'

Code:
Private Sub Worksheet_Activate()
  UsedRange.Clear
  Set d = CreateObject("Scripting.Dictionary")
  For Each sh In Sheets(Array("Ideale producten", "Gevoerde producten"))
    ar = sh.Cells(1).CurrentRegion
    For j = 1 To UBound(ar)
      d(ar(j, 1)) = Array(ar(j, 2), ar(j, 3))
    Next j
  Next sh
  Cells(1).Resize(d.Count, 1) = Application.Transpose(d.keys)
  Cells(2).Resize(d.Count, 2) = Application.Index(d.items, 0, 0)
End Sub
 
Code:
Private Sub Worksheet_Activate()
  UsedRange.Clear
  Set d = CreateObject("Scripting.Dictionary")
  For Each sh In Sheets(Array("Ideale producten", "Gevoerde producten"))
    ar = sh.Cells(1).CurrentRegion
    For j = 1 To UBound(ar)
      d(ar(j, 1)) = Array(ar(j, 1), ar(j, 2), ar(j, 3))
    Next j
  Next sh
  Cells(1).Resize(d.Count, 3) = Application.Index(d.items, 0, 0)
End Sub
 
of zo?
 

Bijlagen

  • lijsten samenvoegen.xlsm
    21,6 KB · Weergaven: 28
@Octafish: de qGevoerd en qIdeaal tabs zijn niet nodig als je beide queries als connection only instelt.
 

Je bent een koning! Dit is echt wat ik moet hebben. Zou je misschien kunnen uitleggen wat je hier hebt gedaan? Dan kan ik het finetunen en doorvoeren.
Erg bedankt iedereen voor de input en het meedenken! Hier leer ik ook weer veel van!
 
De ene tabel selecteren, tabje Gegevens klikken, "Van Tabel", dan terug naar Excel en datzelfde herhalen voor de andere tabel. Dan op het tabje Gegevens "Nieuwe Query" (of "Gegevens ophalen", hangt van je precieze Excel versie af wat er staat), "Query's combineren", "Toevoegen" en dan de twee voorgaande queries selecteren.
 
Wil je per se met een macro?, dan kan er zeker veel meer snelheid in de code van @emields.
Code:
Option Explicit
Sub hsv()
Dim sv, sh As Worksheet, d As Object, i As Long, y As Long, a, b(5)
Set d = CreateObject("scripting.dictionary")
  For Each sh In Sheets
    If sh.Name <> "Samenvoegen" Then
      sv = sh.Cells(1).CurrentRegion
        For i = 1 To UBound(sv)
         a = d(sv(i, 1))
            If IsEmpty(a) Then a = b
                a(0) = sv(i, 1)
                        a(1) = IIf(y = 0, sv(i, 2), a(1))
                        a(2) = IIf(y = 0, sv(i, 3), a(2))
                        a(3) = IIf(y = 0, a(3), sv(i, 2))
                        a(4) = IIf(y = 0, a(4), sv(i, 3))
                d(sv(i, 1)) = a
         Next i
      y = y + 1
    End If
  Next sh
With Sheets("samenvoegen").Cells(2, 1)
  .CurrentRegion.ClearContents
  .Resize(d.Count, 5) = Application.Index(d.items, 0, 0)
End With
End Sub

En dan kan a(1) t/m a(4) ook nog wel gesplitst worden als dat meer snelheid zou opleveren.
 

Bijlagen

  • lijsten samenvoegen.xlsb
    19,8 KB · Weergaven: 23
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan