Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1480to1484
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
Inhaltsverzeichnis

Tabellenblätter auslesen

Tabellenblätter auslesen
14.03.2016 11:53:58
Knecht74
Hallo,
ich bin neu hier und habe auch schon ein bisschen hier im Forum gelesen, aber noch nichts gefunden, was mir wirklich weiter hilft.
Mein Problem ich habe eine Exceldatei mit mehreren Tabellenblättern. Diese Datei kopiere ich jedes Jahr, damit ich eine neue Datei habe, in der ich die aktuellen Werte für das neue Jahr eintragen kann. Es kommen jedes Jahr neue Tabellenblätter hinzu und andere werden gelöscht. Die Tabellenblätter behalten in beiden Jahren den selben Namen.
Ich möchte aber, in den Tabellenblättern den letzten Wert mehrere Spalten als Anfangswert in den neuen Tabellenblättern übernehmen. Bis jetzt mache ich das so, dass ich beide Dateien öffne, ich mir das Tabellenblatt "A" in Jahr 2016 suche, hier in Zelle "A1" schreibe "=", dann von Hand Tabellenblatt "A" in Jahr 2015 suche und hier die Zelle "A31" anklicke. Das gleiche mache ich bei den Zellen "B1" zu "B31", "C1" zu "C31" und "D1" zu "D31". Jetzt mache ich weiter mit Tabellenblatt "B".
Es muss doch auch einfacher gehen. Ich suche ein Lösung, die z.B. den Namen des Tabellenblattes ausliest, vom aktuellen Jahr ein Jahr abzieht, damit die Datei vom letzten Jahr öffnet, dort das Tabellenblatt mit dem gleichen Jahr sucht, die Zelle "A31" ausliest und in der Zelle "A1" (aktuellen Tabellenblatt) wieder ausgibt.
Ist so etwas möglich?
Ich hoffe ich habe mich einigermaßen verständlich ausgedrückt. Falls nicht, einfach nochmal nachfragen.
Danke schon mal im voraus für Eure Mühen.

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ist möglich ...
14.03.2016 16:31:42
...
Hallo,
... so wie Du bisher schreibst und ich es interpretiere, kann man man mittels Formel und der Funktion INDIREKT() das angestrebte erzielen.
Hilfreich wäre jedoch, wenn Du eine kleine Beispielarbeitsmappe mit wenigsten zwei Tabellenblättern und ein paar relevanten Daten (die Dummy-daten sein können) hier einstellst. Dann brauchen wir es nicht nachstellen und Du könntest daran konkret Deine Zielstellung darlegen und wir Dir dann sicherlich einen Lösungsweg aufzeigen.
Gruß Werner
.. , - ...

AW: ist möglich ...
15.03.2016 11:28:28
Knecht74
Hallo Werner,
vielen Dank für deine Nachricht. Ich habe mal zwei Beispieldateien "Überstunden 2016" und "Überstunden 2017" angehängt. Ich habe nochmal eine kleine Beschreibung geschrieben, diese steht in der Datei "Überstunden2017" Tabellenblatt"Mustermann Max" auf der rechten Seite.
Falls Du, oder jemand anderes noch mehr Infos braucht, sagt einfach Bescheid.
https://www.herber.de/bbs/user/104340.zip
Gruß,
Mike
PS: Ich musste ein Zip.Datei daraus machen, da er die Excel-Dateien nicht genommen hat.

Anzeige
AW: INDIREKT() erfordert geöffnete Quelldatei ...
15.03.2016 15:06:31
...
Hallo Mike,
... wenn Du das stets gewährleisten kannst, kann man dies mit einer Formel auf Basis von INDIREKT() unter Einbeziehung von VERWEIS() erledigen. Im Normalfall willst Du allerdings bestenfalls einmal im Jahr die vorjährige Arbeitsmappe auch öffnen. In dem Fall wäre eine VBA-Lösung bzw. eine entsprechende UDF günstiger. Über ein Add-In lässt sich das auch realisieren. In diesem Fall setze Deinen thread auf offen und schreibe in den neuen Betreff: VBA-Lösung gesucht (ich beschäftige mich momentan ausschließlich mit Lösungen ohne VBA). Es gibt hier genügend gute VBAler.
Wenn Dir aber mein Lösungsvorschlag (immer dazu geöffnete Datei ausreichend wäre), dann würde ich Dir eine Formellösung basteln.
Gruß Werner
.. , - ...

