Hallo.
Ich habe ein Calc Dokument mit 32 Tabellen. Jetzt möchte ich gerne den
Bereich B2:G45 aus allen(!) einzelnen Tabellenblättern in einer Tabelle
untereinander haben.
Wie mache ich dies am geschicktesten?
Danke & Gruß,
Andreas
Hallo.
Ich habe ein Calc Dokument mit 32 Tabellen. Jetzt möchte ich gerne den
Bereich B2:G45 aus allen(!) einzelnen Tabellenblättern in einer Tabelle
untereinander haben.
Wie mache ich dies am geschicktesten?
Danke & Gruß,
Andreas
Hallo Andreas,
die einzufügenden Daten der Tabelle kopieren, dann auf Bearbeiten/Inhalte
einfügen. Im folgenden Dialog "Transponieren" anhaken und die Ausrichtung der
Daten ändert sich wie Du es möchtest.
Dieter
Leider bist Du hier auf eine der (von Anfang an bestehenden)
Inkonsistenzen in Calc gestoßen. Alle Funktionen liefern als Infromation
über die Tabelle nur deren *Nummer* (in der Reihenfolge unten in der
Tableiste) zurück, aber die Funktion ADRESSE benötigt den *Namen* der
Tabelle.
Und an den kommst Du mit 'natürlilchen' Mitteln nicht ran. Dazu
benötigst Du ein Makro. Füge unter "Extras => Makros => Makros verwalten
=> OpenOffice Basic => <Dein Dokument> => Standard => Bearbeiten" (oder
"... => Neu", falls Bearbeiten ausgegraut ist) folgende Funktion ein
(*unter* das "Sub Main / End Sub"):
Function SHEETNAME (iIndex as Integer) As String
Dim oDoc As Object
Dim oSheet As Object
oDoc = ThisComponent
if iIndex < oDoc.Sheets.count then
oSheet = oDoc.Sheets( iIndex )
SHEETNAME = oSheet.Name
else
SHEETNAME = ""
endif
End Function
Dann schließt ("Datei => Schleßen"; *nicht* *"Beenden"*) Du den
Makroeditor wieder.
Für das eigentliche Kopieren der Daten würde ich dann irgend eine Formel
in der Art
=INDIREKT(ADRESSE(REST((ZEILE()-1);50)+1;SPALTE();4;1;SHEETNAME(ABRUNDEN((ZEILE()-1)/50))))
o. ä. benutzen.
Wolfgang
Hallo Wolfgang,
Hallo.
Ich habe ein Calc Dokument mit 32 Tabellen. Jetzt möchte ich gerne den
Bereich B2:G45 aus allen(!) einzelnen Tabellenblättern in einer Tabelle
untereinander haben.Wie mache ich dies am geschicktesten?
Leider bist Du hier auf eine der (von Anfang an bestehenden)
Inkonsistenzen in Calc gestoßen. Alle Funktionen liefern als Infromation
über die Tabelle nur deren *Nummer* (in der Reihenfolge unten in der
Tableiste) zurück, aber die Funktion ADRESSE benötigt den *Namen* der
Tabelle.Und an den kommst Du mit 'natürlilchen' Mitteln nicht ran.
Hmm, ich komme hier an meinen aktuellen Blattnamen z.B. mit der
folgenden Formel:
=TEXT(TEIL(ZELLE("dateiname";A1);FINDEN("$";ZELLE("dateiname";A1))+1;255)-1;"0###")
Hinweis: In diesem Sheet haben meine Blattnamen alle das Format JJMM,
daher der verwendete Formatstring "0###". Ich würde in meinem Beispiel
also auch mit '4' anstelle der in obiger Formel vorsichtshalber
verwendeten (Maximal?)Länge von 255 auskommen. Wenn man aber nicht
weiß, wie lang die Blattnamen sein könnten, wäre man mit 255 aber auf
der sichereren Seite.
Über entsprechende Formelerweiterungen (die ich hier bei mir jetzt
nicht brauchte und daher auch nicht ad hoc nennen kann, aber
vielleicht eine(r) der anderen Mitleser/innen) müsste man dann doch
vielleicht auch ohne Makro an die Namen des zweiten, dritten etc.
Blattes kommen können, oder?
Leider bist Du hier auf eine der (von Anfang an bestehenden)
Inkonsistenzen in Calc gestoßen. Alle Funktionen liefern als Infromation
über die Tabelle nur deren *Nummer* (in der Reihenfolge unten in der
Tableiste) zurück, aber die Funktion ADRESSE benötigt den *Namen* der
Tabelle.Und an den kommst Du mit 'natürlilchen' Mitteln nicht ran.
Hmm, ich komme hier an meinen aktuellen Blattnamen z.B. mit der
folgenden Formel:=TEXT(TEIL(ZELLE("dateiname";A1);FINDEN("$";ZELLE("dateiname";A1))+1;255)-1;"0###")
Ja; aus einer *bekannten* Adresse kann man auf die Weise den Blattnamen
extrahieren. Der OP fragt aber nach *unbekannten* Adressen, die er ja
erst konstruieren *will*.
Klar könnte sich der OP, statt das Makro zu verwenden, auch hinsetzen,
und 32 mal händisch eine Verküpfung auf jede der einzelnen
Tabellenblätter erstellen, und dann /daraus/ den jeweiligen
Tabellennamen extrahieren. Und wenn es sich nur um einige wenige Blätter
handeln würde, hätte ich auch genau das vorgeschlagen. Aber nicht bei 32
Blättern (zumindest nicht, wenn ich einen einfacheren Weg kenne).
Hinweis: In diesem Sheet haben meine Blattnamen alle das Format JJMM,
daher der verwendete Formatstring "0###".
Schön für Dich; aber was hat das mit dem Problem des OP zu tun?
Ich würde in meinem Beispiel
also auch mit '4' anstelle der in obiger Formel vorsichtshalber
verwendeten (Maximal?)Länge von 255 auskommen. Wenn man aber nicht
weiß, wie lang die Blattnamen sein könnten, wäre man mit 255 aber auf
der sichereren Seite.
Naja, Du hättest natürlich auch auch einfach z. B.
=RECHTS(ZELLE("filename";A1);LÄNGE(ZELLE("filename";A1))-FINDEN("$";ZELLE("filename";A1)))
verwenden können, dann hättest Du Dir den Kopf erst gar nicht wegen
irgend welchen Überlegungen von wegen mögliche Textlänge zerbrechen
müssen; aber Hauptsache es funktioniert.
Btw. wärst Du im Ernstfall auch mit 255 Zeichen nicht auf der sicheren
Seite; benenn doch einfach mal ein Tabellenblatt um, und kopier dafür
die Zeichenfolge "0123456789" einfach hintereinander dreißig mal in das
Eingabefeld für den neuen Tabellennamen hinein ... <beg>
Wolfgang
Hallo Wolfgang,
Leider bist Du hier auf eine der (von Anfang an bestehenden)
Inkonsistenzen in Calc gestoßen. Alle Funktionen liefern als
Infromation über die Tabelle nur deren *Nummer* (in der
Reihenfolge unten in der Tableiste) zurück, aber die Funktion
ADRESSE benötigt den *Namen* der Tabelle.Und an den kommst Du mit 'natürlilchen' Mitteln nicht ran.
Hmm, ich komme hier an meinen aktuellen Blattnamen z.B. mit der
folgenden Formel:=TEXT(TEIL(ZELLE("dateiname";A1);FINDEN("$";ZELLE("dateiname";A1))+1;255)-1;"0###")
Ja; aus einer *bekannten* Adresse kann man auf die Weise den
Blattnamen extrahieren. Der OP fragt aber nach *unbekannten*
Adressen, die er ja erst konstruieren *will*.Klar könnte sich der OP, statt das Makro zu verwenden, auch
hinsetzen, und 32 mal händisch eine Verküpfung auf jede der
einzelnen Tabellenblätter erstellen, und dann /daraus/ den
jeweiligen Tabellennamen extrahieren.
Ich hatte Deine Formulierung "Alle Funktionen liefern als Infromation
über die Tabelle nur deren *Nummer* (in der Reihenfolge unten in der
Tableiste) zurück" so verstanden, dass man darüber dann z.B. eine
Zelle auf dem *ersten* Blatt, auf dem *zweiten* Blatt etc. ansprechen
und so dann auch über die obige Formel deren Namen rauskriegen könnte.
Aber wenn ich Dich da missverstanden habe, dass man so auch nicht
indirekt z.B. die Zelle A1 auf dem 10. Blatt adressieren kann, dann
geht es natürlich nicht.
Hinweis: In diesem Sheet haben meine Blattnamen alle das Format
JJMM, daher der verwendete Formatstring "0###".Schön für Dich; aber was hat das mit dem Problem des OP zu tun?
Na, wie gesagt nur als Hinweis, dass es für ihn daher vermutlich nicht
sinnvoll ist, diesen Format-String auch genauso zu übernehmen, falls
er es ebenfalls ausprobieren wollte.
Ich würde in meinem Beispiel also auch mit '4' anstelle der in
obiger Formel vorsichtshalber verwendeten (Maximal?)Länge von 255
auskommen. Wenn man aber nicht weiß, wie lang die Blattnamen sein
könnten, wäre man mit 255 aber auf der sichereren Seite.Naja, Du hättest natürlich auch auch einfach z. B.
=RECHTS(ZELLE("filename";A1);LÄNGE(ZELLE("filename";A1))-FINDEN("$";ZELLE("filename";A1)))
Ah ja, auch interessant ... werde ich mir gleich mal für ähnliche
Gelegenheiten aufheben. Danke.
verwenden können, dann hättest Du Dir den Kopf erst gar nicht
wegen irgend welchen Überlegungen von wegen mögliche Textlänge
zerbrechen müssen;
Ja, Dein Vorschlag ist natürlich bei völlig unbekannten Blattnamen
deutlich besser.
aber Hauptsache es funktioniert.
Btw. wärst Du im Ernstfall auch mit 255 Zeichen nicht auf der
sicheren Seite; benenn doch einfach mal ein Tabellenblatt um, und
kopier dafür die Zeichenfolge "0123456789" einfach hintereinander
dreißig mal in das Eingabefeld für den neuen Tabellennamen hinein
... <beg>
Deswegen hatte ich ja in meinem Posting extra '(Maximal?)' - mit
Fragezeichen - ergänzt, weil ich mir eben nicht sicher war, ob das
tatsächlich die maximale Blattnamenslänge darstellt.