Ich möchte mehrere Tabellen in einer neuen zusammenfassen. Kann jemand helfen?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Mich würde mal Interessieren ob du nur immer neue Tabellen in die Zusammenfassung übernehmen willst oder ob du auch in alten Tabellen Daten änderst und die dann auch neu einspielen willst. Dann woher kommen die Tabellen, legst du die immer selbst an? Wenn ja hätte ich eine Makro Lösung für dich, dafür würde ich mir dann eine Vorlage mit Schaltfläche machen und wenn du die Daten drin hast brauchst du nur einmal auf die Schaltfläche drücken und er überträgt in das Tabellenblatt Zusammenfassung automatisch die Daten aus Spalte A der neuen Tabelle.

Ich habe meine Musterdatei mal hier hochgeladen, eventuell kannst du ja schon was damit anfangen.

http://workupload.com/file/v1mIqjxS


demo86 
Beitragsersteller
 08.07.2015, 20:58

Danke erst einmal!

Ich erstelle gerade eine Vorlage. Für die späteren Anwender ist es einfacher, wenn sie zunächst die einzelnen Tabellen befüllen und anschließend die Zusammenfassung erstellen. Insofern scheint mir die Makrolösung sinnvoll, da ich vorher die Anzahl der Zeilen nicht kenne. Günstig wäre es, wenn die Reihenfolge in der Zusammenfassung immer gleich ist. Außerdem sollte die Zusammenfassung beim drücken des Buttons zuerst gelöscht wird.

0
schmiddi1967  08.07.2015, 21:24
@demo86

Soll das bedeuten das jeder Anwender die Möglichkeit hat die Zusammenfassung zu erstellen? Also das die Zusammenfassung immer vorher gelöscht wird beim drücken ist so mit diesem Makro nicht sinnvoll, weil sonst wenn der Anwender mit Tabelle1 fertig ist und sie schon übertragen hat und dann bei Tabelle2 auf übertragen drückt wieder alles von Tabelle1 aus der Zusammenfasung weg ist.
Dann muß das Makro ganz anders aufgebaut werden.

Da brauchst du ein generelles was alle Tabellenblätter immer wieder eins nach dem anderen neu einspielt.

0
demo86 
Beitragsersteller
 08.07.2015, 21:47
@schmiddi1967

Ja, die Zusammenfassung kann von jedem Anwender erstellt werden. Ich würde sinnvoller Weise "nur" einen Button erstellen, der die gesamte Zusammenfassung erstellt. Kannst Du mir da Unterstützung zukommen lassen?

0
schmiddi1967  08.07.2015, 21:57
@demo86

OK, weißt du denn jetzt schon wieviele Tabellenblätter du in deiner Datei nachher hast oder werden das von Zeit zu Zeit immer mehr.

Dann ist noch wichtig ob die alle auch nur Tabelle1,Tabelle2...usw. heißen oder ist das alles unterschiedlich.

Den Button würde ich dann auf das Tabellenblatt "Zusammenfassung" ablegen oder?

Um so einfacher das aufgebaut ist um so einfacher ist es für mich zu versuchen dir zu helfen. Ich bin Experte in VBA aber versuche mein bestes. Eventuell haben auch noch andere dann die Möglichkeit in die Hilfe mit einzusteigen. Aber das bekommen wir schon hin.

0
demo86 
Beitragsersteller
 08.07.2015, 22:18
@schmiddi1967

Das klingt wirklich gut.Ich gehe derzeit von max. 15 Tabellen aus. Die Namen sind festgelegt und werden höchstwahrscheinlich auch nicht geändert. Die Namen wären Adaptersektion, Eingangssektion, Mittelsektion 01, Mittelsektion 02.... Mittelsektion 12 und Topsektion. Mit dem Button in der Zusammenfassung ist sinnvoll.

0
schmiddi1967  08.07.2015, 22:28

Oki doki und es ist auch immer nur Spalte A ab A1 die übertragen werden sollen. Wie gesagt ich muss alles wichtige wissen :))

0
demo86 
Beitragsersteller
 08.07.2015, 22:36
@schmiddi1967

Spalten A bis O, Zeile 1 enthält immer den Tabellenkopf. Diesen benötige ich zur Übersichtlichkeit auch in der Zusammenfassung. Also benötige ich den Übertrag immer ab Zeile 2. Die Anzahl der Zeilen in den einzelnen Blättern ist variabel und verschieden. Es wäre schön, wenn in der Zusammenfassung in der Spalte A noch stehen könnte, von welchem Blatt die Daten stammen.

0
schmiddi1967  09.07.2015, 00:40
@demo86

OK, ich werde morgen mal sehen was ich da für dich hinbekomme. Für den Vermerk von welchem Blatt die Eintragungen sind würde ich eine neue Spalte als Spalte A einfügen und der den Tabellenblattname hinterlegen und diese dann einfach wieder ausblenden.

Sobald ich da was fertig habe lade ich meine Musterdatei wieder neu hoch.

0
schmiddi1967  09.07.2015, 08:52
@schmiddi1967

So, ich habe das ganze jetzt mal erstellt und die Musterdatei ist hier hochgeladen:

http://workupload.com/file/KcDfKahG

Schau mal ob das deinen Vorstellungen entspricht. Noch ist die Zusammenstellung leer, nach dem ersten mal erstellen wird diese gefüllt und bei jedem Klick auf Zusammenstellung erstellen erst wieder gelöscht und komplett aus allen Tabellenblättern neu erstellt. Also bei jeder Änderung in den einzelnen Tabellenblättern wird bei erneutem Klick auf Zusammenstellung erstellen diese neu erstellt.

Kommst du so damit klar?

1
demo86 
Beitragsersteller
 10.07.2015, 13:20
@schmiddi1967

Erst einmal Entschuldigung. Bin gerade erst dazu gekommen, es mir anzusehen. Schaut super aus. Vielen Dank.

Falls ich noch Blätter hinzufügen muss, ist es vermutlich nur notwendig, den Bereich für ein Blatt im Makro zu kopieren und die zugehörigen Namen anzupassen?

Außerdem wäre eine Funktion noch interessant: Ich habe vorab eine Auswahl, welche Segmente benötigt werden. Diese sieht so aus, dass es wahlweise eine Adaptersektion geben kann. Die Eingangs- & die ist Topsektion sind immer vorhanden und die Anzahl der Mittelsektionen ist variabel. Wäre schön, wenn Du mir da noch helfen könntest.

0
schmiddi1967  11.07.2015, 01:00
@demo86

Bitte gerne :)

Das mit dem neuen Tabellenblatt siehst du richtig, du brauchst dann nur den Teil eines Tabellenblattes kopieren und einfügen. Ich glaube das es auch in einer automatischen Abfrage geht aber dafür bin ich nicht genug VBA Experte.

Das mit deiner Funktion musst du mir näher erklären, schreibe mich da mal bitte per Email unter

schmiddi.gf@gmail.com

an. Das sprengt hier sonst den ganzen Beitrag :))

0

Senn die Bereiche so statisch sind wie von Dir beschrieben, reicht doch eine Tabelle in die Du die Kopfzeile schreibst und dann in die "Zusammenfassungs-Tabelle" in die gewünschten Felder einfach die z. B. Formel =Tabellexxx!A1

Wenn die Tabellen einfach aufgebaut sind, sollte das auch mit Formeln klappen.
Voraussetzung: In Tabelle1 und Tabelle2 stehen die Werte ohne Lücken untereinander und danach sind die Zellen leer.
Dann teste mal genau diese Formel in der Zusammenfassung:

=WENN(ANZAHL2(Tabelle1!A$1:A$1000)>=ZEILE(A1);Tabelle1!A1;INDEX(Tabelle2!A$1:A$1000;ZEILE(A1)-ANZAHL2(Tabelle1!A$1:A$1000)))

Die Formel kannst Du nach unten und nach rechts kopieren, soweit Du es brauchst.
Klappt es?

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)

schmiddi1967  08.07.2015, 19:42

Ich glaube das er so noch nicht damit klar kommt, er möchte das ja für immer neue Tabellen automatisch haben und ich denke das ein umbauen der Formel eventuell sein Wissen sprengen wird. Ich denke er kommt da um ein Makro nicht drum rum.

1
Oubyi, UserMod Light  08.07.2015, 21:34
@schmiddi1967

Er hatte im Kommentar bei vismx geschrieben, dass er möglichst kein Makro will, deshalb hatte ich diese Formel zusammengebastelt.
Aber da er auf Deine Makro-Lösung reagiert hat und auf meine Antwort nicht, scheinst Du richtig zu liegen.

0
schmiddi1967  08.07.2015, 21:38
@Oubyi, UserMod Light

Wenn du eine Lösung ohne Makro hast wäre das doch klasse, ich sehe da nur das Problem wenn es nachher mehrere Tabellen sind mit dem ständigen anpassen der Formel. Oder hast du da auch was für in Petto für was sich automatisch auf neue Tabellen erweitert? Da bin ich nämlich raus :))

0
demo86 
Beitragsersteller
 08.07.2015, 22:02

Danke für deine Bemühung. Leider ist die Lösung so nicht dynamisch genug. Ich weiß leider im Vorfeld die Anzahl der Zeilen der einzelnen Tabellen nicht. Die Zusammenfassung benötige ich, um umfangreiche Wenn-Verknüpfungen zu vermeiden.

0
Oubyi, UserMod Light  08.07.2015, 23:32
@demo86

Ich weiß leider im Vorfeld die Anzahl der Zeilen der einzelnen Tabellen nicht

Meine Formel erkennt selbst die Anzahl der Zeilen (ANZAHL2) und ist in dieser Hinsicht durchaus dynamisch.
Es werden immer die Zeilen der ersten und - direkt anschließend - die der zweiten Tabelle angezeigt. Wenn in der ersten etwas angehängt oder eingefügt wird, wird die Zusammenfassung automatisch aktualisiert.
Allerdings müssen die o.g. Voraussetzungen gegeben sein.

0
demo86 
Beitragsersteller
 08.07.2015, 23:52
@Oubyi, UserMod Light

Danke sehr.

Ich habe es gerade probiert. Schaut soweit gut aus! :-)

Eine Frage noch. Gibt es eine Möglichkeit, dass ich darstellen kann, aus welchem Tabellenblatt die jeweiligen Daten kommen?

0
Oubyi, UserMod Light  09.07.2015, 15:14
@demo86

Dazu würde in einer anderen Spalte diese Formel reichen:

=WENN(ANZAHL2(Tabelle1!A$1:A$1000)>=ZEILE(A1);"Tabelle1";"Tabelle2")

Wenn es mehr als zwei Tabellen sind, ließe sich die Formel auch erweitern, aber wenn es, wie Du oben schreibst, 15 werden, wird das sehr unübersichtlich und vlt. sogar ZU lang.
Dann könnte man aber  immer zwei Tabellen in einem neuen Tabellenblatt zusammenfassen, dann von diesen jeweils zwei wieder zu einem neuen Tabellenblatt zusammenfassen und das Ganze nochmal und nochmal.
(16 -->8x2-->4x2-->2x2-->1).
Allerdings denke ich langsam, dass schmiddis VBA-Lösung vielleicht doch sinnvoller sein wird. ㋛

2
demo86 
Beitragsersteller
 10.07.2015, 13:24
@Oubyi, UserMod Light

Ich habe die Lösung von schmiddi getestet und letztlich ist die wirklich gut. Wenn man nicht so viele Tabellenblätter hat, ist deine Variante sicher einfacher (nach meiner Meinung). Trotzdem vielen Dank

0
RebeccaS211  11.05.2017, 08:32

Hallo,

ich habe lange nach einer Formel für eine dynamische Zusammensetzung von Tabellenblättern gesucht und ausschließlich deine Lösung hier gefunden. Wow! Da muss man erst mal drauf kommen.

Wie würde das ganze denn aussehen, wenn man mit dieser Formel 3, 4 oder mehr Tabellen untereinander setzen würde, ohne wie oben beschrieben "Zwischenblätter" einzubauen? Geht das überhaupt?

Und ist es möglich, die Nullen, die auftauchen, wenn man das Feld "zu weit" zieht, in leere Felder umzuwandeln, ohne ALLE Felder mit null auszublenden? In den Tabellen gibt es nämlich nullen die für mich relevant sind.

Danke schon mal im Voraus und danke für all deine Antworten hier, echt klasse!

0
Oubyi, UserMod Light  11.05.2017, 13:13
@RebeccaS211

Zum Problem von mehreren Tabellen hatte ich mich schon geäußert:

Wenn es mehr als zwei Tabellen sind, ließe sich die Formel auch
erweitern, aber wenn es, wie Du oben schreibst, 15 werden, wird das sehr
unübersichtlich und vlt. sogar ZU lang.
Dann könnte man aber  immer
zwei Tabellen in einem neuen Tabellenblatt zusammenfassen, dann von
diesen jeweils zwei wieder zu einem neuen Tabellenblatt zusammenfassen
und das Ganze nochmal und nochmal.
(16 -->8x2-->4x2-->2x2-->1).
Allerdings denke ich langsam, dass schmiddis VBA-Lösung vielleicht doch sinnvoller sein wird. ㋛

Die überflüssigen Nullen könnte man so vermeiden:

=WENN(ZEILE(A1)>(ANZAHL2(Tabelle1!A$1:A$1000)+ANZAHL2(Tabelle2!A$1:A$1000));"";WENN(ANZAHL2(Tabelle1!A$1:A$1000)>=ZEILE(A1);Tabelle1!A1;INDEX(Tabelle2!A$1:A$1000;ZEILE(A1)-ANZAHL2(Tabelle1!A$1:A$1000))))

1
Oubyi, UserMod Light  11.05.2017, 13:19
@Oubyi, UserMod Light

P.S.:

Eine dritte Tabelle einzubauen würde ich mit einer erweiterten Formel
wohl noch hinbekommen, aber bei mehr --> siehe oben. Tut mir leid, da wird wirklich ein Makro, siehe schmiddi, sinnvoll.

1
Oubyi, UserMod Light  11.05.2017, 13:41
@RebeccaS211

Gern geschehen 🙂
Stelle vielleicht einfach nochmal eine neu Frage hier ein und verweise ruhig auf diesen Thread.
In den letzten Jahren sind noch einige Excel-Experten hier hinzu gekommen.
Vielleicht hat ja doch noch einer eine bessere Idee ohne Makro, die sich leichter auf mehr Tabellen erweitern lässt.
MIT Makro ist das kein Problem. Falls Du mit schmiddis Antwort diesbezüglich nicht klar kommst (ich kann mich an sein Makro nicht mehr erinnern) dann frage hier nochmal nach. Ein Makro kann ich Dir auch schreiben.

0

Die Tabellen sollen also per Macro untereinander bzw. nebeneinander gelistet werde? Oder verstehe ich das jetzt falsch? =/


demo86 
Beitragsersteller
 08.07.2015, 13:35

Hallo,

ideal wäre ohne Makro. Wenn es ohne nicht funktioniert, dann natürlich mit. Die Tabellen sollen untereinander gelistet werden.

0