Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1652to1656
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Dynamisches Kopieren mit VBA

Dynamisches Kopieren mit VBA
04.11.2018 18:14:18
silverchair
Guten Abend zusammen,
ich versuche derzeit aus diversen Quelltabellenblättern (einheitliches Format) eine zeilen- und spaltenweise Zuordnung in einem
Zieltabellenblatt vorzunehmen.
Über statische Zellbezüge habe ich dies auch schon hinbekommen. Da sich im Zielbereich jedoch Zeilen und Spalten verschieben
können, muss das Makro dynamisch sein.
Bisher versucht habe ich folgendes:
1) Formellösung (Matrixformeln mit indirekt) -->Rechner ging in die Knie, da mehr als 20.000 Zeilen beansprucht werden
2) VBA-Lösung mit fixen Zeilen- und Spaltenbezügen -->deutlich schneller, jedoch nicht praktikabel (wegen möglicher Verschiebungen).
Leider sind meine VBA-Kenntnisse nicht ausreichend, um das Vorhaben dynamisch zu gestalten, daher habe ich eine Beispielmappe
erstellt und hoffe, dass sich jemand findet, der mir diesbezüglich helfen kann.
Vielen Dank.
Herzliche Grüße
silverchair
Ich habe hier eine Beispielmappe hochgeladen:
https://www.herber.de/bbs/user/125118.xlsm

