Calc: Makro für Anzahl Namensnennungen gesucht
Moderator: Moderatoren
-
- **
- Beiträge: 28
- Registriert: Mi, 11.01.2012 22:48
Calc: Makro für Anzahl Namensnennungen gesucht
Hallo,
welcher versierte Makroprogrammierer könnte mir gerade ein winziges Makro schreiben? Es soll mir helfen, aus einer Liste von mehrfach genannten Homöopatika das geeignete Mittel heraus zu suchen und seine Wertigkeit aufzusummieren. Wenns funktioniert, wäre es wohl für mich ein geeigneter Einstieg in richtige Makroprogrammierung bei OOO, derzeit hab ich aber noch keine Lust, mich weitergehend zu belesen. (Bin ja gespannt, obs so winzig und klar wird, wie der Ablaufplan - könnte mir vorstellen, dass manches sich ziemlich ausdehnt...)
Meine OOOVersion ist 3.2.1. Hier der Programmablaufplan:
BeginnZelle := Position(aktive Zelle)
Name := Text (aktive Zelle)
gehe 2x nach rechts
Wertigkeit := Position(aktive Zelle)
gehe nach unten bis Zelle(„Medizin“)
gehe 2x nach unten
Zelle:= Text(aktiver Zelle)
Wenn Zelle = (nix) dann
schreibe in Zelle Name
gehe 1x nach rechts
schreibe in Zelle Formel „=Summe(Wertigkeit)“
Wenn Zelle = Name dann
gehe 1x nach rechts
ergänze in Formel Wertigkeit als Summand
Sonst
gehe 1x nach unten
gehe im PAP zurück zu Zeile 7
gehe im PAP zurück zu Zeile 1
gehe 1x nach unten
Wenn Text(aktiverZelle) <> nix dann
gehe im PAP zurück zu Zeile 1
Sonst
; ) Öffne Hinweisfenster("Fertig. Hier die Bankdaten des Programmierers: Bankverbindung(Programmierer)")
welcher versierte Makroprogrammierer könnte mir gerade ein winziges Makro schreiben? Es soll mir helfen, aus einer Liste von mehrfach genannten Homöopatika das geeignete Mittel heraus zu suchen und seine Wertigkeit aufzusummieren. Wenns funktioniert, wäre es wohl für mich ein geeigneter Einstieg in richtige Makroprogrammierung bei OOO, derzeit hab ich aber noch keine Lust, mich weitergehend zu belesen. (Bin ja gespannt, obs so winzig und klar wird, wie der Ablaufplan - könnte mir vorstellen, dass manches sich ziemlich ausdehnt...)
Meine OOOVersion ist 3.2.1. Hier der Programmablaufplan:
BeginnZelle := Position(aktive Zelle)
Name := Text (aktive Zelle)
gehe 2x nach rechts
Wertigkeit := Position(aktive Zelle)
gehe nach unten bis Zelle(„Medizin“)
gehe 2x nach unten
Zelle:= Text(aktiver Zelle)
Wenn Zelle = (nix) dann
schreibe in Zelle Name
gehe 1x nach rechts
schreibe in Zelle Formel „=Summe(Wertigkeit)“
Wenn Zelle = Name dann
gehe 1x nach rechts
ergänze in Formel Wertigkeit als Summand
Sonst
gehe 1x nach unten
gehe im PAP zurück zu Zeile 7
gehe im PAP zurück zu Zeile 1
gehe 1x nach unten
Wenn Text(aktiverZelle) <> nix dann
gehe im PAP zurück zu Zeile 1
Sonst
; ) Öffne Hinweisfenster("Fertig. Hier die Bankdaten des Programmierers: Bankverbindung(Programmierer)")
Zuletzt geändert von apfelmartin@yahoo.de am Sa, 13.10.2012 20:51, insgesamt 2-mal geändert.
Re: Calc: Makro für Anzahl Namensnennungen gesucht
Hallo
In solchen Ablaufplänen arbeitet vielleicht der "versierte" VBA(-aufzeichnungs)-programmierer....
Ich äussere mal die Vermutung, daß das in Kenntnis der Datenstruktur*** (und evtl. einer Anpassung derselben) mit ein paar ZÄHLENWENN / SUMMEWENN / SUMMENPRODUKT - formeln oder mittels →Daten→Datenpilot lösbar ist.
Falls ich es doch per Makro lösen würde dann bestimmt nicht nach diesem Ablaufplan.
***bitte Beispielsdokument mit hinreichend vielen Daten plus gewünschten Ergebnissen anhängen.
Karolus
In solchen Ablaufplänen arbeitet vielleicht der "versierte" VBA(-aufzeichnungs)-programmierer....
Ich äussere mal die Vermutung, daß das in Kenntnis der Datenstruktur*** (und evtl. einer Anpassung derselben) mit ein paar ZÄHLENWENN / SUMMEWENN / SUMMENPRODUKT - formeln oder mittels →Daten→Datenpilot lösbar ist.
Falls ich es doch per Makro lösen würde dann bestimmt nicht nach diesem Ablaufplan.
***bitte Beispielsdokument mit hinreichend vielen Daten plus gewünschten Ergebnissen anhängen.
Karolus
LO7.4.7.2 debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
LO25.2.3.2 flatpak debian 12(bookworm) auf Raspberry5 8GB (ARM64)
Re: Calc: Makro für Anzahl Namensnennungen gesucht
z.B. ich, wenn Du den Ablaufplan zweckmäßigerweise mit Beispielwerten illustrierst, denn die verbalen Aussagen sind leider mehrdeutig, z.B. ist die Position der aktiven Zelle (Position(aktive Zelle)) ja eigentlich ein Range-Objekt, kann aber auch eine Stringangabe ("Tabelle1.A1") meinen.welcher versierte Makroprogrammierer könnte mir gerade ein winziges Makro schreiben?
nun ist gleichzeitig aber "setze in Formel(aktive Zelle) Wertigkeit als Summand" so beschaffen das wohl eine Zahl als Summand vermutet wird weshalb ich glaube es ging nie um eine Position sondern um den Inhalt der Zelle mit dieser Position, auch ist "setze in Formel(aktive Zelle) Wertigkeit als Summand" doppeldeutig weil es meinen könnte ergänze eine bereits bestehende Formel um diesen Summanden.
Und dererlei Unklarheiten gibts leider noch Einige.
Kurzum, sobald ich genau verstehe was du genau brauchst dauert das Makro zu schreiben 5 Minuten, nur ein Makro auf Verdacht zu schreiben und womöglich wegen Mißverständnissen mehrfach zu ändern wäre echt nervig/zeitaufwendig.
Du mußt das Ganze also nur irgendwie exakter erklären.
Gruß
Stephan
-
- **
- Beiträge: 28
- Registriert: Mi, 11.01.2012 22:48
Re: Karolus
Wie ein Dokument hier angehängt wird weiss ich nicht. Ich lass mal eine Auflistung folgen, wie meine Tabelle am Ende aussehen soll.
Bin natürlich offen für leichtere Lösungen, sofern sie verständlich beschrieben sind.
Priorität : Zahl von 0-5
Wert: Zahl von 1-3
SummeM: Summe aus den verschiedenen Wertigkeiten(WertM x PrioritätK) des jeweiligen Medikamentes M in den verschiedenen Krankheitsbeschreibungen K
Krankheitsbeschreibung1 Prorität1
Medikament1 Wert1 Wert1xPriorität1
Medikament2 Wert2 Wert2xPriorität1
...
Medikament30 Wert30 Wert30xPriorität1
Krankheitsbeschreibung2 Priorität2
wie oben, Medikamente teilweise deckungsgleich, aber mit anderem Wert, teilweise neu
...
Krankheitsbeschreibung25 Priorität25
...
Medizin
Bis hierhin wird die Tabelle manuell eingetragen.
Ab hier wird die Tabelle von dem Makro ausgefüllt! Das Makro wird gestartet in Zelle Medikament1, bzw. immer am Anfang der oben stehenden Abschnitte der Krankheitsbeschreibungen.
Medikament1 Summe1
Medikament2 Summe2
...
Medikament100 Summe100
Bin natürlich offen für leichtere Lösungen, sofern sie verständlich beschrieben sind.
Priorität : Zahl von 0-5
Wert: Zahl von 1-3
SummeM: Summe aus den verschiedenen Wertigkeiten(WertM x PrioritätK) des jeweiligen Medikamentes M in den verschiedenen Krankheitsbeschreibungen K
Krankheitsbeschreibung1 Prorität1
Medikament1 Wert1 Wert1xPriorität1
Medikament2 Wert2 Wert2xPriorität1
...
Medikament30 Wert30 Wert30xPriorität1
Krankheitsbeschreibung2 Priorität2
wie oben, Medikamente teilweise deckungsgleich, aber mit anderem Wert, teilweise neu
...
Krankheitsbeschreibung25 Priorität25
...
Medizin
Bis hierhin wird die Tabelle manuell eingetragen.
Ab hier wird die Tabelle von dem Makro ausgefüllt! Das Makro wird gestartet in Zelle Medikament1, bzw. immer am Anfang der oben stehenden Abschnitte der Krankheitsbeschreibungen.
Medikament1 Summe1
Medikament2 Summe2
...
Medikament100 Summe100
Zuletzt geändert von apfelmartin@yahoo.de am Sa, 13.10.2012 19:57, insgesamt 3-mal geändert.
Re: Dateianhänge
Im Kopf gibt es rechts den Punkt FAQ. Dort gibt es u.a. die Themen: Weshalb kann ich keine Dateianhänge anfügen? Kann ich Bilder in meine Beiträge einfügen? Welche Dateianhänge sind in diesem Forum zulässig?apfelmartin@yahoo.de hat geschrieben:Wie ein Dokument hier angehängt wird weiss ich nicht.
Jürgen
Situation: LibO 3.6 auf Win 7 Home Premium (64-bit) mit MySQL (localhost) über JDBC
-
- **
- Beiträge: 28
- Registriert: Mi, 11.01.2012 22:48
Re: Stephan
Beispiele:
Position(aktiveZelle) : B3
Formel : =Summe(D3; D15; D38; D71)
Was brauchst Du noch?
Position(aktiveZelle) : B3
Formel : =Summe(D3; D15; D38; D71)
Was brauchst Du noch?
Re: Calc: Makro für Anzahl Namensnennungen gesucht
(ohne Garantie auf Vollständigkeit):Was brauchst Du noch?
die Bestätigung wie "=Summe(D3; D15; D38; D71)" allgemein aussieht, z.B. sind das immer 4 Summanden und den Hinweis ob der andere Summand immer angehängt werden soll.
eine Aussage was "gehe nach unten bis Zelle(„Medizin“)" meint. Zelle Medizin kann z.B. ein einzelliger Bereich mit Namemen "Medizin" sein oder ein Zelltext
eine Ausssage was "Wenn Zelle >< leer dann" meint z.b. "Wenn Zelle <> leer dann"?
Gruß
Stephan
-
- **
- Beiträge: 28
- Registriert: Mi, 11.01.2012 22:48
Re: Stephan
1) Hab gerade einen gravierenden Fehler im PAP beseitigt, auf den Du mich hingewiesen hast - Ich hoffe jetzt ist er auch deutlicher:
Am Anfang steht das Medikament und seine Wertigkeit noch nicht in der Liste der Medizin, deshalb soll es erstmal samt Formel eingetragen werden. Die Formel wird geschrieben: "=Summe(ZelleWertigkeit,zB. D3)"
Wenn da schon das Medikament samt Summenformel steht, wird bloss noch der neue Summand, zB. Zelle D27 dazu getragen.
Wenn da ein anderes als das aktuelle Medikament steht, wird die nächste Zeile untersucht.
2) in der Zelle steht nur "Medizin", sonst nix. Es ist die Überschrift der Liste der Medikamente.
3) die Zelle soll nicht leer sein. (Der Absatz Krankheitsbeschreibung endet jeweils mit einer Leerzeile.)
Siehe zum Verständnis auch Re: Karolus.
Am Anfang steht das Medikament und seine Wertigkeit noch nicht in der Liste der Medizin, deshalb soll es erstmal samt Formel eingetragen werden. Die Formel wird geschrieben: "=Summe(ZelleWertigkeit,zB. D3)"
Wenn da schon das Medikament samt Summenformel steht, wird bloss noch der neue Summand, zB. Zelle D27 dazu getragen.
Wenn da ein anderes als das aktuelle Medikament steht, wird die nächste Zeile untersucht.
2) in der Zelle steht nur "Medizin", sonst nix. Es ist die Überschrift der Liste der Medikamente.
3) die Zelle soll nicht leer sein. (Der Absatz Krankheitsbeschreibung endet jeweils mit einer Leerzeile.)
Siehe zum Verständnis auch Re: Karolus.
Re: Calc: Makro für Anzahl Namensnennungen gesucht
ich habe angefangen, aber der Aufwand ist Wahnsinn, vielleicht hilft ja das Folgende schon etwas:
es entspricht den SChritten im PAP bis einschließlich Zeile 14
Gruß
Stephan
Code: Alles auswählen
x1 = Split(ThisComponent.CurrentSelection.AbsoluteName, ".")
BeginnZelle = x1(1)
xName = ThisComponent.CurrentSelection.String
With Thiscomponent.CurrentSelection.RangeAddress
akt_zeile = .Startrow
akt_spalte = .StartColumn
x2 = Split(ThisComponent.Sheets().getByIndex(.Sheet).getCellByPosition(akt_spalte+2, akt_zeile).AbsoluteName, ".")
Wertigkeit = x2(1)
Do
i = akt_zeile + 1
tmp = ThisComponent.Sheets().getByIndex(.Sheet).getCellByPosition(akt_spalte+2, i).String
Loop While tmp <> "Medizin"
Zelle = ThisComponent.Sheets().getByIndex(.Sheet).getCellByPosition(akt_spalte+2, i+2).String
If Zelle = "" Then
ThisComponent.Sheets().getByIndex(.Sheet).getCellByPosition(akt_spalte+2, i+2).String = xName
End If
ThisComponent.Sheets().getByIndex(.Sheet).getCellByPosition(akt_spalte+3, i+2).Formula = "=sum(" & Wertigkeit & ")"
If Zelle = xName Then
akt_formula = ThisComponent.Sheets().getByIndex(.Sheet).getCellByPosition(akt_spalte+3, i+2).Formula
cut_formula = LEFT(akt_formula, LEN(akt_formula)-1)
new_formula = cut_formula & ";" & Wertigkeit & ")"
ThisComponent.Sheets().getByIndex(.Sheet).getCellByPosition(akt_spalte+3, i+2).Formula = new_formula
End If
Gruß
Stephan
-
- **
- Beiträge: 28
- Registriert: Mi, 11.01.2012 22:48
Re: Calc: Makro für Anzahl Namensnennungen gesucht
Ich habs geahnt! Das kenn ich noch aus meinen Programmierzeiten, wo ich mit einem kalten und einem heißen Ohr die Nächte durchgetippt hab...Stephan hat geschrieben:aber der Aufwand ist Wahnsinn
Ich hab nochmal den PAP etwas ändern müssen - hast Du das schon bedacht? Siehe erstes Statement.
Dann noch die Frage: Wo trag ich das Makro ein und wie bring ichs zum Laufen? Meine Erfahrung beschränkt sich auf Makro aufnehmen und Tastenschlüssel zuweisen.
Habs gerade probiert mit Extras / Makros / Makros verwalten / Javascript / erstellen. Ging aber nicht. Die Hilfe war auch nicht aussagekräftig genug für mich.