Wie kann ich in Excel Werte aus mehreren Zellen und Tabellenblättern in eine Zeile auflisten lassen?

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".


Nora1755 
Beitragsersteller
 25.10.2018, 16:45

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.

0
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()


Nora1755 
Beitragsersteller
 24.10.2018, 20:41

ich will ja nicht die Summe bilden, sondern einfach nur die Werte in einer Zeile ausgeben lassen

0
ZAPIC  24.10.2018, 20:43
@Nora1755

Achso ich verstehe. Hab ich mich wohl vertan. Ich bin jetzt zwar kein Excel Profi aber ich möchte behaupten, dass das so nicht direkt geht. Aber ich lasse mich gerne eines besseren belehren :)

0

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.

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

Nora1755 
Beitragsersteller
 25.10.2018, 16:46

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.

0
Oubyi, UserMod Light  25.10.2018, 18:48
@Nora1755

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?

0
Nora1755 
Beitragsersteller
 25.10.2018, 20:46
@Oubyi, UserMod Light

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

0

Falls die Zahlen fortlaufen hintereinander stehen sollen, die einzelnen Werte mit "&" verknüpfen.


Nora1755 
Beitragsersteller
 24.10.2018, 20:56

dadurch summiere ich ja die Werte, was ich aber nicht möchte

0
Nora1755 
Beitragsersteller
 24.10.2018, 21:08
@ProRatione

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?

0
ProRatione  24.10.2018, 21:12
@Nora1755

"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.

0