Quersumme
Moderator: Moderatoren
Re: Quersumme
Hallo Hago,
schau mal in die Calc-Hilfe unter dem Stichwort "Benutzerdefinierte Funktionen" und binde dann nach der Anweisung folgenden Code ein (außerhalb der SUB Main, die automatisch angelegt wird):
Die Funktion steht dann aber nur auf Deinem Rechner zur Verfügung, wenn Du das Dokument woanders einsetzen willst, musst Du die Funktion in ein Makromodul in der Datei speichern.
P.S. Ich bin in StarBasic nicht firm - Fehleingaben sind überhaupt nicht abgefangen. Wenn Du also irgendetwas anderes als eine Ganzzahl in die Eingangszelle gibst, passiert irgendwas, nur nicht das, was Du erwartest.
schau mal in die Calc-Hilfe unter dem Stichwort "Benutzerdefinierte Funktionen" und binde dann nach der Anweisung folgenden Code ein (außerhalb der SUB Main, die automatisch angelegt wird):
Code: Alles auswählen
Function QUERSUMME(a as Integer) as Integer
dim b as Integer
meinString=CStr(a)
for i=1 to len(meinString)
b=b+CInt(mid(meinString,i,1))
next i
QUERSUMME=b
End Function
Die Funktion steht dann aber nur auf Deinem Rechner zur Verfügung, wenn Du das Dokument woanders einsetzen willst, musst Du die Funktion in ein Makromodul in der Datei speichern.
P.S. Ich bin in StarBasic nicht firm - Fehleingaben sind überhaupt nicht abgefangen. Wenn Du also irgendetwas anderes als eine Ganzzahl in die Eingangszelle gibst, passiert irgendwas, nur nicht das, was Du erwartest.
Re: Quersumme
Das muss ich mir erst mal inden Formelassistenten laden.freedom hat geschrieben: [läßt sich die Formel
=SUMMENPRODUKT(TEIL(A1;ZEILE(INDIREKT("1:"&LÄNGE(A1)));1)*1)
Calc-gerecht anpassen, weiß das jemand]?
und bin auf diesen Beitrag gestoßen
http://www.ooo-portal.de/index.php?modu ... topic=3580
Der Vorschlag von FranzX trägt dem Umstand Rechnung, dass man in Tabellenfunktionen keine Schleifen unterbringen kann, und die Quersumme ist eben ein prototypisches Schleifenproblem.
Zuletzt geändert von chrk am Sa, 30.08.2008 20:49, insgesamt 1-mal geändert.
Re: Quersumme
Ok, ich hab's gefunden (nachdem ich eine Quelle für Dein Beispiel gefunden habe, freedom):
Zwei Dinge funktionieren in Calc nicht wie in der ursprünglichen Formel: Die Referenz im INDIREKT-Abschnitt kann nicht in 1:1-Notation angegeben werden, und TEIL()liefert einen String zurück, der nicht automatisch gecastet wird.
Code: Alles auswählen
=SUMMENPRODUKT(WERT(TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)));1))*1)
Re: Quersumme
Wieso nicht? - Schau noch mal auf die Unterschiede zwischen Deinem Zitat und meiner Variante.
Bei mir hat das so funktioniert.
Bei mir hat das so funktioniert.
Re: Quersumme
Hallo,
Vielen Dank für all die Antworten.
Ich bedanke mich recht herzlich!
Grüße, Hago
Vielen Dank für all die Antworten.
Das funktioniert perfekt.chrk hat geschrieben:Code: Alles auswählen
=SUMMENPRODUKT(WERT(TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)));1))*1)
Ich bedanke mich recht herzlich!
Grüße, Hago
Re: Quersumme
chrk hat geschrieben:Code: Alles auswählen
=SUMMENPRODUKT(WERT(TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)));1))*1)
Leider meldet v1.1.5 Error 504 in (WERT(TEIL(A1;
Scheinbar haben sich Parameter in 2.4.1 verändert.
Leider habe ich keinen blassen Schimmer, wie ich die Funktion an 1.1.5 anpassen soll.
Hat jemand eine Idee und kann mir helfen? Danke i.V.
Zuletzt geändert von jansch am So, 31.08.2008 00:41, insgesamt 1-mal geändert.
Gruß
Jan
Jan
Re: Quersumme
Hallo chrk,
auch Deine basic-Funktion klappt prima.
Vielen Dank.
Allerdings bräuchte ich eine einstellige Quersumme.
Jetzt mache ich eben die Quersumme der Quersumme der Quersumme usw., bis sie einstellig ist.
Vielleicht kannst Du ja die Funktion so ändern, dass sie eine einstellige Quersumme herstellt.
Ich krieg's nicht hin :-)
Hago
auch Deine basic-Funktion klappt prima.
Vielen Dank.
Allerdings bräuchte ich eine einstellige Quersumme.
Jetzt mache ich eben die Quersumme der Quersumme der Quersumme usw., bis sie einstellig ist.
Vielleicht kannst Du ja die Funktion so ändern, dass sie eine einstellige Quersumme herstellt.
Ich krieg's nicht hin :-)
Hago
Re: Quersumme
Hallo Hago,
das mit der einstelligen Quersumme hättest Du ja eher sagen können, aber so gibt's eben zwei Funktionen, jetzt hatte ich auch mal Zeit für ein Bißchen Kommentar, was da passiert:
QUERSUMMEEINSTELLIG() ruft QUERSUMME() auf, das heißt einerseits, dass Du sie nicht alleine irgendwohin kopieren kannst. Andererseits kannst Du QUERSUMME() für die einfache Quersumme weiter verwenden.
Die Kommentare scheinen hier vielleicht ein wenig flatterhaft, aber in der BASIC-IDE stimmen die Tabs.
das mit der einstelligen Quersumme hättest Du ja eher sagen können, aber so gibt's eben zwei Funktionen, jetzt hatte ich auch mal Zeit für ein Bißchen Kommentar, was da passiert:
Code: Alles auswählen
Function QUERSUMME(a as Integer) as Integer
dim b as Integer
dim meinString as String
meinString=CStr(a) 'Eingabe in String umwandeln, um Anzahl der Stellen zu ermitteln und mit den Stellen zu rechnen
for i=1 to len(meinString) 'Anzahl Stellen bestimmt Anzahl Durchläufe
b=b+CInt(mid(meinString,i,1)) 'Stelle für Stelle addieren
next i
QUERSUMME=b 'Ergebnis zurückgeben
End Function
Function QUERSUMMEEINSTELLIG(a as Integer) as Integer
'Benötigt QUERSUMME()!
Dim b as Integer
Dim meinString as String
meinString=CStr(a) 'Eingabe in String umwandeln, um Anzahl der Stellen zu ermitteln und mit den Stellen zu rechnen
While len(meinString) >1 'Rechne weiter bis einstellig
b=QUERSUMME(a) 'Berechne die QUERSUMME()
meinString=CStr(b) 'Belege meinString neu, damit im nächsten Umlauf die Anzahl der Stellen stimmt
a=b 'Belege a neu, damit die Quersumme errechnet werden kann
Wend
QUERSUMMEEINSTELLIG=b 'Ergebnis zurückgeben
End Function
Die Kommentare scheinen hier vielleicht ein wenig flatterhaft, aber in der BASIC-IDE stimmen die Tabs.
Re: Quersumme
Hallo chrk,
Jedenfalls klappt alles bestens.
Vielen Dank, eine tolle Hilfe.
Viele Grüße, Hago
Ja, entschuldige.chrk hat geschrieben:das mit der einstelligen Quersumme hättest Du ja eher sagen können...
Jedenfalls klappt alles bestens.
Vielen Dank, eine tolle Hilfe.
Viele Grüße, Hago
-
- **
- Beiträge: 20
- Registriert: Mo, 24.03.2008 18:03
Re: Quersumme
chrk hat geschrieben:Code: Alles auswählen
=SUMMENPRODUKT(WERT(TEIL(A1;ZEILE(INDIREKT("A1:A"&LÄNGE(A1)));1))*1)[[[code][/quote] [quote="jansch"]Leider meldet v1.1.5 Error 504[/quote] Hey Jan, ich bin auch an der Lösung interessiert. Weißt Du mittlerweile, warum es nicht funktioniert? Oder noch besser, wie die Formel in 1.1.5 funktioniert? Meine Dankbarkeit wäre Dir sicher :D . Markus
Re: Quersumme
Hallo
Ich hab zwar kein OOo1.15 zum testen, aber ZEILE kann dort evtl freiwillig nur mit einzelnen Zelladressen arbeiten - ?
Versuch mal die Formel als Matrixformel mit 'strg+shift+enter' abzuschliessen bzw der Option 'Matrixforme' im Formelassistenten
Funktioniert das ?
Gruß Karo
Ich hab zwar kein OOo1.15 zum testen, aber ZEILE kann dort evtl freiwillig nur mit einzelnen Zelladressen arbeiten - ?
Versuch mal die Formel als Matrixformel mit 'strg+shift+enter' abzuschliessen bzw der Option 'Matrixforme' im Formelassistenten
Funktioniert das ?
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)
LO7.6.2.1 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)
Re: Quersumme
Hallo Karo,
OOo 1.5 portable gibt es noch bei OOodev.de.
Der Fehler tritt im TEIL()-Abschnitt der Formel auf. Der scheint nicht mit der Matrix klarzukommen, und lässt sich auch mit Eingabe als Matrixformel nicht überreden.
Wenn ich anders herum
eingebe, werden mir schön alle stellen des Eingebewertes untereinander als Matrix ausgegeben.
Der Rest ist Schulterzucken.
OOo 1.5 portable gibt es noch bei OOodev.de.
Der Fehler tritt im TEIL()-Abschnitt der Formel auf. Der scheint nicht mit der Matrix klarzukommen, und lässt sich auch mit Eingabe als Matrixformel nicht überreden.
Wenn ich anders herum
Code: Alles auswählen
=ZEILE(INDIREKT("A1:A"&LÄNGE(A1))))[
Der Rest ist Schulterzucken.
-
- **
- Beiträge: 20
- Registriert: Mo, 24.03.2008 18:03
Re: Quersumme
Hallo Karo, hallo Christian,
danke für die Tipps.
Das richtige Schulterzucken muss ich wohl noch üben
Wenn ich versuche Christians Erkenntnis umzusetzen, habe ich die Fehlermledung 508.
hier sehe ich eine runde Klammer mehr als vorher und die eckige Klammer am Ende ist ein Versehen, oder doch nicht.?
Markus
danke für die Tipps.
Das richtige Schulterzucken muss ich wohl noch üben
Wenn ich versuche Christians Erkenntnis umzusetzen, habe ich die Fehlermledung 508.
Code: Alles auswählen
=ZEILE(INDIREKT("A1:A"&LÄGE(A1))))[
hier sehe ich eine runde Klammer mehr als vorher und die eckige Klammer am Ende ist ein Versehen, oder doch nicht.?
Markus
Re: Quersumme
Moin,
Ich hatte dann aber gestern abend keine Nerven mehr, den Beitrag noch mal zu editieren, um darauf hinzuweisen.
Das Problem ist älter, siehe auch Fehlerhaftes Absenden neuer Beiträge, [gelöst] ZITAT im Forum und Neuer Bug im Board? - Phantomquotes.
Aber wenn sich Stephans Hoffnung (viewtopic.php?f=17&t=15929&p=82323#p82319) im ersten (jüngsten) der drei Threads bewahrheitet, könnten wir jetzt Ruhe haben.
Die eckige Klammer ist ein Artefakt der Forensoftware, in erster Linie hat sie mit schöner Unregelmäßigkeit Zitate verhunzt, aber manchmal nimmt sie sich auch andere Tags vor. Ich habe alle mir bekannten Tricks versucht, es zu vermeiden (inklusive Beitrag löschen und aus der Zwischenablage rekonstruieren).MarkusKauer hat geschrieben: hier sehe ich eine runde Klammer mehr als vorher und die eckige Klammer am Ende ist ein Versehen, oder doch nicht.?
Ich hatte dann aber gestern abend keine Nerven mehr, den Beitrag noch mal zu editieren, um darauf hinzuweisen.
Das Problem ist älter, siehe auch Fehlerhaftes Absenden neuer Beiträge, [gelöst] ZITAT im Forum und Neuer Bug im Board? - Phantomquotes.
Aber wenn sich Stephans Hoffnung (viewtopic.php?f=17&t=15929&p=82323#p82319) im ersten (jüngsten) der drei Threads bewahrheitet, könnten wir jetzt Ruhe haben.