Live-Forum - Die aktuellen Beiträge
Datum
Titel
18.04.2024 18:04:29
18.04.2024 16:33:24
Anzeige
Archiv - Navigation
884to888
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
884to888
884to888
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Selektive Datenübernahme

Selektive Datenübernahme
05.07.2007 14:23:17
Christof
Hallo zusammen,
ich habe 2 Excelfiles.
Im Sourcefile "A" stehen viele Einträge, wovon ich allerdings nur bestimmte in mein Excelfile "B" übertragen möchte.
Beim Öffnen des Files "B" wird aktualisiert, die Daten kommen, aber im Moment zu viel.
Es sollen in Abhängikeit der Spalte "F" Daten geholt werden, nur dann wenn im File"A" in der Spalte "F"
der Eintrag "XYZ" eingetragen ist.
Die übertragenen Daten sollen nur hinten angehängt werden, die bereits eingetragenen sollen nicht überschrieben werden.
Ungefähr klar !?
Danke für Eure Hilfe
Grüße Christof

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selektive Datenübernahme
05.07.2007 16:28:00
Chaos
Servus,

Private Sub Workbook_Open()
Dim n As String
Dim zeile As Integer, reihe As Integer
n = ActiveWorkbook.Name
Workbooks.Open Filename:= "C:\ ..." ' Hier Pfad von A
With Workbooks("A.xls").Sheets("DeinBlattname")
reihe = Range("F65536").End(xlUP).Offset(0, 0).Row
For zeile = 1 To reihe Step 1
If Cells(zeile, 6).Value = "XYZ" Then
Cells(zeile, 6).EntireRow.Copy Destination:= Workbooks(n).Sheets("ZielTabelle). _
Range("A65536").End(xlUp).Offset(1, 0)
End if
Next zeile
End with
End Sub


kopiert alles, was XYZ in Spalte F stehen hat in das neue Workbook unten dran, allerdings jedesmal alles.
Weiß nicht, ob dir damit geholfen ist, weil du ja unter Umständen Daten doppelt drin hast.
oder so:


Private Sub Workbook_Open()
Dim n As String
Dim zeile As Integer, reihe As Integer, reihe 2 As Integer, zeile1 As Integer
n = ActiveWorkbook.Name
Workbooks.Open Filename:= "C:\ ..." ' Hier Pfad von A
With Workbooks("A.xls").Sheets("DeinBlattname")
reihe = .Range("F65536").End(xlUP).Offset(0, 0).Row
For zeile = 1 To reihe Step 1
If .Cells(zeile, 6).Value = "XYZ" Then
.Cells(zeile, 6).EntireRow.Copy Destination:= Workbooks(n).Sheets("ZielTabelle) _
.Cells(zeile, 1)
End if
Next zeile
End with
With Workbooks(n).Sheets("ZielTabelle")
reihe2 = .Range("F65536").End(xlUP).Offset(0, 0).Row
For zeile1 = reihe To 1 Step -1
If .Cells(zeile1, 1).Value = "" Then
.Cells(zeile1, 1).EntireRow. Delete
End if
Next zeile1
End with
End Sub


schreibt die kopierten Daten in die jeweilige Zeile (Quellzeile = Zielzeile) und löscht dann, die evtl. Leerzeilen.
Ausprobieren, obs geht (Extramappe)
Gruß
Chaos

Anzeige
AW: Selektive Datenübernahme
06.07.2007 08:47:00
Christof
Hi,
vielen Dank mal für die Hilfe, passt soweit fast !
Mein Thema ist nur, dass ich so beim kopieren die komplette Zeile hole und mir somit Daten im File "B" wieder überschreibe.
Desweiteren habe ich das Problem, dass die Spalten im file "B" als Datum (für Kennzahlenerfassung)
formatiert sind, die aus file "A" numerisch, Text usw. - ganz verschiedene Formate.
2 Ansätze kann ich mir vorstellen :
1. Nur bestimmte Zellen kopieren
2. Schauen ob es den Eintrag schon gibt (die Zeilennummern bleiben immer gleich, und auf eine Zelle
kann ich über einen eineindeutigen Eintrag immer prüfen ob der Eintrag schon vorhanden ist,
Somit wäre es "nur" ein Anhängen von Zeilen, allerdings unter Berücksichtigung von Punkt 1 wg.
Formaten.
... bin nicht so versiert im Excel/VB ...
Danke und Gruß
Christof

Anzeige
AW: Selektive Datenübernahme
06.07.2007 10:04:00
Chaos
Servus,
ist das immer ein bestimmter Bereich, den du übertragen willst, also z.B.: A1:H1
dann kann man auch schreiben.
Workbooks("A.xls").Sheets("DeinBlattname").Range(Cells(zeile ,1), Cells(zeile, 8)).Copy Destination:= Workbooks(n).Sheets("Zieltabelle").Cells(zeile, 1)
oder wenn dir das lieber ist.
Workbooks("A.xls").Sheets("DeinBlattname").Range("A" & zeile & ":H" & zeile).Copy Destination:= Workbooks(n).Sheets("Zieltabelle").Cells(zeile, 1)
Das mit den Formaten, hab ich nicht richtig verstanden, willst du die aus A übernehmen oder die in b belassen?
aus A, dann eben nicht mit Destination arbeiten, sondern:
Workbooks("A.xls").Sheets("DeinBlattname").Range("A" & zeile & ":H" & zeile).Copy
With Workbooks(n).Sheets("Zieltabelle")
.Range("A" & zeile & ":H" & zeile).PasteSpecial Paste:=xlPasteValues
.Range("A" & zeile & ":H" & zeile).PasteSpecial Paste:=xlPasteFormats
End with
aus B
Workbooks("A.xls").Sheets("DeinBlattname").Range("A" & zeile & ":H" & zeile).Copy Destination:= Workbooks(n).Sheets("Zieltabelle").Cells(zeile, 1)
With Workbooks(n).Sheets("Zieltabelle")
.Range("A" & zeile & ":H" & zeile).NumberFormat = "m/d/yyyy"
End with
einzelne zellen geht auch ist aber ziemlich umständlich, je nachdem wieviele pro zeile.
gruß
Chaos

Anzeige
AW: Selektive Datenübernahme
06.07.2007 10:25:00
Christof
Hi,
viiiielen Dank für die rasche Hilfe :-)))
Bzgl. dem Format, dsa erledigt sich wenn ich einzelne Spalten/Zellen kopieren kann, denn das was ich aus "A" übernehme wird in "B" (1:1) reinkopiert.
Die Spalten dahinter sind unabhängig von dem File "A"; da werden eben die Daten im File "B" gepflegt, drum darf ich dort bereits gepflegte Daten nicht mehr überschreiben (was ja beim kompletten kopieren von Zeilen passieren würde).
Aus dem File "A" sollte ich die Spalten "B7:Bn", "C7:Cn" und die Spalte "H7:Hn" holen.
n steht für das immer länger werdende File "A".
Die Spalten in "A" sind logischerweise fix.
Also wenn ich (Du) das hinbekomme...
Danke + Gruß
Christof

Anzeige
AW: Selektive Datenübernahme
06.07.2007 10:41:00
Chaos
Servus,
jetzt nochmal langsam, du verwirrst mich gerade.
was willst du jetzt kopieren, ganze Spalten oder einzelne Zellen ? mit Prüfung auf XYZ oder ohne ?
ich galube vertsanden zu haben, dass:
1. prüfen in A von letzter beschriebener Zelle (Zeile) in D auf XYZ nach oben (oder umgekehrt), wenn vorhanden, dann aus dieser zeile die Zellen aus Spalte B, C und H kopieren und in B einfügen. Das Ganze bis zur Zeile 7 oder ab Zeile 7 und der rest ist egal.
Ist das so richtig, oder nicht?
Wenn nicht, dann erkläre ganz genau, welche Zellen du wohin haben möchtest.
Gruß
Chaos

Anzeige
AW: Selektive Datenübernahme
06.07.2007 10:58:00
Christof
ok, ich versuche es mal ganz genau zu beschreiben :
Sourcefile ist "A", eine Datei die täglich mit weiteren Zeilen (Reklamationserfassungen) gefüllt wird.
Grundsätzlich
- sind nur Daten ab der Zeile 7 zu kopieren, da davor allgemeine Kopfdaten stehen.
- sind nur Zeilen zu übernehmen die in dem File "A" in der Spalte U den Eintrag "XYZ" haben.
Aus diesem File "A" möchte ich die Spalten B, C, und H in das File "B" (Kennzahlen) kopieren.
Spalte B kommt im neuen File in die Spalte A
Spalte C kommt im neuen File in die Spalte B
Spalte H kommt im neuen File in die Spalte G
(Nur zur Info : im File "B" werden die Spalten H - O manuell gepflegt, die Spalten C - F automatisch über Verweise in das File "A" aktualisiert/übernommen. Als Verknüpfung habe ich die Spalte H bzw. G).
Die Zeielnnummerierung der Files "A" (ich übernehme z. Bsp. die Zeilen 7,9, 12,25,..) und "B" (dort werden es die Zeilen 1,2,3,4 ...) stimmen nicht überein, aber da kann ich mir ja nen eigenen Zähler beim reinkopieren mitführen.
Hoffe ich hab's einigermassen rübergebracht !?
Danke schon mal für die Geduld,
Gruß
Christof

Anzeige
AW: Selektive Datenübernahme
06.07.2007 11:21:00
Chaos
Servus,
das ist nicht so einfach. Die Zellen rüberschreiben, u.s.w geht noch recht easy, aber ich kann hier ohne Löschschleife (leere Zeilen) nicht arbeiten oder ich brauche noch andere Bedingungen, die verglichen werden können, damit nicht jedesmal alle Daten übernommen werden (dann hast du nämlich doppelte und man muss sortieren, dann stimmts ja hinten evtl. wieder nicht mehr), ich kann natürlich auch jedesmal den Inhalt der Spalten B,C,... im Sheet B löschen und dann die Schleife von oben laufen lassen, das wäre das einfachste. Geht aber nur, wenn in A immer alle alten Werte drinbleiben.
Kannst du die 2 Dateien mal posten, dann ist einfacher sich einen Überblick zu verschaffen.
Gruß
Chaos

Anzeige
AW: Selektive Datenübernahme
06.07.2007 11:26:00
Christof
Die Version mit den Spalten löschen und immer wieder von vorne durchlaufen ist ok.
In dem File "A" werden diese Daten nicht verändert.
Bzgl. den Dateien, sind interne Firmendaten, da sollten wir uns wennnotwendig über direkte mails
austauschen ...
Aber vielleicht hast Du ne Idee wenn we immer komplett durchlaufen werden kann.
Gruß
Christof

AW: Selektive Datenübernahme
06.07.2007 12:27:00
Chaos
Servus,
dann probier's mal so:
2 Bedingungen:
in File B muss in Zeile 6 in den Zielspalten irgendwas stehen (wichtig, beim ersten Durchlauf, wenn noch keine Daten drin stehen würden)
und unterhalb in den Zielspalten dürfen keine Formeln oder sonstiges stehen, sonst funktioniert der Offset nicht so wie er soll, sondern kopiert die Daten unter die Formeln. Excel unterscheidet nicht, ob Zahl oder Formel, wenn was drin steht, steht was drin.

Sub aktuell()
Dim zeile As Integer, reihe As Integer, z As Integer, zeile1 As Integer, reihe1 As Integer
Dim n As String
Application.ScreenUpdating = False
n = ActiveWorkbook.Name
z = ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 0).Row
With ActiveWorkbook.Sheets(1)
If z 


Die Dateinamen müssen entsprechend angepasst werden Mappetest = FileA und Mappe2 = File B
und die Sheets, hier Sheet(1) und der Pfad.
Das Makro steht in Mappe B, am besten in die entsprechende Tabelle, aber ist eigentlich aufgrund der Deklaration egal.
Bitte nicht am Original testen, sondern an einer Sicherungskopie, aber ist ja selbstverständlich

Anzeige
AW: Selektive Datenübernahme
09.07.2007 13:40:00
Christof
Hi Chaos,
die Übertragung funktioniert einwandfrei und wie gewünscht - vielen Dank !!
An was ich jetzt noch dran bin ist das formatieren, da hab ich dann vielleicht noch was, aber jetzt les ich erst nochmals Deine Ausführungen genau durch.
Gruß
Christof

AW: Selektive Datenübernahme
09.07.2007 14:35:00
Christof
Hi Chaos,
alles bestens, das mit den Formeln usw. ist kein Thema - Deine Bedingungen somit erfüllt.
Jetzt noch ein bißchen "feintunig" ...
Eines nur, es überträgt mir nun die im File A gezogenen Linien (Rahmen) und die kpl. Formatierung (Schriftfarbe, Größe usw.).
Kann ich das umgehen ? Wenn nicht aber auch nciht tragisch.
Danke nochmals und Gruß
Christof

Anzeige
AW: Selektive Datenübernahme
09.07.2007 15:37:00
Chaos
Servus,
in dem Makro ist das auf 2 Arten gelöst. Das Übertragen der Formate u.s.w. kommt durch die Copy-Geschichte, wenn du das nicht willst, dann nimm den unteren Bereich.
If Workbooks....Value = "XYZ", also den Bereich zwischen For zeile =... und Next zeile und ersetzte damit den Bereich zwischen
For zeile1 ...Next zeile1, dann werden nur die Werte rübergeschrieben und die vorhandenen Formate in der Zieldatei verwendet.
Also so:

Sub aktuell()
Dim zeile As Integer, reihe As Integer, z As Integer, zeile1 As Integer, reihe1 As Integer
Dim n As String
Application.ScreenUpdating = False
n = ActiveWorkbook.Name
z = ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 0).Row
With ActiveWorkbook.Sheets(1)
If z 


Gruß
Chaos

AW: Selektive Datenübernahme
09.07.2007 15:39:00
Chaos
Servus,
in dem Makro ist das auf 2 Arten gelöst. Das Übertragen der Formate u.s.w. kommt durch die Copy-Geschichte, wenn du das nicht willst, dann nimm den unteren Bereich.
If Workbooks....Value = "XYZ", also den Bereich zwischen For zeile =... und Next zeile und ersetzte damit den Bereich zwischen
For zeile1 ...Next zeile1, dann werden nur die Werte rübergeschrieben und die vorhandenen Formate in der Zieldatei verwendet.
Also so:

Sub aktuell()
Dim zeile As Integer, reihe As Integer, z As Integer, zeile1 As Integer, reihe1 As Integer
Dim n As String
Application.ScreenUpdating = False
n = ActiveWorkbook.Name
z = ActiveWorkbook.Sheets(1).Range("A65536").End(xlUp).Offset(0, 0).Row
With ActiveWorkbook.Sheets(1)
If z 


Sorry, du musst natürlich dann auch zeile durch zeile1 ersetzen. Jetzt stimmt's.
Gruß
Chaos

AW: Selektive Datenübernahme
06.07.2007 13:11:02
Chaos
Servus,
hoffe, das hilft dir, ansonsten bin ich jetzt weg und erst am Montag wieder online.
Gruß
Chaos

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige