Wert aus allen existenten Tabellenblättern auslesen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

marino
Beiträge: 5
Registriert: Do, 03.03.2011 11:04

Wert aus allen existenten Tabellenblättern auslesen

Beitrag von marino »

Ich habe in einem Calc-Dokument eine (sich ändernde) Menge an Tabellenblättern, in denen jeweils eine Zelle einen Durchschnittswert aus einer Blattspalte listet. Jetzt will ich ein neues Blatt erzeugen, das automatisch die Namen aller aktuell existenten Tabellenblätter und daneben die zugehörigen Zellwerte listet. Wie mache ich das am schlauesten?

Vielen Dank schon mal,
Marino
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von komma4 »

Willkommen im Forum.


Mit der folgenden benutzerdefinierten Funktion erhälst Du die Blattnamen der aktuellen Calc-Datei (die FUNCTION muss deshalb in einer STANDARD Bibliothek Deiner OOo Installation oder innerhalb des benutzenden Dokuments stehen):

Code: Alles auswählen

Function alleTabellenNamen()
alleTabellenNamen = ThisComponent.getSheets().getElementNames()
End Function


Selektiere untereinander (!) eine ausreichend grosse Zellenanzahl und schreibe dann =MTRANS(ALLETABELLENNAMEN())&T(ZUFALLSZAHL()) in die oberste Zelle, schliesse das mit STRG+UMSCHALT+EINGABETASTE ab (das ergibt eine Matrixformel).

Nun werden die Blattnamen untereinander angezeigt - und automatisch beim Einfügen/Löschen von Blättern aktualisiert.
Auf die kannst Du per Formel zugreifen, #NV zeigt nicht vorhandene an.



Hilft Dir das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von clag »

Hallo marino,

wenn du etwas über die Namenslogik der auszulesenden Tabellen sagst könnte man da vielleicht mit Formeln etwas erreichen.
Sonst müsste man wohl erst per Makro die Tabellennamen ermitteln .........
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
marino
Beiträge: 5
Registriert: Do, 03.03.2011 11:04

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von marino »

@Winfried

Das mit der Funktion klappt prima. Ich weiss nur nicht, wie ich dann die Namen der Blätter in Formeln übernehmen kann. Wenn da also steht:

Blatt23
Wie kann ich dann z.B. in der Zelle daneben 'Blatt23'.K2 ausgeben - und das dann per Fill auf alle Zeilen mit den anderen Blätternamen darunter übernehmen?

Besten Gruß,
Marino
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von clag »

Hallo marino,

mit INDIREKT() baust du den TabellenNamen zB aus C5 in die Formel ein und ergänzt in Textform mit der "ZellAdresse"
=INDIREKT(C5&".F1")

@Komma4
kannst du bitte kurz erklären wie das mit der ZUFALLSZAHL() funktioniert?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
marino
Beiträge: 5
Registriert: Do, 03.03.2011 11:04

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von marino »

Also irgendwas mache ich doch falsch. In der Matrix erscheint nur #NAME? ... Ich habe die Formel so eingegeben: als Macro unter Standard im Doc selbst. Das Modul heisst nun selbst ALLETABELLENNAMEN.
Was mache ich falsch?
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von komma4 »

@marino:

Der Code muss als FUNCTION in einer STANDARD Bibliothek (der betreffenden CALC-Datei oder Deiner OOo-Installation) stehen.

Der Name des Moduls sollte unerheblich sein... allerdings gab es mal einen Fehler, dass Code nicht mehr lief, wenn das Modul wie eine SUB hiess...
Hier funktioniert die Funktion aus MODUL1 der STANDARD Bibliothek meines Testdokuments.


Kommst Du damit weiter?



@clag
Die Funktion
F1 OOo Online Hilfe hat geschrieben:können Sie sich eine Zufallszahl aus dem Bereich 0 bis 1 erzeugen lassen
. Die Funktion T "wandelt einen Wert in einen Text" um. Der "Text der Zufallszahl" ist leer, erzwingt aber die Neuberechnung der Matrix.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von clag »

Hallo komma4,

zuerst war da bei mir das "ah ja , also sozusagen ein F9" !
aber kurz darauf kam die Frage auf, "wieso ist das nötig" es wird doch sowieso immer die Tabelle neu berechnet wenn etwas geändert wird

Dann habe ich diesen Versuch "=MTRANS(allSheetName())" mit der nackten Function gemacht,
und siehe da, es funktioniert auch ohne die erzwungene Aktualisierung durch ZUFALLSZAHL()!

Nun interessiert es mich doch sehr, habe ich etwas missverstanden oder ist der "&T(ZUFALLSZAHL()" Trick nur in speziellen Situationen nötig, oder stammt er eventuell aus früheren OOo Zeiten wo er zwingend war, oder wie ist das zu verstehen :?:

edit:
habe gerade bemerkt die einfache Formel registriert zwar sofort das Einfügen einer neuen Tabelle,
nicht aber das Umbenennen einer Tabelle, dafür ist erst ein ctrl+shift+F9 nötig .. hm ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
marino
Beiträge: 5
Registriert: Do, 03.03.2011 11:04

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von marino »

Also, das funktioniert bei mir nicht.
Ich bin Oo-Anfänger.
Wie genau gebe ich denn die Function ein? Nicht via Tools / Macros / Organize Macros / OpenOffice.org Basic ..?

In der Zelle steht dann: {=mtrans(ALLETABELLENNAMEN())&T(zufallszahl())}, aber
es erzeugt immer ein #Name?

Marino
marino
Beiträge: 5
Registriert: Do, 03.03.2011 11:04

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von marino »

Kann das sein, dass es daran liegt, dass ich eine engl. Portable-Version benutze?
MTRANS existiert dort gar nicht
und ZUFALLSZAHL natürlich auch nicht.
Letzteres dürfte RAND sein, aber was ist MTRANS im Engl.?

Gruß,
Marino
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von komma4 »

marino hat geschrieben:Nicht via Tools / Macros / Organize Macros / OpenOffice.org Basic ..?

In der Zelle steht dann: {=mtrans(ALLETABELLENNAMEN())&T(zufallszahl())}
AHA!


Du benutzt eine englischsprachige OOo-Version!

Dann musst Du auch die englischen FORMELN für Calc nehmen:

MTRANS = TRANSPOSE
ZUFALLSZAHL = RAND
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Wert aus allen existenten Tabellenblättern auslesen

Beitrag von clag »

Hallo Mr.Human.

ich habe dir mal eine Beispieldatei erstellt
Tabellennamen_ermitteln_und_anwenden.ods
(10.59 KiB) 286-mal heruntergeladen
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Antworten