48
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Dynamisches Kopieren mit VBA
04.11.2018 18:22:53
Werner
Hallo,
hast du mal versucht deine hochgeladene Datei zu öffnen?
Bei mir zumindest Fehler.
Gruß Werner
AW: Dynamisches Kopieren mit VBA
04.11.2018 18:32:00
Daniel
Hi
ne Formellösung sollte eigentlich funktionieren, wenn du die Zeilen- und Spaltennummern in Hilfszellen berechnest, so dass sie nicht in jeder Formel erneut bestimmt werden müssen sondern nur einmalig in den Hilfzellen.
aber die eigenliche Krux ist der zweite Block in deinen Quelltabellen ab Spalte J.
dazu gibt es ein paa Fragen:
1. gibt es viele solcher Blöcke nebeneinander in einer Datei?
2. stehen in diesen Blöcken dann immer die gleichen Keys oder können die Unterschiedlich sein?
3. wenns immer die gleichen sind, wie in deinem Beispiel, warum sind die dann unterschiedlich sortiert? kann und darf man sie in die gleiche Sortierung bringen wie die Keys im ersten Block so dass in allen Blöcken nebeneinander in jeder Zeile immer die gleichen Keys stehen?
Gruß Daniel
Anzeige
also als Antworter in Office-Forum
04.11.2018 18:41:25
Daniel
würde ich mich jetzt ein bisschen Verarscht vorkommen.
warum hier nochmal die Frage stellen, wenn dort schon an dem Thema gearbeitet wird?
für Leute wie dich sollten Foren nicht mehr kostenfrei sein, sondern für jede erhaltene Antwort eine Gebühr fällig werden.
Dann wäre das Thema Crosspostiong ganz schnell vom Tisch.
Gruß Daniel
AW: also als Antworter in Office-Forum
04.11.2018 18:54:44
silverchair
Verarschen oder verärgern wollte ich damit mit niemand, sondern das Thema nur auf eine breitere Wissensbasis stellen.
Falls das gegen die Ethikregeln des Forums verstösst, tut mir das leid. Das war keine böse Absicht.
Anzeige
AW: also als Antworter in Office-Forum
04.11.2018 19:02:29
Daniel
in den meisten Forens-FAQs oder Nettiquetten steht was zum Thema "Crossposting" geschrieben.
Gruß Daniel
AW: also als Antworter in Office-Forum
04.11.2018 19:13:22
silverchair
Wie gesagt, falls das nicht erwünscht war, dann sorry dafür.
Eigentlich kann der Beitrag wieder gelöscht werden, weil
nach dieser Aktion sowieso niemand mehr antworten wird...:-/
AW: also als Antworter in Office-Forum
04.11.2018 19:23:17
Daniel
Ist eh ziemlich komplex das ganze.
die Frage wäre auch, in wie weit man in deine datenstruktur eingreifen und diese zugunsten einer vereinfachten Programmierung verändern darf.
ansonsten würde ich hier eher zu einem Profi raten, der dir eine auf deine Anforderungen maßgeschneiderte Lösung erzeugt.
wenn du dir da selber was programmieren willst, dann schau dir mal das Dictionary-Objekt an.
damit könntest du in einer ersten Schleife über die Quellblätter die Daten einsammeln und dann in einer zweiten Schleife im Zielblatt ausgeben.
gruß Daniel
Anzeige
AW: also als Antworter in Office-Forum
04.11.2018 19:23:19
Daniel
Ist eh ziemlich komplex das ganze.
die Frage wäre auch, in wie weit man in deine datenstruktur eingreifen und diese zugunsten einer vereinfachten Programmierung verändern darf.
ansonsten würde ich hier eher zu einem Profi raten, der dir eine auf deine Anforderungen maßgeschneiderte Lösung erzeugt.
wenn du dir da selber was programmieren willst, dann schau dir mal das Dictionary-Objekt an.
damit könntest du in einer ersten Schleife über die Quellblätter die Daten einsammeln und dann in einer zweiten Schleife im Zielblatt ausgeben.
gruß Daniel
AW: also als Antworter in Office-Forum
04.11.2018 19:48:42
silverchair
Ja, da hast du recht.
Also das TB Ziel kann durchaus verändert werden, wobei die Struktur GW/IW dabei nicht aufgegeben werden darf.
Die Quell-TB sind ziemlich unveränderlich...
Eine Ausnahme stellen die auf einem TB hintereinander liegenden Bereiche dar.
Diese könnten zugunsten einer Prozedur auch auf neue TB verteilt werden.
Das Thema Dictionary schaue ich mir mal an.
Vielen Dank.
Anzeige
AW: also als Antworter in Office-Forum
04.11.2018 20:49:32
Daniel
Hi
probier mal diesen Code, getestet mit deiner Beispieldatei aus dem anderen Forum.
Sub test()
Dim dicErg As Object
Dim dicDat As Object
Dim z As Long, s As Long
Dim arrDat, dat
Dim rng As Range
Dim arr
Dim ID
Dim erg
Dim sh As Worksheet
Set dicErg = CreateObject("Scripting.dictionary")
'--- Datumswerte einlesen
With Sheets("Ziel")
arrDat = Range(.Cells(2, 9), .Cells(2, 9).End(xlToRight)).Value
End With
'--- Daten aus TAbellenblättern lesen
For Each sh In ThisWorkbook.Worksheets
If sh.Name  "Ziel" Then
arr = sh.UsedRange.Value
For s = 1 To UBound(arr, 2) Step 9
For z = 3 To UBound(arr, 1)
If arr(z, s) = "" Then Exit For
ID = sh.Name & "_" & arr(z, s)
If dicErg.exists(ID) Then
Set dicDat = dicErg(ID)
Else
Set dicDat = CreateObject("Scripting.dictionary")
For Each dat In arrDat
dicDat(Replace(dat, " ", "_")) = ""
Next
End If
dicDat(arr(1, s + 6)) = arr(z, s + 6)
dicDat(arr(1, s + 7)) = arr(z, s + 7)
Set dicErg(ID) = dicDat
Next
Next
End If
Next
'--- Ergebnis schreiben
ReDim erg(1 To dicErg.Count, 1 To 7 + UBound(arrDat, 2))
z = 0
For Each ID In dicErg.keys
z = z + 1
erg(z, 1) = Split(ID)(0)
erg(z, 2) = Mid(ID, InStr(ID, "_") + 1)
For s = 3 To 7
erg(z, s) = Split(ID, "_")(s - 1)
Next
Set dicDat = dicErg(ID)
For s = 1 To UBound(arrDat, 2)
erg(z, 7 + s) = dicDat(Replace(arrDat(1, s), " ", "_"))
Next
Next
Sheets("Ziel").Cells(12, 2).Resize(UBound(erg, 1), UBound(erg, 2)) = erg
End Sub

