Wie kann ich in Excel Werte aus mehreren Zellen und Tabellenblättern in eine Zeile auflisten lassen?
Hallo,
Ich möchte Zahlen aus ganz bestimmten Zellen (siehe unten), die über mehrere Tabellenblätter verteilt sind in eine Zeile reinkopieren.
Zellen: B2:Q2;Tabelle1!B2:Q2;Tabelle2!B2:Q2;Tabelle4!B2:Q2;Tabelle5!B2:Q2;Tabelle6!B2:Q2;Tabelle7!C2;Tabelle7!E2;Tabelle7!G2:Q2;Tabelle8!B2:Q2;Tabelle9!B2:Q2;Tabelle10!B2:N2;Tabelle10!P2:Q2;Tabelle11!B2:Q2;Tabelle12!B2:Q2;Tabelle13!B2:Q2;Tabelle14!B2:H2;Tabelle14!J2:K2;Tabelle14!M2:N2;Tabelle14!P2:Q2;Tabelle15!B2:Q2;Tabelle16!B2:Q2;Tabelle17!B2:Q2;Tabelle18!B2:Q2;Tabelle19!B2:P2;Tabelle20!B2:Q2;Tabelle21!B2:Q2;Tabelle22!B2:Q2;Tabelle23!B2:L2;Tabelle23!N2:Q2;Tabelle24!B2:Q2;Tabelle25!B2:Q2;Tabelle26!B2:D2;Tabelle26!F2:L2;Tabelle26!N2;Tabelle26!P2:Q2;Tabelle27!B2:Q2;Tabelle28!B2:Q2;Tabelle29!B2:Q2
Wie muss ich da vorgehen?
Danke!
5 Antworten
Du meinst, du willst in die ersten 16 Spalten den Inhalt aus B2:Q2 wiedergeben, in den nächsten 16 Spalten (rechts davon) dann Tabelle1!B2:Q2 usw.?
Deine Bereiche weisen zwar eine grobe Regelmäßigkeit auf, allerdings gibt es auch viele Lücken dazwischen, die eine einfache Formel, die nach rechts kopiert wird, verhindern.
Ich hab mal folgende Formel entwickelt, mit der du den kompletten Bereich B2:Q2 aus allen Tabellenblättern hintereinander kopieren kannst (allerdings beginnend bei Tabelle1):
=INDIREKT("Tabelle"&GANZZAHL(SPALTE(A1)/16+15/16)&"!"&ADRESSE(2;REST(SPALTE(A1)-1;16)+2))
und nach rechts kopieren. Die Zellen, die du nicht haben möchtest, musst du händisch löschen, mit der Option "Zellen nach links verschieben".
danke für deine Mühe, aber die oben genannten Zellen sind nur ein Ausschnitt. Würde ich jede Zelle einzeln löschen, bräuchte ich ewig und deshalb habe ich gehofft, dass es irgendeine Möglichkeit gibt mit ein paar Klicks die Daten ausgeben zu lassen.
Mein eigentliches Ziel ist es von all den Daten Quartilwerte ausrechnen zu lassen. Beim Median war es kein Problem, aber Quartilwerte rechnet Excel nur aus, wenn die Zellen lückenlos nebeneinander liegen.
Zellen: B2:Q2;Tabelle1!B2:Q2;Tabelle2!B2:Q2;Tabelle4!B2:Q2;Tabelle5!B2:Q2;Tabelle6!B2:Q2;Tabelle7!C2;Tabelle7!E2;Tabelle7!G2:Q2;
=B2:Q2&"; "&Tabelle1!B2:Q2&"; "&Tabelle2!B2:Q2
Damit müsste es gelingen, wenn ich Dich richtig verstanden habe.
Hallo,
da wo das Ergebnis stehen soll: Ein mal klicken und dann alle anderen Felder, die Addiert werden müssen markieren. Fertig. Manuel heißt es denk ich: SUMME()
Falls Dir DeeDees Lösung (DH!) nicht reicht, sollte das mit VBA zu bewältigen sein.
Sag dann noch mal Bescheid, dann versuche ich mein Glück.
das wäre wirklich super nett.
Mein eigentliches Ziel ist es von all den Daten Quartilwerte ausrechnen zu lassen. Beim Median war es kein Problem, aber Quartilwerte rechnet Excel nur aus, wenn die Zellen lückenlos nebeneinander liegen.
Ich habe erstmal in Deiner Auflistung am Anfang noch Tabelle3! hinzugefügt, also:
Tabelle3!B2:Q2;Tabelle1!B2:Q2;Tabelle2!B2:Q2....
und ganz am Ende noch ein Semikolon.
Das macht mir das Aufsplitten einfacher und ist auch genauer.
Teste mal genau diesen Code im Modul der Arbeitsmappe:
Sub EineZeile()
Dim rngListe As Range
Set rngListe = ActiveSheet.Range("A10") 'A10 ggf. anpassen ############
'In A10 ist - in einer Zelle - die Liste der Bereiche
'Getrennt durch Semikola und ohne Leerzeiechen!
'Immer in Form Tabelle!A1:H1 o.ä. starten und am Ende ein Semikolon
Dim intCopyZeile As Integer
intCopyZeile = 1 ' 1 ggf. anpassen ##########
'1 heißt, dass alles in Zele 1 eingefügt wird
'und zwar ab der letzten benutzen Spalte in dieser Zeile
'#################################################
Dim strListe As String
Dim strTeil As String
Dim intLetzte As Integer
Dim intAusrufezeichen
Dim intLaengeTeil
Dim strSheet As String
Dim strBereich As String
Dim intStartSem As Integer
intStartSem = 0
Dim intStopSem As Integer
intStopSem = 1
strListe = rngListe.Value
Do While intStopSem > 0
intLetzte = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
intStopSem = InStr(intStartSem + 1, strListe, ";")
If intStopSem = 0 Then Exit Do
strTeil = Mid(strListe, intStartSem + 1, (intStopSem - intStartSem) - 1)
intAusrufezeichen = InStr(1, strTeil, "!")
intLaengeTeil = Len(strTeil)
strSheet = Left(strTeil, intAusrufezeichen - 1)
strBereich = Right(strTeil, intLaengeTeil - intAusrufezeichen)
Sheets(strSheet).Range(strBereich).Copy ActiveSheet.Cells(intCopyZeile, intLetzte + 1)
intStartSem = intStopSem
Loop
End Sub
Schreibt Dir (hoffe ich) alles aus der Aufstellung in A10 in die erste Zeile des Blattes.
Klappt es?
P.S.: Das ist sicher noch optimierbar (Fehlerroutinen etc.) und geht eleganter, aber schau erst mal, ob es überhaupt klappt.
Ich kenne mich mit Codes wirklich überhaupt nicht aus. Könntest du mir das auf Laien-Niveau erklären?
Ich bin auf dem Tabellenblatt "Quartilblatt" über rechten Mausklick auf "Code anzeigen" gegangen, hab deinen Code eingefügt und dann auf "Sub/UserForm ausführen (F5)" geklickt.
Dann kam folgender Fehler: "Laufzeitfehler '1004': Anwendungs -oder Objektdefinierter Fehler".
Was mache ich falsch?
Vielleicht hilft es, wenn du die Excel-Datei hast: https://www.file-upload.net/download-13363316/MappingDatei.xlsx.html
Falls die Zahlen fortlaufen hintereinander stehen sollen, die einzelnen Werte mit "&" verknüpfen.
dadurch summiere ich ja die Werte, was ich aber nicht möchte
Kannst du mir das genauer erläutern? Wie gesagt ich will das jeder Wert wieder jeweils in einer Zelle ist, nur halt in einer Zeile direkt hintereinander. Was gebe ich genau für einen Befehl ein?
"Wie gesagt ich will das jeder Wert wieder jeweils in einer Zelle ist, nur halt in einer Zeile direkt hintereinander. Was gebe ich genau für einen Befehl ein?"
Das habe ich leider anders verstanden. Bei meinem Vorschlag würden alle Werte in einer Zelle hintereinander geschrieben.
ich will ja nicht die Summe bilden, sondern einfach nur die Werte in einer Zeile ausgeben lassen