gelöst: Tabellenblatt über index ansprechen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

gelöst: Tabellenblatt über index ansprechen

Beitrag von erikafuchs »

Hallo Leute,

hat jemand eine Idee?
Ich habe ein Tabellendokument mit mehreren Tabellenblättern. Die einzelnen Tabellenblätter haben individuelle Namen ("Fritz_Müller, Lisa_Schmidt...). Auf der ersten Seite möchte ich eine Übersicht anlegen und dabei z.B. untereinander jeweils die Zellen A5 der verschiedenen Tabellenblätter untereinander auflisten. Also "Tabelle1.A5, Tabelle2.A5 ... Ich möchte die einzelnen Tabellen über einen Index ansprechen obwohl sie Namen haben. Geht das, oder muss ich ein Makro dafür schreiben?

Grüße von
Pit
Zuletzt geändert von erikafuchs am So, 04.05.2008 21:12, insgesamt 1-mal geändert.
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Tabellenblatt über index ansprechen

Beitrag von turtle47 »

Hi Pit,

ein Makro gibt es schon dafür hier.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Tabellenblatt über index ansprechen

Beitrag von erikafuchs »

Hallo Jürgen,

vielen Dank soweit. Mein Problem ist, dass es hier nicht um wenige Zellen auf wenigen Blättern geht sondern um eine größere Zahl. Ich ahbe in jeder Klasse etwa 25 Schüler (Ich bin Lehrer) und jeder Schüler hat ein eigens Tabellenblatt mit etwa 25 mal 50 Zellen. Jeder Schüler überträgt per "Knopfdruck" seine Daten (per Makro) in ein zentrales Dokument. Ich bekomme so mit dem Übersichtsblatt eine Übersicht über die Arbeit aller Schüler und die Schüler sollten eine Rückmeldung über Durchschnittswerte und ihr Ranking bekommen. Wenn jetzt bei jeder Anmeldung per Makro alles neu ausgefüllt und sortiert werden muss dauert das einen Moment. Ich hatte die Hoffnung, dass man diese Übersicht und die Berechnung von Durchschnittswerten im zentralen Dokument organisiert und schneller zu einem Ergebnis kommt. Da man die Zellen und Seiten eines Tabellenblattes mit Makros sowohl über ihen Namen als auch über einen Index ansprechen kann, dachte ich, das ginge vielleicht auch ohne Makros?

Grüße
Pit
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Tabellenblatt über index ansprechen

Beitrag von turtle47 »

Hallo Pit,
erikafuchs hat geschrieben:Wenn jetzt bei jeder Anmeldung per Makro alles neu ausgefüllt und sortiert werden muss dauert das einen Moment.
Wenn die Namen der Tabellenblätter im Grunde immer gleich sind, dann musst Du Dir doch nur einmalig ein "Mastersheet"
für die Auswertung anlegen. Sorry, oder ich habe Dein Problem damit nicht richtig verstanden.
erikafuchs hat geschrieben: Da man die Zellen und Seiten eines Tabellenblattes mit Makros sowohl über ihen Namen als auch über einen Index ansprechen kann, dachte ich, das ginge vielleicht auch ohne Makros?
Dazu kann ich Dir leider keine Auskunft geben.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Tabellenblatt über index ansprechen

Beitrag von Karolus »

Hallo
Damit es ohne Makro per Formel geht, brauchst du aber fortlaufende Tabellennamen in der Art: Tabelle1,Tabelle2,usw.
oder auch Schüler1,Schüler2, usw. - und die hast du offenbar nicht.
Folgendes Makro listet alle Inhalte von A5 vom 2. bis zum letzten Blatt, untereinander ab der aktuell selektierten Zelle.

Code: Alles auswählen

sub alleBlaetterA5
azelle = thisComponent.currentselection().getcelladdress 'Start bei aktueller Zelle
s = azelle.column : z = azelle.row
	for i = 1 to thiscomponent.sheets().count-1
thisComponent.sheets(0).getcellbyposition(s,z+i).string = thisComponent.sheets(i).getcellrangebyname("A5").string
	next i
end sub
Das lässt sich noch weiter automatisieren wenn man im Makro eine Liste der auszugebenden Zellen schreibt,
und dann auch eine Liste der Startadressen in die geschrieben werden soll.

Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Tabellenblatt über index ansprechen

Beitrag von turtle47 »

@ Karolus
Dein Makro ist auch eine tolle Möglichkeit das Problem zu lösen.
Mir ist aufgefallen, das mit den in Tabelle1 eingefügten Werten nicht weiter gerechnet werden kann,
da diese vorne mit einem Hochkomma versehen sind.

Schöne Grüsse.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Karolus
********
Beiträge: 7438
Registriert: Mo, 02.01.2006 19:48

Re: Tabellenblatt über index ansprechen

Beitrag von Karolus »

Hallo Jürgen
turtle47 hat geschrieben:@ Karolus
....
Mir ist aufgefallen, das mit den in Tabelle1 eingefügten Werten nicht weiter gerechnet werden kann,
da diese vorne mit einem Hochkomma versehen sind.
..
das liegt daran daß ich im Makro den '.string' auslese und zurückschreibe flexibler wäre wohl '.formula'
Hier noch mal ein Beispiel wie man ein Übersichtsblatt mit mehreren Auszügen aus den allen anderen Blättern erstellen kann, diesmal mit '.formula' ;-)

