Herbers Excel-Forum - das Archiv

Daten aus Excel Tabelle in andere Tabelle übertrag

Bild

Betrifft: Daten aus Excel Tabelle in andere Tabelle übertrag
von: tony0786

Geschrieben am: 27.04.2015 20:46:13


2010 - Daten aus Excel-Datei per Schaltfläche in andere Excel-Datei übertragen
Guten Tag zusammen. Ich hoffe es war richtig ein neues Thema zu eröffnen, da ich kein anderes /ähnliches Thema gefunden habe.
Ich habe folgendes Problem.
Ich möchte gerne Werte aus einer Excel Tabelle per Knopfdruck in eine andere Excel Tabelle einer anderen Excel-Datei übertragen.
Die erste Tabelle ist ein Bautagesbericht. Dieser enthält viele Informationen und einige wenige davon möchte ich gerne per Konopfdruck in einer weiteren Excel-Datei-Liste auflisten. Dabei sollen allerdings nur Werte übertragen werden welche ein bestimmtes Kriterium erfüllen. Diese Abfrage muss leider sein, da nicht immer die gleiche Zelle abgefragt werden soll.
Zum Beispiel folgender Fall:
In dem Bautagesbericht stehen in einer Liste diverse Tätigkeiten, welche von einer Vorgangs-ID abhängig sind. Siehe Bild_1 im Anhang bzw. Link ganz unten.
Links ist die Vorgang-ID und die rechte Spalte beinhaltet die Tätigkeit bzw. das Ereignis. Jetzt sollen per Knopfdruck alle Werte die in der Vorgang-ID ein "BD" und oder ein "BH" beinhalten übertragen werden. Zwar gibt es unterschiedliche ID´s jedoch würde es ausreichen wenn das Programm erkenn das ein "BD" oder ein "BH" enthalten ist. Darüber hinaus soll noch das in der Quelldatei enthaltene Datum "Zelle Z5" in die Zieldatei übertragen werden. Dabei sollen die Werte einfach in den zugewiesenen Spalten aufgelistet werden. Das bedeutet das Programm muss wissen wo die erste leere Zelle anfäng in der Zieldatei.
Im Prinzip reicht eine einfache auflistung aus. Es muss nicht chronologisch sein, da das datum mit übertragen werden sol. Für eine chronologische Auföistung kann dann später die Sortiefunktion verwendet werden in der Zieldatei. Da es ein Bautagesbericht ist, soll diese Vorgehensweise jeden Tag von einem neuen Bautagesbericht aus gestartet werden. Die Zieldatei bleibt jedoch immer die gleich und würde sich nur bei einem neuen Projekt ändern.
erste Frage:
Ist mein Vorhaben möglich?
zweite Frage?
Was benötigt Ihr noch um mir eventuell weiter zu helfen?
Ich danke dem oder derjenigen Helfer schon mal vielmals im voraus.
Ich habe leichte Excelkenntnisse und habe auch schon mal was in VBA gemacht jedoch liegt das schon 6-7 Jahre zurück. Dementsprechend eingestaubt ist mein Wissen. Ich nutze Excel 2010.
MfG
Tony0786
Userbild

Bild

Betrifft: dies geht auch ohne "Knopfdruck" ...
von: der neopa C
Geschrieben am: 28.04.2015 08:48:45
Hallo Tony,
... dies kann man mit einer Formel lösen. Lade dazu mal Deinen kleinen Datenauszug als Datei hier hoch.
Gruß Werner
.. , - ...

Bild

Betrifft: AW: dies geht auch ohne "Knopfdruck" ...
von: tony0786

