Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Text aus mehreren Tabellenblättern auslesen

Text aus mehreren Tabellenblättern auslesen
02.10.2014 14:31:30
Walter
Hallo Experten,
ich stehe gerade bei einer Auswertung an:
das erste TabBlatt beinhaltet die Zusammenfassung der restlichen TabBlätter.
Zahlen auslesen bringe ich zustande. Jetzt möchte ich aber in der Zelle C45 den Text aller TabBlätter (jeweils Zelle C45) stehen haben (jeder Eintrag in einer neuen Zeile.
Wenn das möglich ist, bitte ich um Hilfe
Herzlichen DANK!
mfg
Walter

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text aus mehreren Tabellenblättern auslesen
02.10.2014 16:58:53
fcs
Hallo Walter,
man könnte so etwas versuchen mit der Funktion INDIREKT zu lösen.
Zeile	Spalte B	Spalte C
44	Tab-Name	Wert C45
45	Tabelle1	=INDIREKT("'"&B45&"'!C45")
46	Tabelle2	=INDIREKT("'"&B46&"'!C45")
Gruß
Franz

Anzeige
AW: Text aus mehreren Tabellenblättern auslesen
03.10.2014 09:25:45
Walter
Hallo Franz,
danke für die Info.
Das war nicht ganz das, was ich wollte. Ich habe mich wahrscheinlich nicht gut ausgedrückt.
Ich möchte in Zelle C45 des ersten Arbeitsblattes alle Textwerte der Zellen C45 der restlichen Arbeitsblätter stehen haben.
Genial wäre, wenn die Textwerte aller Arbeitsblätter - egal wie viele - eingefügt würden (das erste und letzte Tabellenblatt haben eine fixe Bezeichnung; mit Zahlen funktioniert das
Danke und LG Walter

Anzeige
AW: Text aus mehreren Tabellenblättern auslesen
04.10.2014 10:35:38
fcs
Hallo Walter,
mit Standard-Excel-Funktionen funktioniert es meines Wissens nicht, sondern nur mit wenigen Funktionen wie SUMME.
Mit einer benutzerdefinierten VBA-Funktion geht es. Ansonsten muss man mit der Funktion VERKETTEN arbeiten - ggf. mit Hilfberechnungen, um die Länge der Formeln übersichtlich zu halten.
Gruß
Franz
'Code in einem allgemeinen Modul der Datei
Public Function fncText_Verketten(rngZellbereich1 As Range, _
rngZellbereich2 As Range, _
Optional strTrennZelle As String = ";", _
Optional strTrennBlatt As String = vbLf) As String
'Verkettet den Text eines Zellbereiches über mehrere Tabellenblätter
'rngZellbereich1 = Zellbreich im 1. Tabellenblatt
'rngZellbereich2 = Zellbreich im letzten Tabellenblatts
'strTrennZelle  = Trenntext, der zwischen den Zelleinhalten eines Blattes eingefügt wird
'strTrennBlatt  = Trenntext, der zwischen den Blättern eingefügt wird
'ausgewertet wird in allen Blättern der mit dem 1. Tabellenblatt angegebene Zellbereich
'Formelbeispiel: =fncText_Verketten(Tabelle1!C45:D45;Tabelle4!C45:D45;";";ZEICHEN(10))
Application.Volatile
Dim TabIndex As Integer, strErgebnis As String, rngZelle As Range, strZellen As String
Dim strZellbereich As String
strZellbereich = rngZellbereich1.Address
For TabIndex = rngZellbereich1.Parent.Index To rngZellbereich2.Parent.Index
strZellen = ""
For Each rngZelle In ThisWorkbook.Worksheets(TabIndex).Range(strZellbereich).Cells
If strZellen = "" Then
strZellen = rngZelle.Text
ElseIf rngZelle.Text  "" Then
strZellen = strZellen & strTrennZelle & rngZelle.Text
End If
Next
If strErgebnis = "" Then
strErgebnis = strZellen
ElseIf strZellen  "" Then
strErgebnis = strErgebnis & strTrennBlatt & strZellen
End If
Next
fncText_Verketten = strErgebnis
End Function

Beispieldatei: https://www.herber.de/bbs/user/92960.xlsm

Anzeige
AW: Text aus mehreren Tabellenblättern auslesen
06.10.2014 08:47:02
Walter
Vielen DANK,
die Lösung von Boris hat mir weitergeholfen, die kann ich realisieren.
DANKE!
Walter

AW: Text aus mehreren Tabellenblättern auslesen
03.10.2014 17:35:01
{Boris}
Hi Walter,
der Vorschlag von fcs war schon richtig. Alternativ kannst Du das auch so lösen:
Vergib den Namen x mit Bezug auf:
=ARBEITSMAPPE.ZUORDNEN(1+0*JETZT())
Dann in C45 Deines Übersichtsblattes (dies sollte übrigens in der Anordnung alle Blätter das ERSTE sein) folgende Formel:
=WENN(SPALTEN($A:B)>ANZAHL2(x);"";INDIREKT("'"&INDEX(x;SPALTEN($A:B))&"'!C45"))
und nach rechts kopieren.
VG, Boris

Anzeige
AW: Text aus mehreren Tabellenblättern auslesen
06.10.2014 08:45:50
Walter
Herzlichen DANK,
damit komme ich super zurecht.
Walter
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Text aus mehreren Tabellenblättern auslesen


Schritt-für-Schritt-Anleitung

Um den Text aus Zelle C45 aller Tabellenblätter in Zelle C45 eines Zusammenfassungsblattes anzuzeigen, kannst du die folgende benutzerdefinierte VBA-Funktion verwenden:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Gehe zu Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden Code in das Modul:

    Public Function fncText_Verketten(rngZellbereich1 As Range, _
    rngZellbereich2 As Range, _
    Optional strTrennZelle As String = ";", _
    Optional strTrennBlatt As String = vbLf) As String
       Application.Volatile
       Dim TabIndex As Integer, strErgebnis As String, rngZelle As Range, strZellen As String
       Dim strZellbereich As String
       strZellbereich = rngZellbereich1.Address
       For TabIndex = rngZellbereich1.Parent.Index To rngZellbereich2.Parent.Index
           strZellen = ""
           For Each rngZelle In ThisWorkbook.Worksheets(TabIndex).Range(strZellbereich).Cells
               If strZellen = "" Then
                   strZellen = rngZelle.Text
               ElseIf rngZelle.Text <> "" Then
                   strZellen = strZellen & strTrennZelle & rngZelle.Text
               End If
           Next
           If strErgebnis = "" Then
               strErgebnis = strZellen
           ElseIf strZellen <> "" Then
               strErgebnis = strErgebnis & strTrennBlatt & strZellen
           End If
       Next
       fncText_Verketten = strErgebnis
    End Function
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Verwende die Funktion in Zelle C45 deines ersten Arbeitsblattes, indem du die Formel wie folgt anwendest:

    =fncText_Verketten(Tabelle1!C45:TabelleN!C45, ";", ZEICHEN(10))

Ersetze Tabelle1 und TabelleN durch die tatsächlichen Namen deiner ersten und letzten Tabelle.


Häufige Fehler und Lösungen

  • Fehler: "Funktion nicht definiert"

    • Stelle sicher, dass der VBA-Code korrekt eingefügt wurde und das Modul gespeichert ist.
  • Fehler: "Typenübereinstimmung"

    • Überprüfe, ob die Zellen C45 in den anderen Blättern Text enthalten und ob die Funktion korrekt angewendet wird.
  • Fehler: Text wird nicht angezeigt

    • Stelle sicher, dass die Blätter, die du einbeziehen möchtest, im richtigen Bereich liegen und dass die Funktion auf die richtigen Zellen verweist.

Alternative Methoden

Wenn du keine VBA-Funktion verwenden möchtest, kannst du auch die Funktion INDIREKT in Kombination mit VERKETTEN verwenden. Hier ist ein Beispiel:

  1. Erstelle in einer Hilfsspalte eine Liste der Tabellennamen.
  2. Verwende die folgende Formel in Zelle C45:

    =WENN(SPALTEN($A:B) > ANZAHL2(x); ""; INDIREKT("'" & INDEX(x; SPALTEN($A:B)) & "'!C45"))

Diese Methode ist jedoch weniger flexibel und erfordert mehr manuelle Anpassungen.


Praktische Beispiele

Angenommen, du hast drei Tabellenblätter: Tabelle1, Tabelle2 und Tabelle3. Um die Texte aus Zelle C45 aller Blätter in Zelle C45 des ersten Blattes zu sammeln, verwendest du die benutzerdefinierte Funktion wie folgt:

=fncText_Verketten(Tabelle1!C45, Tabelle3!C45, ";", ZEICHEN(10))

Das Ergebnis in Zelle C45 wird dann alle Texte aus den C45 Zellen der genannten Tabellenblätter in einer neuen Zeile auflisten.


Tipps für Profis

  • Nutze die Funktion ZEICHEN(10) für Zeilenumbrüche, um die Lesbarkeit der zusammengefassten Texte zu erhöhen.
  • Halte deine VBA-Module sauber und dokumentiere deine Funktionen, um die Wartung zu erleichtern.
  • Experimentiere mit verschiedenen Trennzeichen in der Funktion fncText_Verketten, um die Ausgabe deinen Bedürfnissen anzupassen.

FAQ: Häufige Fragen

1. Kann ich die VBA-Funktion auch in Excel Online verwenden?
Nein, VBA-Funktionen sind nicht in Excel Online verfügbar. Du musst Excel Desktop verwenden.

2. Wie kann ich die Funktionsweise der benutzerdefinierten Funktion anpassen?
Du kannst die Parameter der Funktion fncText_Verketten ändern, um andere Zellbereiche oder Trennzeichen zu verwenden.

3. Was mache ich, wenn ich eine große Anzahl von Tabellenblättern habe?
Die benutzerdefinierte Funktion ist für eine unbegrenzte Anzahl von Blättern geeignet, solange du die richtigen Zellbereiche angibst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige