Calc: DBANZAHL2, regulärer Ausdruck

Hallo,

ich habe ein Calc-Dokument, in dem eine Formel wie

=DBANZAHL2($BO$6:$BO$37;0;$Krit.$B$50:$B$51)

eine Spalte nach der Anzahl des Auftretens einer Zeichenkette durchsucht. Das Kriterium ist z.B.: [A-Za-z]*Cc[Aza-z]*

Durchsucht werden kurze Zeichenketten wie 'CuCbAcCi' oder 'CuCc' (ohne die ''). Gefunden werden AUCH Zeichenketten, die cC enthalten (wie im ersten Beispiel). Gefunden werden sollen - case sensitive - jedoch nur solche, die tatsächlich Cc (wie im 2. Beispiel) enthalten.

Optionen - Calc - Berechnen: reguläre Ausdrücke ermöglichen UND
Optionen - Calc - Berechnen: Groß-/Kleinschreibung
sind ANgeschaltet.

Win7/64
LO 3.6.6.2 (Build ID: f969faf)

Ein Denkfehler meinerseits oder eine fehlerhafte Berechnung?

Wer kann mir weiterhelfen? Danke vorab

Markus

ich habe ein Calc-Dokument, in dem eine Formel wie

=DBANZAHL2($BO$6:$BO$37;0;$Krit.$B$50:$B$51)

eine Spalte nach der Anzahl des Auftretens einer Zeichenkette
durchsucht. Das Kriterium ist z.B.: [A-Za-z]*Cc[Aza-z]*

Durchsucht werden kurze Zeichenketten wie 'CuCbAcCi' oder 'CuCc' (ohne
die ''). Gefunden werden AUCH Zeichenketten, die cC enthalten (wie im
ersten Beispiel). Gefunden werden sollen - case sensitive - jedoch nur
solche, die tatsächlich Cc (wie im 2. Beispiel) enthalten.

Optionen - Calc - Berechnen: reguläre Ausdrücke ermöglichen UND
Optionen - Calc - Berechnen: Groß-/Kleinschreibung
sind ANgeschaltet.

Win7/64
LO 3.6.6.2 (Build ID: f969faf)

Ein Denkfehler meinerseits oder eine fehlerhafte Berechnung?

http://wiki.openoffice.org/wiki/Documentation/How_Tos/Regular_Expressions_in_Calc

Regular expression searches /within functions/ are _always_case_
_insensitive_, irrespective of the setting of the "Case sensitive"
check box on the dialog above - so '*red*' and '*ROD*' will always
be matched in the above example. This case-insensitivity also
applies to the regular expression structures ([:lower:]) and
([:upper:]), which match characters irrespective of case. See issue
71000 for some background.

Wolfgang

Danke für den Hinweis!

Die Sinnhaftigkeit erschließt sich mir allerdings auch bei Lektüre von "issue 71000" nicht.

M.E. eine fehlerhafte Interpretation der regex.

Die Sinnhaftigkeit erschließt sich mir allerdings auch bei Lektüre von
"issue 71000" nicht.

Mir ehrlich gesagt auch nicht wirklich; aber ich hab nur den IST-Zustand
berichtet.

M.E. eine fehlerhafte Interpretation der regex.

Nein; RegEx-Engines sind eigentlich ziemlich standardisierte Module; die
können i. d. R. auch case-sensitive. IMHO fehlt es eher auf
/Aufrufseite/, d. h. die Autoren von OOO haben bei der Implementierung
des Aufrufes der RegEx-Funktionen einfach verschlafen, den Parameter zur
Einstellung der case-sensitiveness zu benutzen.

Um auf Dein ursprüngliches Problem zurück zu kommen: Ich hab mal ein
bisschen rumprobiert, und folgende Formel sollte es für Dich eigentlich tun:

=SUMMENPRODUKT(NICHT(ISTFEHLER(FINDEN("Cc";$BO$6:$BO$37))))

Das behandelt den Datenbereich nicht als Datenbank, sondern als Matrix,
und löst die innen stehende Formel in lauter Einzelformeln auf, die
addiert werden, d. h. die Klammer wird ausgewertet als

(NICHT(ISTFEHLER(FINDEN("Cc";$BO$6))) + NICHT(ISTFEHLER(FINDEN("Cc";$BO$7)))

+ NICHT(ISTFEHLER(FINDEN("Cc";$BO$8))) + ... )

und v. a. umgeht es die RegEx-Engine.

[TOFU (_T_ext _O_ben _F_ullquote _U_nten) entfernt, das ist hier unerwünscht;
das Usenet ist doch schließlich kein Bioladen :wink: ]

Wolfgang