und wenn das problem gelöst ist, bitte auch das andere Forum informieren.
Gruß Daniel
Anzeige
AW: also als Antworter in Office-Forum
04.11.2018 20:56:59
silverchair
Hallo Daniel,
auch der Code funktioniert.
Spitze!
Nun habe ich zwei wirklich tolle Lösungen, die ich mir morgen mal anschauen kann.
Dabei interessiert mich auch das Thema Performance (bei rund 20.000 zu verarbeitenden Zeilen).
Das Scripting Dictionary ist für mich echt eine Herausforderung :-D
Danke Euch beiden!
Das andere Forum informiere ich.
AW: also als Antworter in Office-Forum
04.11.2018 20:59:44
Daniel
scripting.dictionary solltest du dir unbedingt draufschaffen.
damit lassen sich insbesondere bei großen Datenmengen solche Probleme oft einfach und vorallem schnell lösen.
Gruß Daniel
AW: also als Antworter in Office-Forum
05.11.2018 07:22:30
silverchair1
Guten Morgen Daniel,
bin gerade am Probieren mit deiner Lösung.
Dabei ist mir folgendes aufgefallen.
Die Prozedur kopiert zwar alles in die richtigen Spalten, jedoch immer direkt untereinander.
Beim Kopieren sollen die Quelldaten (Quelle 1:n) in den jeweiligen Bereich des TB "Ziel" kopiert werden.
Zwischen den Bereichen können durchaus leere Bereiche verbleiben.
Hast Du eine Idee woran das liegen könnte ?
Viele Grüße und angenehmen Wochenstart.
silverchair
Anzeige
AW: also als Antworter in Office-Forum
05.11.2018 07:55:53
Daniel
Ich hab's so programmiert, weil ich bei s
Der von dir genannten Datenmenge die Zwischenzeilen für unnötig und störend halte und so dass ganze wesentlich schneller geht.
Die Quelle steht ja vorne in der ersten Zeile.
Gruß Daniel
AW: also als Antworter in Office-Forum
05.11.2018 08:20:23
silverchair1
Ok, verstehe. Die Datenmenge ist in der Tat groß.
Ich schau mal, ob das so funktioniert.
Vielen Dank schonmal.
AW: also als Antworter in Office-Forum
05.11.2018 08:39:10
silverchair1
Hallo nochmal,
ich habe noch zwei Fragen:
1) an welcher Stelle wird definiert, dass die "Quelle" in Spalte 2 des Ziels gesucht werden soll ?
2) deine Idee, die Quelle mit dem Key zu verknüpfen finde ich gut. Was müsste ich ändern, damit nur noch dieser Schlüssel geschrieben wird ?
Anzeige
AW: also als Antworter in Office-Forum
05.11.2018 09:06:18
Daniel
naja, in der letzten Schleife.
in der Variable ID steht der vollständige Key, dh der Key aus deinen Listen und davor der Tabellenblattname mit "_" getrennt.
alles was "Erg(z, 1-7)=.." enthält, defniert welche Teile des Keys in welche Spalten geschrieben werden.
alles was "Erg(z, 8-x)=.." enthält, schreibt die dazugehörigen Werte in die jeweilige Datumsspalte.
Gruß Daniel
AW: also als Antworter in Office-Forum
05.11.2018 09:10:01
silverchair1
ah ok. und die (hoffentlich) letzte Frage:
Was macht dieser Part?

dicDat(arr(1, s + 6)) = arr(z, s + 6)
dicDat(arr(1, s + 7)) = arr(z, s + 7)

AW: also als Antworter in Office-Forum
05.11.2018 09:16:19
Daniel
dem Dictionary zum jeweiligen Datum den dazugehörigen Betrag zuweisen.
Gruß Daniel
Anzeige
AW: also als Antworter in Office-Forum
05.11.2018 09:56:43
silverchair1
Bedeutet das, wenn ich später 36 Datümer habe, dass ich 36 solcher Einträge benötige ?
AW: also als Antworter in Office-Forum
05.11.2018 10:07:05
Daniel
der Code verwendet die Spaltenüberschriften aus den Tabellen und ordnet sie den Spaltenüberschriften zu, die in der Übersichtstabelle in der zweiten Zeile stehen.
im Ergebnis werden nur die Datumswerte angezeigt, die dort hinterlegt sind.
In der Zeile 2 der Zusammenfassungstabelle musst du also alle Datumswerte hinschreiben.
Gruß Daniel
AW: also als Antworter in Office-Forum
05.11.2018 12:22:44
silverchair1
Sorry, dass ich nochmal nerven muss.
In meiner Beispieldatei waren nicht alle Monatsspalten enthalten, um die Übersicht nicht zu überfrachten.
Nun habe ich das Makro mit jeweils 12 Monatsspalten getestet und es werden nur die Werte der ersten beiden Monate kopiert.
Anzeige
AW: also als Antworter in Office-Forum
05.11.2018 12:53:03
Daniel
Hi
hast du die Monatsnamen genauso geschrieben, wie sie in den Tabellen vorkommen?
ohne die Datei und deinen Code zu kennen, kann ich dir nicht viel dazu sagen.
Gruß Daniel
AW: also als Antworter in Office-Forum
05.11.2018 13:16:56
silverchair1
Hi,
ja die Monatsnamen sind genau gleich geschrieben.
Ich habe das eben nochmal mit der hier von mir hochgeladenen Datei probiert und in beiden Quell-TB sowie im Ziel-TB die fehlenden Monatsspalten ergänzt. Es sind nun jeweils 12 Monatsspalten.
Im Ergebnis werden trotzdem nur die ersten beiden kopiert. Ich verstehe das nicht.
AW: also als Antworter in Office-Forum
05.11.2018 13:26:55
Daniel
wo stehen 12 Monatsspalten?
in den Quell-Tabellenblättern?
in den Beispieldateien standen dort immer nur 2, dafür aber dann mehrere Blöcke nebeneinander, denn die Anzahl der Blöcke in den beiden Sheets war unterschiedlich.
Dafür war die Anzahl der Monatsspalten innerhalb eines Blockes immer gleich.
2 Monatspalten bei einer Blockgrösse von insgesamt 9 Spalten wobei in einer Tabelle mehrere solcher Blöcke mit Key und 2 Monatswerten nebeneinander vorkommen können.
So war deine Beispieldatei, und darauf ist mein Code ausgelegt.
wenn du die Beispieldatei so veränderst, dass sie vom Aufbau her nicht mit der Originaldatei übereinstimmt, dann hast du Pech gehabt, denn ich kenne deine Originaldatei nicht, sondern nur deine Beispieldatei.
Sowas ist ärgerlich.
es wäre weniger ärgerlich, wenn du mich für jeden Programmieraufwand, den ich für dich leiste, nach Zeit bezahlen würdest.
aber arbeite dich doch mal in den Code ein, vielleicht kannst du ihn dir ja selber anpassen.
die Anpassung von der Originaldatei auf die Beispieldatei ist dir ja auch gelungen, jetzt musst du quasi die Rückwärtsanpassung im Code vornehmen.
Gruß Daniel
AW: wobei ich habs mir nochmal
05.11.2018 18:24:55
Daniel
angeschaut:
ist die Anzahl der Monatspalten in allen Blöcken und allen Tabellenblätterrn immer gleich und kann diese fest angegeben werden oder muss diese pro Blatt (oder noch schlimmer pro Block) individuell ermittelt werden?
wenn die Anzahl der Monate immer gleich ist, sollte sich der Code relativ einfach anpassen lassen (so einfach, dass auch du das mit meiner Hilfe selber machen kannst)
Gruß Daniel
AW: wobei ich habs mir nochmal
05.11.2018 19:06:41
silverchair1
Hallo Daniel, habe den ganzen Nachmittag versucht den Code anzupassen, weil ich hier nicht schon wieder nerven wollte...
Also der Bereich die Anzahl der Monatsspalten ist in jeder Quelle gleich (12).
Der Bereich vor den Monatsspalten (also alles was Schlüssel sind) variiert jedoch, so dass nicht immer auf die gleichen "Abstände" zurückgegriffen werden kann.
Ich glaube, dass ich mit meinen Versuchen auf die Bretter gegangen bin, weil die Quell- und Zielarrays unterschiedliche Dimensionen haben ?
AW: wobei ich habs mir nochmal
05.11.2018 19:11:48
Daniel
wieviele solcher Überraschungen hast du noch parat?
vielleicht sollest du dir doch einen Profi suchen, dem du die komplette Datei mit allen Variationen und Sonderfällen übergeben kannst?
ohne angemessene Aufwandsentschädigung wird mir das langsam zu aufwendig.
Gruß Daniel
AW: wobei ich habs mir nochmal
05.11.2018 19:22:13
silverchair1
Vermutlich hast du recht.
Habe das Thema wohl unterschätzt...
vielleicht ist es auch gar nicht mal so schwer
05.11.2018 19:26:07
Daniel
aber ist halt lästig, wenn du jedes mal mit einer neuen "Spezialtät" ankommst und man dann nochmal für dich arbeiten darf (und das für lau)
wobei ich mich dann auch noch fragen würde, wie du einen vernünftigen Key erstellen willst, wenn die Spalten, die den Key erzeugen, nicht immer die gleichen sind.
Gruß Daniel
AW: vielleicht ist es auch gar nicht mal so schwer
05.11.2018 19:31:22
silverchair1
Mit Formeln kenne ich mich ja wirklich gut aus, und helfe auch überall, wo ich es kann (auch bei Kollegen). Aber bezüglich VBA bin ich echt nicht fit (leider).
Wie kann ich mich revanchieren ?
Der Masterkey steht immer in Spalte A eines jeden Quell-TB. Nur dieser wird ja auch später in das Ziel-TB übernommen.
Die Keys der Folgebereiche (ich nenne sie mal Secondary keys) dienen lediglich der eindeutigen Zuordnung der Folgebereiche zu den Masterkeys.
Crosspostiong
06.11.2018 08:15:52
Daniel
als Crossposter solltest du alle Foren, in denen du die Anfrage gestellt hast, regelmäßig auf neue Antworten überprüfen, auch wenn sich scheinbar die Diskussion auf ein Forum zu verlagert hat.
Gruß Daniel
AW: Crosspostiong
06.11.2018 09:11:10
silverchair1
Danke! Ich schaue es mir an.
Gruß
Als Crossposter...
06.11.2018 19:29:08
silverchair1
solltest du alle Foren, in denen du antwortest, regelmäßig auf Antworten überprüfen ;-)
Vielen Dank für deine Unterstützung.
PS: (und bitte nicht falsch verstehen!). Versuche mal bitte etwas an deinem Umgang mit Neulingen zu arbeiten. Crossposting ist kein Grund gleich an die Wand gestellt bzw. lächerlich gemacht zu werden.
Super Ast ( Betreff-Text ).kwT
05.11.2018 12:16:14
robert
AW: Dynamisches Kopieren mit VBA
04.11.2018 18:42:45
silverchair
Das mit der Formellösung habe ich probiert. Es ist deutlich aufwändiger und
echt ressourcenfressend...
Zu deinen Fragen:
1) es gibt zwischen 1-3 solcher Blöcke
2) die Keys der Blöcke sind immer gleich
3) die Reihenfolge ist leider immer unterschiedlich und die Anzahl variiert auch.
AW: Dynamisches Kopieren mit VBA
04.11.2018 20:20:51
UweD
Hallo
hier eine Lösung von mir
Option Explicit

Sub QuellCopy()
    On Error GoTo Fehler
    Dim TB1, TB, i As Integer, StartZ As Double
    Dim Z1 As Integer, LC As Integer, LR As Double
    Dim SpQ As Integer, ZQ1 As Integer, QSp As Integer
    
    Set TB1 = Sheets("Ziel")
    Z1 = 2 'Zeile mit Keys 
    SpQ = 2 'Spalte mit Quellinfo 
    ZQ1 = 3 'Zeile1 in Quelle 
    LC = TB1.Cells(Z1, TB1.Columns.Count).End(xlToLeft).Column 'letzte Spalte einer Zeile 

    For Each TB In ActiveWorkbook.Sheets
        If TB.Name <> TB1.Name Then 'Jedes Blatt ausser das Erste 
            On Error Resume Next
            StartZ = WorksheetFunction.Match(TB.Name, TB1.Columns(SpQ), 0) + 1 'Finder der ZielZeile nach Blattname 
            On Error GoTo Fehler
            If StartZ > 0 Then
                LR = TB.Cells(TB.Rows.Count, "A").End(xlUp).Row 'letzte Zeile der Spalte 
                
                For i = SpQ + 1 To LC
                    On Error Resume Next
                    QSp = WorksheetFunction.Match(TB1.Cells(Z1, i), TB.Rows(1), 0) 'Spalte des Keywords finden 
                    On Error GoTo Fehler
                    If QSp > 0 Then
                        
                        'Werte von Quelle nach Ziel übertragen 
                        TB1.Cells(StartZ, i).Resize(LR - ZQ1 + 1).Value = _
                            TB.Cells(ZQ1, QSp).Resize(LR - ZQ1 + 1).Value
                        QSp = 0
                    End If
                Next
                
            End If
            StartZ = 0
        End If
    Next
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

Achtung die Formeln habe ich abgeändert

Ziel
 IJKLMNOPQRST
2GW_Januar_2018IW_Januar_2018GW_Februar_2018IW_Februar_2018GW_März_2018IW_März_2018GW_April_2018IW_April_2018GW_Mai_2018IW_Mai_2018GW_Juni_2018IW_Juni_2018

verwendete Formeln
Zelle Formel Bereich N/A
I2,K2,M2,O2,Q2,S2="GW_"&TEXT(I$1;"MMMM")&"_"&TEXT(I$1;"JJJJ")  
J2,L2,N2,P2,R2,T2="IW_"&TEXT(J$1;"MMMM")&"_"&TEXT(J$1;"JJJJ")  
http://excel-inn.de/dateien/vba_beispiele/tabellenanzeige_in_html_addin.zip
http://Hajo-Excel.de/tools.htm
XHTML-Tabelle zur Darstellung in Foren, einschl. der neuen Funktionen ab Version 2007
Add-In-Version 25.14 einschl. 64 Bit


LG UweD
AW: Dynamisches Kopieren mit VBA
04.11.2018 20:52:03
silverchair
Hallo Uwe,
was soll ich sagen ?
Funktioniert traumhaft!
Dann kann ich mir dein Werk morgen mal genauer anschauen, um es auch zu verstehen :-)
Vielen dank nochmal.
Ich wünsche noch einen schönen Rest-Sonntag :-)
Viele Grüße
silverchair
AW: Dynamisches Kopieren mit VBA
05.11.2018 10:42:23
silverchair1
Hallo Uwe,
ich habe mir deine Prozedur nun angeschaut. Sie kopiert (das ist schonmal gut :-).
Allerdings habe ich noch ein kleines Problem.
Es werden (m.E.) die Werte in die gleiche Zeile wie in der Quelle geschrieben (gleicher Versatz).
Jedoch ist die Länge der Datenbereiche GW/IW unterschiedlich, so dass eine Zuordnung nur über den Schlüssel erfolgen kann (INDEX/Match ?).
Ich denke hier liegt das Problem:

TB1.Cells(StartZ, i).Resize(LR - ZQ1 + 1).Value = TB.Cells(ZQ1, QSp).Resize(LR - ZQ1 + 1).Value

AW: Dynamisches Kopieren mit VBA
05.11.2018 13:13:50
UweD
Hallo
TB1.Cells(StartZ, i).Resize(LR - ZQ1 + 1).Value = TB.Cells(ZQ1, QSp).Resize(LR - ZQ1 + 1).Value

die Laufvariable i:
- Diese geht von 3 bis zur letzten gefundenen Spalte im Zielblatt
- Der jeweilige Key der Spalte (i)aus Zeile 1 wird in der jeweiligen Quelle gesucht
QSp = WorksheetFunction.Match(TB1.Cells(Z1, i), TB.Rows(1), 0)
und der Wert der gefundenen Spalte wird dann übertragen
- Wird der Key in der Quelle nicht gefunden, bleibt der Wert in der Zielspalte(i) leer
-die Reihenfolge zwischen Ziel und QuelleSpalte kann dabei verschieden sein
LG UweD
AW: Dynamisches Kopieren mit VBA
05.11.2018 18:13:49
silverchair1
Hallo Uwe,
ich habe mich heute mit beiden Lösungen beschäftigt (Deine und Daniels).
Deine habe ich soweit zum Laufen bekommen, an der von Daniel arbeite ich noch...
Das Problem was ich heute Mittag versucht habe zu erklären, lässt sich an
der Beispieldatei ganz gut nachvollziehen.
Ich versuche es mal zu formulieren.
Beim Kopieren der Quellwerte gilt der Key in Spalte A der Quelle immer als "Masterkey".
Dieser Key ist nachher maßgeblich, um die Werte der Folgebereiche vernünftig zuordnen zu können.
Ich habe das Makro in die Beispielmappe eingefügt und Textboxen zur Erklärung hinzugefügt.
So wie die Prozedur derzeit läuft, werden die "IW-Werte" des zweiten Bereichs auf Quelle1 den falschen Schlüsseln im Ziel zugeordnet.
Im Ziel gibt es den Schlüssel nur 1x. Daher hatte ich versucht zu erklären, dass zunächst der Schlüssel aus Spalte A der jeweiligen Quelle in das Ziel kopiert wird und anschließend erst die Zuordnung der GW- und IW-Werte über diesen Schlüssel erfolgt.
Hast Du hierzu eine Idee ?
Lieben Dank.
silverchair
https://www.herber.de/bbs/user/125152.xlsm
AW: Dynamisches Kopieren mit VBA
06.11.2018 08:51:18
UweD
Hallo
ok. Ich hatte nicht beachtet, dass in Spalte N ja eine andere Reihenfolge besteht
- Ist denn Spalte N in jeder Quelle immer für Key0 nutzbar?
= dann müssten erst der Verweis über Spalte C und dann nochmal über N erfolgen
- Ist die Anzahl der Einträge in N immer &lt= der Anzahl in C?
LG UweD
AW: Dynamisches Kopieren mit VBA
06.11.2018 09:10:25
silverchair1
Hallo Uwe,
ja, die Spalte N ist immer für Key0 nutzbar und immer kleiner/gleich Anzahl in C.
VG
silverchair
AW: Dynamisches Kopieren mit VBA
06.11.2018 10:39:22
UweD
Hallo nochmal
was ist denn, wenn es über den Juni hinausgeht? Was ist dann mit Spalte N? auch des Ende hinten würde sich ja dann verschieben.
AW: Dynamisches Kopieren mit VBA
06.11.2018 10:56:55
silverchair1
Könnte man evtl. die Spalte N mit einer geeigneten Spaltenüberschrift ansteuern ?
AW: Dynamisches Kopieren mit VBA
06.11.2018 11:09:02
UweD
Hallo
ja, aber das wird mir jetzt zu viel für mal gerade eben so. läuft auf Auftragsprogrammierung hinaus
Ich bin raus..
LG UweD
AW: Dynamisches Kopieren mit VBA
06.11.2018 11:46:26
silverchair1
Hallo
ok. Feste Spalten wären dann vermutlich einfacher ?

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige