Calc: Makro für Anzahl Namensnennungen gesucht

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: Calc: Makro für Anzahl Namensnennungen gesucht

Re: Calc: Makro für Anzahl Namensnennungen gesucht

von apfelmartin@yahoo.de » Sa, 13.10.2012 21:20

Stephan hat geschrieben:aber der Aufwand ist Wahnsinn
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...

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.

Re: Calc: Makro für Anzahl Namensnennungen gesucht

von Stephan » Sa, 13.10.2012 21:11

ich habe angefangen, aber der Aufwand ist Wahnsinn, vielleicht hilft ja das Folgende schon etwas:

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
es entspricht den SChritten im PAP bis einschließlich Zeile 14


Gruß
Stephan

Re: Stephan

von apfelmartin@yahoo.de » Sa, 13.10.2012 19:37

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.

Re: Calc: Makro für Anzahl Namensnennungen gesucht

von Stephan » Sa, 13.10.2012 18:24

Was brauchst Du noch?
(ohne Garantie auf Vollständigkeit):

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

Re: Stephan

von apfelmartin@yahoo.de » Sa, 13.10.2012 17:40

Beispiele:

Position(aktiveZelle) : B3
Formel : =Summe(D3; D15; D38; D71)

Was brauchst Du noch?

Re: Dateianhänge

von juetho » Sa, 13.10.2012 17:36

apfelmartin@yahoo.de hat geschrieben:Wie ein Dokument hier angehängt wird weiss ich nicht.
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?

Jürgen

Re: Karolus

von apfelmartin@yahoo.de » Sa, 13.10.2012 17:27

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

Re: Calc: Makro für Anzahl Namensnennungen gesucht

von Stephan » Sa, 13.10.2012 17:07

welcher versierte Makroprogrammierer könnte mir gerade ein winziges Makro schreiben?
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.

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

Re: Calc: Makro für Anzahl Namensnennungen gesucht

von Karolus » Sa, 13.10.2012 16:49

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

Calc: Makro für Anzahl Namensnennungen gesucht

von apfelmartin@yahoo.de » Sa, 13.10.2012 15:19

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)")

Nach oben