Geschrieben am: 28.04.2015 09:08:55
Ok cool, hallo der neopa C!
Vielen Dank für die schnelle Hilfe/Antowrt vorab.
Also im Anhang findest Du zwei Excel-Dateien.
1. BTB_Quelldatei_Rohling.xlsx entspricht der Quelldatei
siehe Link: https://www.herber.de/bbs/user/97328.xlsx
2. Ereignisliste_Rohling.xlsx entspricht der Zieldatei
siehe Link: https://www.herber.de/bbs/user/97329.xlsx
Die Zellen welche ausgelesen werden sollen habe ich lila eingefärbt. Dabei handelt es sich um die Zellen unter Punkt 3 der Tabelle. Die Spalte "Vorgang-ID" und die Spalte "Ereignisfeld" sowie das Datum in Zelle "Z5" sollen in die andere Excel-Datei übertragen werden.
Es sollen dabei aber nur Werte übertragen werden, welche in den Zellen der Spalte "Vorgang-ID" (bzw. ab A23)
ein "BD-Nr.:",
ein "BH-Nr.:",
ein "zusätzl. Leistung",
ein "Ereignis-Nr.:" oder
ein "Fertigstellung" enthalten.
Für diese Überprüfung habe ich bereits eine Hilfsspalte agelegt, welche bei Üereinstimmung den Wert "1" und bei keiner Übereinstimmug den Wert "0" auswirft angelegt. Diese liegt außerhalb des Druckbereiches und soll später dann ausgeblendet werden.
Wenn die Überprüfung eine Übereinstimmung feststellt, dann soll bspw. der Zellinhalt von Zelle "A23" und "F23" plus das Datum aus Zelle "Z5" des Tabellenblattes "BTB" der Excel-Datei "BTB_Quelldatei_Rohling" in die ebenfalls lila eingefärbten Zellen der Excel-Datei "Ereignisliste_Rohling.xlsx" übertragen werden. Wenn möglich soll das ganze auch gehen können, wenn die Zieldatei geschlossen ist. Ausgelöst werden soll das ganze per Schaltfläche in der Quelldatei, welche außerhalb des Druckbereiches angelegt werden kann.
Wichtig ist noch, dass in der Zieldatei nicht überschrieben wird, sondern immer da weiter geschrieben wird, wo das Programm zuletzt aufgehört hat. Also es muss überprüft werden wo die erste leere Zelle zum reinschreiben ist.
Darüber hinaus ist noch zu beachten, das die Quelldatei jeden Tag neu ausgefüllt wird, da es sich um einen Tagesbericht handelt. Ich habe mir gedacht, wenn man jeden Tag die Quelldatei öffnet und ausfüllt, dann auf die Schaltfläche zur Datengeneration klickt und dann per Speichern unter die Datei mit einem richtigen Dateinnamen versieht und ablegt müsste doch mein Vorhaben klappen oder?
Schwierig wird es glaube ich, wenn man erst speichert und dann die Daten generiert, da sich dann der Dateiname ändert. Vielleicht wäre es in diesem Fall logischer den Weg umgekehrt zu gehen.
Bspw. von mir aus einmal die Woche den entpsrechenden Ordner mit mehrerer Tagesberichten per Schaltfläche in der Zieldatei auslesen um die maßgeblichen Daten zu übertragen. Was meinst Du dazu? ich würde jedoch die erste Variante bevorzugen, da dann immer in Echtzeit die relevanten Daten in ein übergeordnetes Dokument übertragen werden.
Ich habe leider nur wenig Kenntnisse in VBA und Excel. Habe zwar während meiner Ausbildung mal VBA gemacht jedoch liegt das schon Jahre zurück und die Progrämmchen beschränkten sich auf sinnlose Anwendungen.
Ich hoffe ich habe es klar und verständlich erläutert.
Vielen Vielen Dank schon mal.

Bild

Betrifft: das ist ein anderer Sachverhalt ...
von: der neopa C

Geschrieben am: 28.04.2015 09:44:11
Hallo Tony,
... so wie Du es jetzt beschreibst (bei neuen Bericht Fortschreibung der bereits aus alten Berichten übertragenen Daten) wäre Dein Anliegen nur mit VBA zu lösen.
ich würde es anders zwar trotzdem ohne VBA lösen können, aber das würde hier zu weit führen.
Gruß Werner
.. , - ...

Bild

Betrifft: AW: das ist ein anderer Sachverhalt ...
von: tony0786
Geschrieben am: 28.04.2015 09:56:50
Hmm, ok!
Das bedeutet es ist zu schwierig?
Oder es kann mir niemand helfen?
Gruß Tony

Bild

Betrifft: ich stelle Deinen Thread wieder auf offen t ...
von: der neopa C
Geschrieben am: 28.04.2015 10:11:30
Hallo Tony,
... ich halte mich aus VBA-Lösungsangeboten außen vor. Als schwierig betrachte ich es nicht.
Gruß Werner
.. , - ...

Bild

Betrifft: Haste aber nicht, Werner...! Aber jetzt! orT
von: Luc:-?
Geschrieben am: 28.04.2015 19:55:07
Gruß, Luc :-?

Bild

Betrifft: Datenübertragung mit Makro
von: Daniel

Geschrieben am: 28.04.2015 20:33:29
Hi
probiere mal folgendes Makro.
Damit es funktioniert, musst du noch folgendes ändern:
gib in der Hilfsspalte für die Zeilen, die übertragen werden müssen die Zahl 1 aus (1 ohne Anführungszeichen) und für die die die nicht übertragen werden müssen den Leerstring "".
du kannst auch was anderes nehmen, wichtig ist die Unterscheidung "Zahl" für Übertraben und "Text" für nicht übertragen.
die Datei "Ereignisse" musst du vorher öffnen.
Das Makro prüft die geöffneten Dateien und trägt die Werte in die Datei ein, in der das erste Sheet den Namen "Ereignisse" hat.
Sub Übertrag()
Dim wbE As Workbook
Dim ZelleZiel As Range
Dim i As Long
Dim ZelleQuelle As Range
With ThisWorkbook.Sheets("BTB")
'--- Prüfen, ob relevante Einträge vorhanden sind
If WorksheetFunction.Sum(.Range("AL:AL")) = 0 Then
MsgBox "Keine relevanten Einträge vorhanden."
Exit Sub
End If
'--- Prüfen, ob Ereignisdatei geöffnet ist
For Each wbE In Application.Workbooks
If wbE.WorkSheets(1).Name = "Ereignisse" Then Exit For
Next
If wbE Is Nothing Then
MsgBox "Bitte Ereignis-Datei öffnen und dann Makro nochmal ausführen:"
Exit Sub
End If
'--- Daten übertragen
Set ZelleZiel = wbE.WorkSheets(1).Cells(Rows.Count, 3).End(xlUp).Offset(1, 0)
For Each ZelleQuelle In .Range("AL:AL").SpecialCells(xlCellTypeFormulas, 1)
ZelleZiel.Offset(i, 0).Value = .Range("Z5").Value
ZelleZiel.Offset(i, 1).Value = ZelleQuelle.Offset(0, 1 - ZelleQuelle.Column).Value
ZelleZiel.Offset(i, 2).Value = ZelleQuelle.Offset(0, 6 - ZelleQuelle.Column).Value
i = i + 1
Next
End With
End Sub

gruß Daniel

Bild

Betrifft: AW: Datenübertragung mit Makro
von: tony0786

Geschrieben am: 29.04.2015 17:11:00
Hallo Daniel,
habe schon eine Lösung entwickelt. Trotzdem besten Dank für deinen Tip. Deine Lösung setzt aber voraus, das die Zieldatei geöffnet sein muss. Die liegt jedoch im Ernstfall aufnem Server und sollte eigentlich beim Ausführen des Makros geschlossen sein.
Habe bei meiner Lösung, welche ich von nem bekannten erhielt ein Problemchen. Das Makro übernimmt immer alle relevanten Werte in die Zieldatei jedoch lässt die erste Datei immer weg. Statt 10 kommen nur 9 an und dabei fehlt immer der erste Wert.
komme nicht auf den Fehler

Bild

Betrifft: AW: Datenübertragung mit Makro
von: Daniel
Geschrieben am: 30.04.2015 14:31:23
tja, da wird sich wohl dein Bekannter drum kümmern müssen, da kann ich dir auch nicht weiter helfen.
Gruß Daniel

Bild

Betrifft: AW: Datenübertragung mit Makro
von: tony0786
Geschrieben am: 01.05.2015 10:34:13
OK Daniel, trotzdem vielen Dank für Deine Bemühung.
Schönes Wochenende wünsche ich noch.
Freundliche Grüße Tony

 Bild
Excel-Beispiele zum Thema "Daten aus Excel Tabelle in andere Tabelle übertrag"
Suche über mehrere Tabellen Benennen von Tabellenblättern mit Monatsnamen
Druckseitenlinien im Tabellenblatt Tabellenblattnamen in ein Listenfeld einlesen
Suchbegriff über mehrere Tabellenblätter suchen. Tabellenblätter benennen
Tabellenblatt auswählen Zustand von Tabellenblatt-Checkboxes ermitteln
Tabellenblattnamen der VBE-Projekte ändern Tabellenblattnamen nach Datum
Bewerten Sie hier bitte das Excel-Portal