🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

[gelöst] Basic Funktion äquvalent zu MATCH

Alles zur Programmierung im LibreOffice.
Antworten
Ralf
Beiträge: 10
Registriert: Do 30. Jun 2011, 16:45

[gelöst] Basic Funktion äquvalent zu MATCH

Beitrag von Ralf » Mo 4. Jul 2011, 18:09

Moin,

ich versuche folgende Funktion zum Laufen zu bringen:

Code: Alles auswählen

Function Test_msg
  osheet = ThisComponent.CurrentController.ActiveSheet
  val_range = oSheet.getCellRangeByName("P5:P14")
  abbr_range = oSheet.getCellRangeByName("E5:E14")

  Test_msg = val_range.getCellByPosition(0,MATCH("Ag",abbr_range,0)).String
End Function
Der Teil MATCH("Ag",abbr_range,0) ist natürlich der, der nicht funktionieren kann.

Diese soll einfach in einer Zelle, in der "=Test_msg()" steht, Text ausgeben, der aus einer kleinen Lookup-Tabelle stammt, die sich hier in E4:E15 und P4:P15 befindet. Z.B. in E4 steht der String "Ag" und nun soll in meiner Zelle der Wert von P4 auftauchen.

Leider finde ich keine Dokumentation, in der ich so suchen könnte, dass ich die Funktion auffinde. Gibt es eine Doku, mit der auch nicht-API-Entwickler klar kommen, in der man auch Beispiele findet und in der man suchen kann?

Gruß und Danke,
Ralf
Zuletzt geändert von Ralf am Di 5. Jul 2011, 13:40, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: Basic Funktion äquvalent zu MATCH

Beitrag von karolus » Mo 4. Jul 2011, 20:37

Hallo
Wenn du aus Calc die Funktion benutzt, besteht ja eigentlich kein Grund das per Umleitung über selbstdefinierte Basic-funktionen zu realisieren - oder ?

Ansonsten:
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig229

Gruß Karo
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Ralf
Beiträge: 10
Registriert: Do 30. Jun 2011, 16:45

Re: Basic Funktion äquvalent zu MATCH

Beitrag von Ralf » Di 5. Jul 2011, 13:40

Vielen Dank, das habe ich letztendlich auch gefunden.

Code: Alles auswählen

Function Test_msg
	osheet = ThisComponent.CurrentController.ActiveSheet
	val_range = oSheet.getCellRangeByName("P5:P14")
	abbr_range = oSheet.getCellRangeByName("E5:E14")
	oFnAcc = createUnoService( "com.sun.star.sheet.FunctionAccess" )

	Test_msg = val_range.getCellByPosition(0,oFnAcc.CallFunction("Match",Array("Ag",abbr_range,0))-1).Value
End Function
So geht es nun.

Ja klar könnte ich die kleine Funktion auch in die Zelle schreiben, aber dies ist nur ein abgespecktes Minimalbeispiel. Die Eigentliche Funktion ist auch nicht riesig, wird aber in etwa 700 Zellen verwendet und müsste ich irgendwas ändern, wäre die Arbeit höllisch. Zumindest habe ich noch keine Möglichkeit gefunden, mit Suchen&Ersetzen reguläre Ausdrücke nicht nur zu finden, sondern auch adäquat zu ersetzen.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: [gelöst] Basic Funktion äquvalent zu MATCH

Beitrag von karolus » Di 5. Jul 2011, 14:30

Hallo
Was Müsstest du denn finden und durch was ersetzen ?

Gruß Karo
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)

Freelancer
Beiträge: 35
Registriert: Sa 28. Mai 2011, 15:30

Re: [gelöst] Basic Funktion äquvalent zu MATCH

Beitrag von Freelancer » Di 5. Jul 2011, 17:32

Hallo,
Ralf hat geschrieben:Die Eigentliche Funktion ist auch nicht riesig, wird aber in etwa 700 Zellen verwendet und müsste ich irgendwas ändern, wäre die Arbeit höllisch.

Dann solltest Du dich mit der Thematik Namen für Formeln beschäftigen.
OO.o Wiki hat geschrieben:Es gibt 2 gute Gründe dafür: zum einen kann man damit die Übersichtlichkeit von Formeln bedeutend verbessern, zum anderen kann man Änderungen zentral vornehmen, ohne die betroffenen Zellen suchen und markieren zu müssen.

Edit: Ergänzend dazu ist die Thematik Namen für Zellen hilfreich.

Freelancer

Ralf
Beiträge: 10
Registriert: Do 30. Jun 2011, 16:45

Re: [gelöst] Basic Funktion äquvalent zu MATCH

Beitrag von Ralf » Mi 6. Jul 2011, 17:02

Moin,

@karolus:

Ich meine mit Suchen&Ersetzen einen Fall wie zum Beispiel in den Zellen G50:G500 ist eine Funktion z.B. =Test($A50;$F49) bis =Test($A500;$F499) nun möchte ich daraus =Test($A50;$F49;$G50) machen. In Perl, sed, awk usw. wäre das für mich kein Problem, in Openoffice wüsste ich nicht, wie ich das mache.

@freelancer:
das mit den Namen für Formeln finde ich interessant und das kann ich sicher auch teilweise gebrauchen. Aber ich hätte keine Idee, wie ich das in meinem Sheet mache. Es handelt sich dabei um folgendes:

Es gibt 2 Arten von Zeilen, die in Blöcken vorkommen:

1. Die erste Zeile eines Blockes ist immer die Kategorie und aus dieser Zeile werden dann Werte in den folgenden Zeilen benutzt.
2. Die auf eine Kategorie-Zeile folgenden sind in der Anzahl variabel, es sind im Normalfalle zwischen 1 und 15 Zeilen.

Hier wüsste ich nicht wie ich das verallgemeinern sollte.

edit: Mein Problem ist auch, dass ich eigentlich nur ein mit VBA angereichertes Excel portieren möchte.

Gruß,
Ralf

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2536
Registriert: Fr 10. Dez 2010, 10:01

Re: [gelöst] Basic Funktion äquvalent zu MATCH

Beitrag von karolus » Mi 6. Jul 2011, 18:15

Hallo
Ralf hat geschrieben: Ich meine mit Suchen&Ersetzen einen Fall wie zum Beispiel in den Zellen G50:G500 ist eine Funktion z.B. =Test($A50;$F49) bis =Test($A500;$F499) nun möchte ich daraus =Test($A50;$F49;$G50) machen. In Perl, sed, awk usw. wäre das für mich kein Problem, in Openoffice wüsste ich nicht, wie ich das mache.
Ist die Zeilenangabe hinter $A die Variable die hinten wieder rein soll ? -
→Suchen und ersetzen:
→Suche
^(=Test\(\$[A-Z])([0-9]{1,3})(;\$[A-Z][0-9]{1,3})\)$
ersetzen durch
$1$2$3;G$2)
mit den Optionen [x]nur in Selektion und [x]regulärer Ausdruck
Du siehst, im Prinzip ist das überall das gleiche ;)
edit: Mein Problem ist auch, dass ich eigentlich nur ein mit VBA angereichertes Excel portieren möchte.
Das halte ich für keine gute Idee, bau das in OOo/LO neu , verzichte wo du kannst auf Basiccode und verzichte vor allem auf VBA.



Gruß Karo
LO7.4.7.5 debian 12(bookworm) auf Raspberry4b 8GB (64bit)
LO24.8.0.3 flatpak debian 12(bookworm) auf Raspberry4b 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten