Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
2 Tabellen zusammenführen
#1
Hallo Zusammen,

ich habe mal wieder ein Thema das etwas kniffliger ist und ich bin auch nicht sicher ob es machbar ist. Ich würde es gerne per VBA lösen.

Ich habe eine Tabelle Gesamt_mit_Forecast in dieser Tabelle stehen in Spalte A ID und ich möchte nun das eine Zeile unter die ID eingefügt wird, wenn die ID auch in der Liste Master_VNB vorhanden ist. und es soll der entsprechende Euro wert in den korrekten Monat eingetragen werden. ich habe diese jetzt mal Händisch mit ROT eingefügt, so hätte ich es eben gerne per VBA, vielleicht hat Jemand etwas ähnliches bereits gemacht und kann mir Anregungen geben?

Vielen Dank


https://www.ms-office-forum.net/forum/sh...ost2063341


Angehängte Dateien
.xlsm   Test.xlsm (Größe: 79,14 KB / Downloads: 2)
Zitieren
#2
https://office-fragen.de/thread-13.html
Bitte nachholen.
Danke.
Gruß,
steve1da
Zitieren
#3
nachgeholt :-) Danke für den Hinweis in der Regel stelle ich nur in einem Forum ein, da es aber dringend ist :-)
Zitieren
#4
Hallo,
da ich glaube, die Beiträge im anderen Office-Forum helfen Dir so richtig nicht weiter, hier ein Versuch, ob ich Deine Bitte richtig verstanden habe.
Die Konstanten am Anfang musst Du bei Änderung der Datenstruktur (die in der Tat überarbeitungswürdig ist, vermutlich aber nicht von Dir zu vertreten ist[Bild: wink.png]), ggfls. anpassen.
Code:
Sub Ergaenzung()
Const QuellIDSpalte = 32 'Spalte STID in Quelle
Const FirstDat = 123 'erste  Spalte mit Datum in Quelle
Dim Quelle As Object, Ziel As Object, erg As Variant
Dim QZeile As Long, QSpalte As Long, STID As String, ZZeile As Long, MyDiff As Long
  Set Quelle = ThisWorkbook.Sheets("Master_VNB")
  Set Ziel = ThisWorkbook.Sheets("Gesamt_mit_Forecast")
  With Quelle
    MyDiff = DateDiff("m", Ziel.Cells(1, 3), .Cells(1, FirstDat))
    For QZeile = 2 To .Cells(Rows.Count, QuellIDSpalte).End(xlUp).Row
      STID = .Cells(QZeile, QuellIDSpalte)
      Set erg = Ziel.Range("A:A").Find(what:=STID, lookat:=xlWhole)
      If Not (erg Is Nothing) Then 'ID auch in Ziel
        ZZeile = erg.Row + 1
        If Ziel.Cells(ZZeile, 1) <> STID Then 'ggfls. Zeile einfügen
          Ziel.Rows(ZZeile).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
          Ziel.Cells(ZZeile, 1) = STID
        End If
        QSpalte = FirstDat
        Do
          If Val(.Cells(QZeile, QSpalte)) > 0 Then 'wert vorhanden
            Ziel.Cells(ZZeile, QSpalte - FirstDat + 3 + MyDiff) = Quelle.Cells(QZeile, QSpalte)
          End If
          QSpalte = QSpalte + 1
        Loop Until IsEmpty(.Cells(1, QSpalte))
      End If
    Next QZeile
  End With
End Sub
Gruß der AlteDresdner (Win11, Off2021)
Zitieren
#5
Tausend Dank, in der Test Datei macht er schon einmal genau das was ich suche, was ich vergessen habe, es kann sein das die ID in der Liste Master_VNB auch mal leer sein kann, kann man diese einfach überspringen und mit der nächsten weiter machen?  und vielleicht noch wichtig, das in der Quelldatei keine Werte sondern Formeln stehen, kann dies Probleme machen?
Zitieren
#6
Hallo,
die lere ID wird durch Ersatz der einen Zeile im Code abgefangen
If Not (erg Is Nothing) And STID <> "" Then 'ID auch in Ziel und nicht leer
Das andere (Formel) macht keine Probleme.
Gruß der ALteDresdner
Gruß der AlteDresdner (Win11, Off2021)
Zitieren
#7
ok, kann es daran liegen das die ID´s in der Quelle Liste mehrfach vorkommen können?
Zitieren
#8
Hallo,
dort werden dann die Werte>0 des letzten EIntrags hingeschrieben. Leere Spalten werden übergangen.
Gruß der AlteDresdner (Win11, Off2021)
Zitieren
#9
Mit anderen Worten: Es werden nacheinander die EInträge abgearbeitet. Ist in einem späteren EIntrag ein Wert >0 vorhandn, überschreibt er einen evtl. früher dort schon hingeschriebenen Wert. Wenn es da eine andere Mimik geben soll, müsstest Du sagen wie.
Gruß der AlteDresdner (Win11, Off2021)
Zitieren
#10
Oh es wäre toll wenn jede Spalte mit ID und wert eingefügt wird, aber ich weiß nicht ob das machbar ist? wenn also eine ID 3 mal vorkommt, sollen 3 Spalten mit den entsprechenden Werten eingetragen werden, wenn nur einmal dann nur eine... :-D
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions