Wert aus allen existenten Tabellenblättern auslesen

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Wert aus allen existenten Tabellenblättern auslesen

Re: Wert aus allen existenten Tabellenblättern auslesen

von clag » Di, 15.03.2011 11:58

Hallo Mr.Human.

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

Re: Wert aus allen existenten Tabellenblättern auslesen

von komma4 » Mo, 07.03.2011 16:13

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

Re: Wert aus allen existenten Tabellenblättern auslesen

von marino » Mo, 07.03.2011 16:09

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

Re: Wert aus allen existenten Tabellenblättern auslesen

von marino » Mo, 07.03.2011 16:01

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

Re: Wert aus allen existenten Tabellenblättern auslesen

von clag » So, 06.03.2011 09:04

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 ?

Re: Wert aus allen existenten Tabellenblättern auslesen

von komma4 » Sa, 05.03.2011 03:14

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

Re: Wert aus allen existenten Tabellenblättern auslesen

von marino » Do, 03.03.2011 14:21

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?

Re: Wert aus allen existenten Tabellenblättern auslesen

von clag » Do, 03.03.2011 13:45

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?

Re: Wert aus allen existenten Tabellenblättern auslesen

von marino » Do, 03.03.2011 13:31

@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

Re: Wert aus allen existenten Tabellenblättern auslesen

von clag » Do, 03.03.2011 12:46

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

Re: Wert aus allen existenten Tabellenblättern auslesen

von komma4 » Do, 03.03.2011 12:42

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?

Wert aus allen existenten Tabellenblättern auslesen

von marino » Do, 03.03.2011 11:21

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

Nach oben