Seite 1 von 1
[gelöst] Basic Funktion äquvalent zu MATCH
Verfasst: Mo 4. Jul 2011, 18:09
von Ralf
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
Re: Basic Funktion äquvalent zu MATCH
Verfasst: Mo 4. Jul 2011, 20:37
von karolus
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
Re: Basic Funktion äquvalent zu MATCH
Verfasst: Di 5. Jul 2011, 13:40
von Ralf
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.
Re: [gelöst] Basic Funktion äquvalent zu MATCH
Verfasst: Di 5. Jul 2011, 14:30
von karolus
Hallo
Was Müsstest du denn finden und durch was ersetzen ?
Gruß Karo
Re: [gelöst] Basic Funktion äquvalent zu MATCH
Verfasst: Di 5. Jul 2011, 17:32
von Freelancer
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
Re: [gelöst] Basic Funktion äquvalent zu MATCH
Verfasst: Mi 6. Jul 2011, 17:02
von Ralf
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
Re: [gelöst] Basic Funktion äquvalent zu MATCH
Verfasst: Mi 6. Jul 2011, 18:15
von karolus
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