Code: Alles auswählen

sub alleBlaetterA5_B4_C3
dim inliste()
inliste = array("A5","B4","C3")
dim outliste()
outliste = array("A1","B1","C1")
for ix = 0 to ubound(inliste())
	azelle = thisComponent.sheets(0).getcellrangebyname(outliste(ix)).getcelladdress
	s = azelle.column : z = azelle.row
	for i = 1 to thiscomponent.sheets().count-1
		thisComponent.sheets(0).getcellbyposition(s,z+i-1).formula =_ thisComponent.sheets(i).getcellrangebyname(inliste(ix)).formula
	next i
next ix
end sub
Gruß Karo
LO7.4.7.2 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Tabellenblatt über index ansprechen

Beitrag von erikafuchs »

Vielen Dank für eure Mühe!

Ich sehe schon, ich komme wohl nicht um das Makro rum. Eine andere Idee wäre es allerdings die einzelnen Tabellenblätter doch durchzunummerieren. Das Problem ist nur, dass die einzelnen Tabellenblätter erst erzeugt werden, wenn die Schüler ihre Daten per Makro aus "ihrem" Tabellendokument in das "zentrale" Dokument der Klasse übertragen und dass bei einer neuen "Anmeldung" des gleichen Schülers dessen vorheriger Eintrag überschrieben werden soll. Benne ich die einzelnen Seiten mit Nummern, muss erst festgestellt werden ob für den jeweiligen Schüler schon ein Eintrag da ist und wenn ja, auf welcher Seite sich diese älteren Daten befinden um sie zu überschreiben. Außerdem wäre es wahrscheinlich noch besser, wenn ich mich mit der Einbindung einer Datenbank beschäftigen würde - das ist aber wohl eine Menge Arbeit.

Grüße von
Pit
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenblatt über index ansprechen

Beitrag von Stephan »

Das Problem ist nur, dass die einzelnen Tabellenblätter erst erzeugt werden, wenn die Schüler ihre Daten per Makro aus "ihrem" Tabellendokument in das "zentrale" Dokument der Klasse übertragen und dass bei einer neuen "Anmeldung" des gleichen Schülers dessen vorheriger Eintrag überschrieben werden soll.
Na dann bietet es sich doch an bei dieser Gelegenheit auch gleich die Einträge in der 'summarischen' Tabelle vorzunehmen. Probleme kann ich nicht erkennen, da es sich um eine Tabelle handelt, deren Name konstant ist und deren Formeleinträge der gewünschten Form (also = Fritz_Müller.A5) doch auch bei beliebiger Sortierung zweifelsfrei am "Fritz_Müller" identifizierbar sind.



Gruß
Stephan
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Tabellenblatt über index ansprechen

Beitrag von erikafuchs »

Lieber Stephan,
vielen Dank erstmal. Ich hatte halt den Ergeiz, die "summarische Tabelle" ohne Makros zu bearbeiten. Ich will das Problem noch etwas genauer beschreiben: Meine Schüler haben jeweils ein Tabellendokument mit dem sie alle Arten von Aufgaben üben. Auf einem Blatt dieser Datei werden dabei die Daten gesammelt: Wie viele Aufgaben gelöst wurden, wie viele Fehler gemacht wurden, die Bearbeitungszeiten, Rechengeschwindigkeit usw. . Dieses Blatt soll per "Knopfdruck" in das zentrale Dokument übertragen werden. Schön wäre jetzt halt, wenn auf den Reitern unten auf jeder Seite der Name des Schülers eingetragen wäre, damit ich die Ergebnisse in einem Dokument kontrollieren könnte (Bisher muss ich jedes Dokument der Schüler einzeln aufrufen - meine Schüler schicken mir diese per eMail).
Ich habe jetzt mal ein bischen rumprobiert und fände es am einfachsten, wenn auf einem Tittelblatt jeweils die Durchschnittsergebnisse der einzelnen Zellen über alle Blätter berechnet würde: mittelwert(Seite1.A1:Seite25.A1) ... mittelwert(Seite1.Z9:Seite25.Z9). Das klappt ohne Makro, allerdings nicht wenn die Seite1 "Fritz_Musterschüler" heißt.
Nach meiner Einschätzung ginge das aber am einfachsten: Die Schüler melden sich in der Schule im Netzwerk an, schicken per "Knopfdruck" ihre Ergebnisse an das Zentraldokument das widerum im gleichen Moment die Durchschnittswerte zurückgibt damit die Schüler eine Rückmeldung bekommen und dann wird das Zentraldokument geschlossen damit der nächste Schüler sich anmelden kann - das muss ja schnell gehen.

Da habe ich gleich noch eine grundsätzliche Frage: Sehe ich das richtig, dass die meisten Funktionen, die in calc zur Verfügung stehen als Makro nicht existieren? So ist es mir z.B. nicht gelungen per Makro zu runden. Stattdessen multipliziere ich mit einer Zehnerpotenz, wandle in eine ganze Zahl und teile dann wieder durch die Zehnerpotenz ... oder habe ich da was übersehen? Das Kürzen von Brüchen wird dann mit solchen Methoden echt schwierig.

Viele Grüße
Pit
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Tabellenblatt über index ansprechen

Beitrag von Stephan »

Ich hatte halt den Ergeiz, die "summarische Tabelle" ohne Makros zu bearbeiten.
Warum?
Ich verstehe schlicht das ganze Problem nicht mehr - Du schriebst:

Jeder Schüler überträgt per "Knopfdruck" seine Daten (per Makro) in ein zentrales Dokument.

und darunter kann ich mir was vorstellen und brauche dafür keine Details, weil das das andere Problem eigentlich nicht tangiert.
Aber: Du schreibst ja nun das Du hierfür ein Makro verwenden willst und dann verstehe ich nicht warum dieses Makro, was ja nun ohnehin da ist, die paar Einträge in der einen Tabelle nicht noch nebenher erledigen können soll.
Dieses Blatt soll per "Knopfdruck" in das zentrale Dokument übertragen werden. Schön wäre jetzt halt, wenn auf den Reitern unten auf jeder Seite der Name des Schülers eingetragen wäre, damit ich die Ergebnisse in einem Dokument kontrollieren könnte
Ja, OK nur das hat ja nun nichts mit dem bisherigen Thread zu tun, hier hast Du bisher erkennbar argumentiert das ja das schon alles ginge und es nur um die Formeln auf dem ersten Tabellenblatt geht - also zumindest habe ich das so verstanden.
Ich habe jetzt mal ein bischen rumprobiert und fände es am einfachsten, wenn auf einem Tittelblatt jeweils die Durchschnittsergebnisse der einzelnen Zellen über alle Blätter berechnet würde: mittelwert(Seite1.A1:Seite25.A1) ... mittelwert(Seite1.Z9:Seite25.Z9). Das klappt ohne Makro, allerdings nicht wenn die Seite1 "Fritz_Musterschüler" heißt.
und nahtlos wechselst Du nun wieder die Betrachtung so als ob das Dokument schon existierte und es nur um die Formeln auf dem einen Blatt geht.
Außerdem völlig andere Formeln als die um die es bisher ging, bisher ging es um eine Auflistung, jetzt plötzlich um einen Mittelwert.
Im Übrigen ist Mittelwert doch nun wirklich ganz leicht und ich verstehe nicht warum das nicht gehen soll.

Deine Formel ist:

mittelwert(Seite1.Z9:Seite25.Z9)

und die liefert den Mittelwert der Zellen Z9 aller Tabellenblätter, wobei das am Weitensten 'linke' Tabellenblatt "Seite1" heißt und das am weitesten 'rechte' "Seite25" heißt und natürlich wird das auch gehen wenn die Blätter andere Namen haben, beispielsweise:

mittelwert(Fritz_Musterschüler.Z9:Lisa_Schmidt.Z9)

das heißt das Linke Blatt heißt "Fritz_Musterschüler" dann kommen 23 Blätter gänzlich beliebigen Namens und dann kommt das rechte Blatt mit Namen "Lisa_Schmidt". Und ich habe nur Deine Formel genommen und stur nach Schema F die Blattnamen eingetragen, was ja Deiner Ausage nach (s.o.) nicht funktionieren soll.

Und um der Nachfrage vorzubeugen:
Es ist natürlich möglich mit völlig variablen Namen zu arbeiten, wenn Du links und rechts der zu betrachtenden Blätter jeweils ein zusätzliches Blatt einfügst und dort Zelle Z9 leer lässt und dann folgende Formel verwendest:

=SUMME(linkes_blatt.Z9:rechtes_blatt.Z9)/25

Nach meiner Einschätzung ginge das aber am einfachsten: Die Schüler melden sich in der Schule im Netzwerk an, schicken per "Knopfdruck" ihre Ergebnisse an das Zentraldokument das widerum im gleichen Moment die Durchschnittswerte zurückgibt damit die Schüler eine Rückmeldung bekommen und dann wird das Zentraldokument geschlossen damit der nächste Schüler sich anmelden kann
Wenn Du eine Einschätzung triffst mußt Du eine Grundlage haben, auf der basierend Du die Einschätzung triffst - Wie also willst Du das hier Beschriebene technisch umsetzen? Wie soll es ohne Makro gehen?
Wenn Du hier von Netzwerk schreibst ist das Problem in grober Betrachtung nicht einmal mit Makro so einfach zu lösen.


Du solltest einfach mal den Nebel lüften, denn es ist wirklich so das ich nicht mehr durchblicke worum es Dir geht bzw. was nun wie überhaupt schon geht und was nur wage Überlegungen sind ... angefangen hat der Thread mit einer für mich klaren Frage, nur Du hast inzwischen völlig das Thema gewechselt, somit:
Bitte schreibe hin worum es wirklich geht und dann kann vielleicht jemand eine Lösung vorschlagen.

Sehe ich das richtig, dass die meisten Funktionen, die in calc zur Verfügung stehen als Makro nicht existieren?
Nein. Zum Einen gibt es i.d.S. nicht eine Funktion die auch als Makro existiert, weil das verschiedene Dinge sind, aber zum Anderen sind jedoch im Prinzip alle Tabellenfunktionen innerhalb von Makros verfügbar, siehe:
http://www.dannenhoefer.de/faqstarbasic ... nden..html



Gruß
Stephan
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Tabellenblatt über index ansprechen

Beitrag von erikafuchs »

Lieber Stephan,

vielen Dank, da hast du dir ja viel Mühe gegeben. Tut mir leid wenn ich mein Problem nicht ordentlich beschrieben habe. Du hast recht, seit meiner ersten Frage habe ich die Idee vom Aufbau des zentralen Dokuments geändert. Das Schreiben von Makros geht mir leider noch nicht so flott von der Hand - das dauert echt lange. Daher wollte ich es mir einfacher machen. Außerdem dachte ich, die Funktionen auf einem Tabellenblatt werden schneller berechnet als ein Makro das etwa 100 Zellen über 25 Tabellenblätter berechnet - oder ist das egal?

Aber du hast mir perfekt geholfen. Wenn ich nur den Namen des ersten und des letzten Blattes wissen muss und der Rest egal ist, dann klappt das doch perfekt - da muss man nur mal drauf kommen.

Zu deiner Frage mit dem Netzwerk: Das klappt schon jetzt. Da ich das Tabellendokument ständig verbessere, müssen meine Schüler jetzt schon über einen Dialog aus dem neuen Dokument heraus ihre alten Daten über einen Netzwerkpfad suchen und die Daten importieren, genauso würde es auch mit dem Exportieren funktionieren.

Weiterhin vielen Dank für die dannehoefer-Seite, das kannte ich auch noch nicht. Ich muss noch viel lernen.

Vielen Dank nochmals
Pit
Antworten