Anzeige
AW: INDIREKT() erfordert geöffnete Quelldatei ...
15.03.2016 16:35:20
Steve
Hallo ihr beiden,
die Variante mit "immer dazu geöffnete Datei" klingt nicht grad verlockend. Vor allem musst du in ein paar Jahren dann 4 5 Dateien mit aufmachen? Wäre suboptimal. Das entsprechende Makro dazu ist kurz und schmerzlos und kann in der Mappe verbleiben. Am ersten Arbeitstag im neuen Jahr führst du einmal das Makro aus, es erstellt dir eine neue Datei mit Übertrag als feste Werte.
lg Steve
Sub NeuesJahrAnlegen()
Dim wks As Worksheet
With ThisWorkbook
' alte Datei speichern und Kopie unter neuem Namen speichern
.Save
.SaveAs Left(.FullName, Len(.FullName) - 9) & Left(Right(.Name, 9), 4) + 1, 52
For Each wks In .Worksheets
With wks
If .CodeName  "Tabelle1" Then
' Übertrag
.Range("B5") = Date
.Range("C5") = "Übertrag " & Left(Right(ThisWorkbook.Name, 9), 4) - 1
.Range("D5:G5") = .Range("M34:P34").Value
.Range("Q5") = "System"
' Rest leeren
.Range("B6:L34, Q6:Q34").ClearContents
End If
End With
Next wks
End With
End Sub

Anzeige
AW: ich schrieb ja bereits ...
15.03.2016 16:50:23
...
Hallo Steve,
... dass eine VBA-Lösung günstiger wäre.
Jedoch Deine Aussage wonach "... musst du in ein paar Jahren dann 4 5 Dateien mit aufmachen" ist jedoch inkorrekt. Die Formellösung hätte immer "nur" die Datei des jeweils vorangegangenen Jahres erfordert, also nur eine und nicht 4-5.
Auch solltest Du bedenken, dass es Unternehmen gibt, wo VBA-Lösungen in Office-Programmen nicht erwünscht oder gar verboten sind. Dann geht aber immer meine K(r)ampf-Lösung ;-)
Gruß Werner
.. , - ...

AW: ich schrieb ja bereits ...
16.03.2016 01:03:50
Knecht74
Hallo Steve,
vielen Dank schon mal für dein super Makro. Habe es gerade ausprobiert und hat auch soweit super geklappt. Nur ich übernehme mit diesem Makro ja nur die Werte aus den Zellen und keine Verknüpfung. Das bedeutet, wenn ich die neue Datei schon früher erstellen muss, weil jemand Anfang Januar gleich Überstunden abbauen will, oder jemand seine Überstunden für Dezember erst im Januar abgibt, werden die Werte in der neuen Datei nicht aktualisiert.
Kann man das noch irgendwie ändern, das es keine Werte, sondern Verknüpfungen übernimmt?
Hallo Werner,
wie würde den Deine Lösung aussehen?
PS:Wäre es überhaupt möglich ein Tabellenblatt zu erstellen, in dem ich eine Übersicht über alle Überstunden bekomme, so wie ich es als letzten Wunsch in die Beschreibung in der Datei "Überstunden2017" geschrieben habe?
Danke nochmal für Eure bisherigen Mühen. Ihr seit super, danke.
Gruß,
Mike

Anzeige
AW: ich schrieb ja bereits ...
16.03.2016 09:20:08
Steve
Hallo Werner,
ich wollte deine Aussage nur bestätigen. Wenn man nicht mehrere Mappen braucht ist auch gut, aber selbst eine wäre mir zuviel.
Hallo Mike,
eine Verknüpfung war genau das was eigentlich vermieden werden sollte. Ich werde mir zu deinem Thema ein paar Gedanken machen, habe gerade nicht die Zeit dafür. Eventuell heute Nachmittag.
lg Steve

AW: dazu folgendes ...
16.03.2016 11:57:19
...
Hallo Steve,
... eben wollte ich Mike schreiben, dass dies auch mit VBA günstiger zu realisieren ist.
Allerdings könnte ich im Bedarfsfall auch eine reine Formellösung basteln, die es lediglich einmal (beim ersten Mal) im Jahr notwendig machen würde, die Funktion SUCHEN und ERSETZEN zusätzlich zum Einsatz zu bringen.
Aber wie geschrieben, dass könntest Du ja durch VBA auch noch überflüssig machen.
Gruß Werner
.. , - ...

Anzeige
AW: ich schrieb ja bereits ...
16.03.2016 15:54:13
Steve
So, hallo nochmal Mike,
zunächst zu deinem letzten Wunsch, ja das ist ein Kinderspiel, dafür gibt es das "Workbook_SheetBeforeDelete"- bzw. "Workbook_NewSheet"-Ereignis mit dem man das Aus- bzw. Eintragen steuern könnte. Diesen Punkt würde ich aber hinten anstellen wollen.
Das mit dem früher Abgeben hätte man auch anders lösen können, aber das Nachtragen ist vollkommen nachvollziehbar, daran habe ich nicht gedacht. Das bedeutet es muss eine Verknüpfung hergestellt werden, zumindest jedes Mal wenn du eine Änderung in der Mappe des vorangegangenen Jahres tätigst. Schwierig, aber mit entsprechender API machbar. Jedoch gilt das gleiche wie bei Autos, je mehr Technik dahinter steckt desto fehleranfälliger wird das ganze.
Ich habe einen anderen Vorschlag, der weniger mit VBA noch Formeln zu tun hat, eher eine Struktur-Umstellung:
Hast du schon mal darüber nachgedacht deine Liste einfach fortzuführen? Das alte Jahr kann man Gruppieren und somit ausblenden. Damit sieht deine Liste aus wie immer, und über die Steuerung der Gruppierung (kleines Plus bzw. Minus am linken Rand) kannst du in den alten Jahren nachschlagen.
Den "Übertrag" der keiner mehr ist kann man wie gewohnt eintragen, seine Werte sind die Summe der oben stehen Zahlen seiner Spalte, also genau das was deine Formeln eh schon tun. Stör dich nicht daran dass meine Formeln anders aussehen, ich habe nur etwas ausprobiert.
Ich habe dazu für Herrn Mustermann und Herrn Meier zwei Varianten eingefügt wie ich mir das vorstelle. https://www.herber.de/bbs/user/104384.xlsx
lg Steve
PS.: Nach dem Upload habe ich gemerkt, dass für die Tabelle von Herrn Mustermann der Übertrag in dem Falle eigentlich überflüssig ist, die Überschrift für das Jahr entspricht der Zusammenfassung aus dem alten Jahr und damit dem Übertrag. Ich wollte nur keine neue Mappe für diese Kleinigkeit hochladen.

Anzeige
AW: ich schrieb ja bereits ...
17.03.2016 00:07:34
Knecht74
Hallo Steve,
vielen Dank für Deinen Vorschlag, ich verstehe auch, was Du mit der Tabelle und den Gruppierungen meinst. Nur leider sind uns die äußere Form dieser Blätter ziemlich weit vorgegeben. Wir können zwar kleinere Änderungen daran vornehmen, aber die Grundform sollte gleich bleiben.
Es tut mir leid, das ich dir jetzt so viel Mühe damit mache und wenn es keine Lösung für mein Problem gibt, oder es zu aufwendig ist, ist es auch kein Problem, dann mache ich es weiter wie bisher.
Trotzdem Danke schon mal bis hierher und durch dein VBA-Makro habe ich wieder etwas gelernt, was alles möglich ist.
Gruß,
Mike

Anzeige
AW: ich schrieb ja bereits ...
18.03.2016 11:27:26
Knecht74
Hallo noch mal,
falls trotzdem noch einer eine Lösung für mein Problem hat, entweder mit Formel oder VBA, wäre ich dankbar. Gibt es eine Funktion oder einen Befehl, mit dem ich einen zusammengesetzten Link (Verkettung) auszuführen.
Gruß,
Mike

AW: iwas genau ...
18.03.2016 20:04:39
...
Hallo Mike,
... meinst Du mit "...zusammengesetzten Link (Verkettung) auszuführen"?
Gruß Werner
.. , - ...

AW: iwas genau ...
18.03.2016 22:04:23
Knecht74
Hallo Werner,
ja , so wie ich es auf meiner Beispieldatei angedeutet habe.
Gruß,
Mike

AW:dazu vielleicht noch ...
19.03.2016 08:00:50
...
Hallo Mike,
... google mal nach Excel AddIn morefunc und teste mal. Ich selber wende dieses zwar nicht an, aber man soll mit dessen Hilfe auch INDIREKT() nutzen können, wenn die Quelldatei geschlossen sei.
Gruß Werner
.. , - ...

Anzeige
AW: AW:dazu vielleicht noch ...
19.03.2016 09:54:36
Knecht74
Hallo Werner,
das hatte ich über Google auch schon gefunden, nur leider ist auf unseren Rechnern auf der Arbeit nicht erlaubt irgendwelche AddIns zu installieren.
Gruß Mike

AW: ein einfacher Lösungsvorschlag dazu ...
19.03.2016 14:15:36
...
Hallo Mike,
... ich würde ohne eine VBA-Lösung mit Formeln einen direkten Bezug auf die zu übernehmenden Zellwerte der Vorjahres herstellen, die Du zuvor in einen eindeutig immer wieder nutzbar identischen Zellbereich (z.B. auch in eine Hilfstabelle) mit Formel ziehst. Also in 2016 auf die Daten der Datei von 2015. Im Folgejahr ersetzt Du einfach mittels SUCHEN und ERSETZEN in diesen Formeln die ...2015... des Dateinamens durch ... 2016... und schon bist Du fertig. Das kostest Dich nur max 10 Sekunden an Zeit je Jahr.
Gruß Werner
.. , - ...

Anzeige
AW: ein einfacher Lösungsvorschlag dazu ...
19.03.2016 15:22:58
Knecht74
Hallo Werner,
dein Vorschlag ist gut und ich werde es so machen, falls niemand anderes mir einen besseren Vorschlag machen kann. Nur nachdem ich gesehen habe, was alles mit VBA möglich ist, z.B. die VBA-Lösung von oben, in der mit einfachsten mitteln eine neue Datei mit neuen Namen erstellt wird, hätte ich mir gewünscht, das man in diese VBA-Lösung noch eine Verknüpfung mit einbauen kann.
Gruß Mike

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige