jeden Monat wird aus einen System ein Excel extrakt erzeugt.
Anzahl der Positionen ca. 350.
Die Anzahl der Zeilen verändert sich jeden Monat um ein paar wenige,
aber sie ändert sich.
In dieser Excel Datei werden jeweils Veränderungen vorgenommen.
Wenn diese durchgeführt sind, wird die Liste aus dem Vormonat genommen und an Hand von einem ‚Vorgangsfeld‘ (das eindeutig ist) wird in der ersten Spalte ein Wert aus der ersten/alten Datei entnommen und in der anderen/neuen Datei diese Spalte ergänzt und dieser Wert eingetragen.
Es gibt noch eine zweite Spalte, die auf die gleiche Weise gepflegt wird.
Kurz: aus einer Datei eine Spalte mit Werten entnehmen (wenn Space)
und diese Spalte mit Werten in einer anderen Datei einfügen (wenn Space)
Hallo Kay Uwe,
bin mir nicht sicher, ob ich Dein Problem richtig verstanden habe.
Öffne Alte Datei, kopiere aus Spalte (ich wähle A) alle Zellen die nicht leer sind. Kopiere nicht Leere Zellen (Space?). Behandle Zellen als Text (String).
Schreibe in Neue Datei in erste freie Spalte.
Hast Du VBA Erfahrung? Vermute, nein. Gehe in neue Datei. Wechsle mit Alt + F11 in Entwicklungsumgebung. Gehe in Menü Einfügen // Modul. Kopiere Text unten („Option Explicit“ bis „End Sub“)in dieses Modul (Code-Fenster rechts). Die Namen für Variablen musst Du ggf. anpassen (unter 'Variablen belegen).
Option Explicit
’ Variablen deklarieren
Dim ADatei As String, NDatei As String, ABlatt As String, NBlatt As String
Dim ASpalte As Integer, AZeile As Integer, NSpalte As Integer, NZeile As Integer
Dim AMaxZ As Integer, NMaxS As Integer
Dim Inhalt As String
’ START
Sub Uebertrag()
’ Variablen belegen
ADatei = „ADatei.xls“
NDatei = „NDatei.xls“
ABlatt = „Tabelle1“
NBlatt = „Tabelle1“
ASpalte = 1
NZeile = 1
’ Ausblenden
Application.ScreenUpdating = False
’ Spalte für neue Datei ermitteln
Windows(NDatei).Activate
Sheets(NBlatt).Select
NMaxS = Sheets(NBlatt).UsedRange.SpecialCells(xlCellTypeLastCell).Column
NSpalte = NMaxS + 1
’ Nicht leere Zellen aus alter Datei kopieren
Windows(ADatei).Activate
Sheets(ABlatt).Select
AMaxZ = ActiveSheet.Cells(Rows.Count, ASpalte).End(xlUp).Row
For AZeile = 1 To AMaxZ
Inhalt = Cells(AZeile, ASpalte).Value
If Inhalt „“ Then
Windows(NDatei).Activate
Sheets(NBlatt).Select
Cells(NZeile, NSpalte).Value = Inhalt
NZeile = NZeile + 1
End If
Windows(ADatei).Activate
Sheets(ABlatt).Select
Next
Windows(NDatei).Activate
Sheets(NBlatt).Select
’ Einblenden
Application.ScreenUpdating = True
End Sub
Mit Alt + F11 zurück zu Excel.
Leg Dir von alter und neuer Datei Kopien an zum Testen. Öffne beide Dateien. Starte mit Alt + F8 das Makro Uebertrag.