Zeilen nicht überschreiben
#1
Hallo zusammen und Euch allen frohe Weihnachten,

ich habe ein Problem vereinfacht dargestellt,. ich habe zwei Tabellen mit zwei/bzw. 3 spalten, die Werte in Tabelle 2 sind variable eingaben.
Mittels eines Makros filtere ich nur die Zeilen aus Tabelle 2 die einen bestimmten Wert in spalte a haben, diese werden kopiert und in Tabelle 1 untereinander ohne Leerzeilen eingefügt.
Funktioniert Super. Aber ich muss in Tabelle 1 in Spalte 3 werte eingeben. Hat sich jetzt der Inhalt in Tabelle 2 geändert muss ich ja wieder den Makro ausführen um auch die geänderten Zeilen nach Tabelle 1 zu transferieren. Dabei werden ALLE Zeilen in Tabelle 1 überschrieben und alle Einträge in Spalte 3 sind weg.

Ich hoffe Ihr habt mein Problem verstanden.  Es handelt sich dabei später nach Lösung des Problems um Tabellen aus verschiedenen Mappen.

hier noch der Code.

Sub aktualisieren()
'
' aktualisieren Makro
'

'
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long

With Tabelle2
ZeileMax = .UsedRange.Rows.Count
n = 1

For Zeile = 2 To ZeileMax

If .Cells(Zeile, 1).Value = "Fertig" Then

.Rows(Zeile).Copy Destination:=Tabelle1.Rows(n)
n = n + 1

End If
Next Zeile
End With
End Sub
Antworten Top
#2
Hallöchen,

ist normal, wenn Du mit einem festen Wert für n arbeitest.

Du müsstest entweder
- feststellen, ob sich die Daten bereits in Tabelle1 befinden --> Code für das "Suchen" kannst Du aufzeichnen
- wenn gefunden, dann nur Spalte A+B und D bis Ende getrennt kopieren
- an den beiden Positionen getrennt einfügen
- wenn nicht gefunden, neue Zeile unter die letzte belegte schreiben
oder, falls es nur um am Ende hinzugefügte Zeilen geht
- feststellen, wie viele Zeilen in Tabelle1 und Tabelle2 belegt sind
- sind es in Tabelle2 mehr Zeilen, dann ab der ersten unterschiedlichen Zeilennummer kopieren
- unter der letzten gefüllten Zeile in Tabelle1 einfügen
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#3
Danke für die schnelle Antwort,
ich habe mir schon gedacht das es vorher eine Abfrage geben muss. 

Wie müsste dann der Code ausschauen ???

Ich schon ein wenig "experimentiert", bekomme es aber nicht hin.

Vielen Dank für Deine Hilfe
Antworten Top
#4
Hallöchen,

welcher von beiden Ansätzen wäre denn der zutreffende?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#5
Hallo,

ich denke das die erste Variante die passende wäre,

feststellen, ob sich die Daten bereits in Tabelle1 befinden --> Code für das "Suchen" kannst Du aufzeichnen
- wenn gefunden, dann nur Spalte A+B und D bis Ende getrennt kopieren
- an den beiden Positionen getrennt einfügen
- wenn nicht gefunden, neue Zeile unter die letzte belegte schreiben


denn in Tabelle2 ändert sich nur die Spalte 1 von "in Arbeit"  auf "Fertig", alle Zeilen die mit Fertig beginnen werden dann in Tabelle 1 Kopiert und dort händisch weiterbarbeitet.

Nochmals vielen Dank
Antworten Top
#6
Hallöchen,

und nach welcher Spalte kann man vergleichen, ob ein Datensatz schon in Tabelle1 enthalten ist?
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#7
Hallo André,
In beiden Tabellen steht in Spalte B jeweils der gleiche Wert.

Gruß Norbert
Antworten Top
#8
Hallo

dieses kleine Makro listet nur Werte auf die in Tabelle12 in der Spalte B noch nicht vorhanden sind. Sie werden unten angehangen.

mfg  gast 123

Code:
Sub aktualisieren()
Dim ZeileMax As Long, n As Long
Dim Zeile As Long, Zeile1 As Long

With Tabelle2
    ZeileMax = .UsedRange.Rows.Count
    Application.ScreenUpdating = False
    For Zeile = 2 To ZeileMax
        n = Tabelle1.Cells(Rows.Count, 1).End(xlUp).Row + 1
        If .Cells(Zeile, 1).Value = "Fertig" Then
           For Zeile1 = 2 To n
               If .Cells(Zeile, 2) = Tabelle1.Cells(Zeile1, 2) Then GoTo nx
           Next Zeile1
           .Cells(Zeile, 1).Resize(1, 2).Copy Tabelle1.Cells(n, 1)
           Tabelle1.Cells(n, 4).Value = .Cells(Zeile, 4).Value
nx:     End If
    Next Zeile
End With
End Sub
Antworten Top
#9
Hallo Gast 123

passt perfekt, vielen vielen Dank.

Euer Forum ist einfach Spitze

Gruß Norbert
[-] Folgende(r) 1 Nutzer sagt Danke an Nobbi für diesen Beitrag:
  • Gast 123
Antworten Top


Gehe zu:


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