2016-07-29 11 views
0

Ich benutze LibreOffice 4.2.8 und ich bemerke einige inkonsistente Verhalten bei der Verwendung von CountIf. Ich frage mich, ob ich etwas verpasse. Wenn ich die Option regulärer Ausdruck verwenden kann (Werkzeug-> Optionen-> LibreCalc-> Berechnen-> Regulären Ausdruck in der Formel aktivieren) bekomme ich 0, wenn ich countif für Zeilen verwende, die einige der Zeichen enthalten, die ein Zeichen in a steuern würden regulären Ausdruck. In der folgenden Tabelle wären das A1, B1, C1. Die gleichen Charaktere scheinen jedoch gut zu funktionieren. In der Tabelle unter A, B, C. Wenn ich den regulären Ausdruck in der Formel wende, verschwinden diese Diskrepanzen, aber ich bemerke, dass "=" fehlschlägt. Ist das ein Fehler oder fehlt mir etwas Subtilität, ähnlich wie das Ausbrechen von Regeln auf Bash?Libreoffice Calc Count If inkonsistentes Verhalten

mit regulären Ausdrücken eingeschaltet

A  |B |C (formula in B) 
------|----|---------------   
One |1 |=COUNTIF(A$3:A3,A3)  
Two |1 |=COUNTIF(A$3:A4,A4)  
( |1 |=COUNTIF(A$3:A5,A5)  <<<<<<<<<<<<< A 
]  |1 |=COUNTIF(A$3:A6,A6)  
[  |1 |=COUNTIF(A$3:A7,A7)  <<<<<<<<<<<<< B 
One |2 |=COUNTIF(A$3:A8,A8)  
Two |2 |=COUNTIF(A$3:A9,A9)  
One (|0 |=COUNTIF(A$3:A10,A10) <<<<<<<<<<<<< A1 
Two [ |0 |=COUNTIF(A$3:A11,A11) <<<<<<<<<<<<< B1 
One ] |1 |=COUNTIF(A$3:A12,A12)  
Two) |0 |=COUNTIF(A$3:A13,A13)  
|  |1 |=COUNTIF(A$3:A14,A14) <<<<<<<<<<<<< C 
One | |0 |=COUNTIF(A$3:A15,A15) <<<<<<<<<<<<< C1 
=  |0 |=COUNTIF(A$3:A16,A16)  
One = |1 |=COUNTIF(A$3:A17,A17)  
+  |1 |=COUNTIF(A$3:A18,A18)  
Two + |0 |=COUNTIF(A$3:A19,A19)  
^  |1 |=COUNTIF(A$3:A20,A20)  
&  |1 |=COUNTIF(A$3:A21,A21)  
*  |1 |=COUNTIF(A$3:A22,A22)  
One^|0 |=COUNTIF(A$3:A23,A23)  
Two & |1 |=COUNTIF(A$3:A24,A24)  
One * |2 |=COUNTIF(A$3:A25,A25)  

mit regulären Ausdrücken

A  |B  |C (formula in B) 
------|------|---------- 
One |1 |=COUNTIF(A$1:A1,A1) 
Two |1 |=COUNTIF(A$1:A2,A2) 
( |1 |=COUNTIF(A$1:A3,A3) 
]  |1 |=COUNTIF(A$1:A4,A4) 
[  |1 |=COUNTIF(A$1:A5,A5) 
One |2 |=COUNTIF(A$1:A6,A6) 
Two |2 |=COUNTIF(A$1:A7,A7) 
One (|1 |=COUNTIF(A$1:A8,A8) 
Two [ |1 |=COUNTIF(A$1:A9,A9) 
One ] |1 |=COUNTIF(A$1:A10,A10) 
Two) |1 |=COUNTIF(A$1:A11,A11) 
|  |1 |=COUNTIF(A$1:A12,A12) 
One | |1 |=COUNTIF(A$1:A13,A13) 
=  |0 |=COUNTIF(A$1:A14,A14)  <<<<<<<< 
One = |1 |=COUNTIF(A$1:A15,A15) 
+  |1 |=COUNTIF(A$1:A16,A16) 
Two + |1 |=COUNTIF(A$1:A17,A17) 
^  |1 |=COUNTIF(A$1:A18,A18) 
&  |1 |=COUNTIF(A$1:A19,A19) 
*  |1 |=COUNTIF(A$1:A20,A20) 
One^|1 |=COUNTIF(A$1:A21,A21) 
Two & |1 |=COUNTIF(A$1:A22,A22) 
One * |1 |=COUNTIF(A$1:A23,A23) 

Antwort

0

Für das Problem mit dem „=“ ausgeschaltet könnte man einfach verketten ein „=“ als erstes Zeichen in den Kriterien von COUNTIF. Das heißt nur nach Gleichheit suchen:

=COUNTIF(A$3:A3,"="&A3) 

Auf diese Weise können Sie auch leere Zellen zählen. Diese COUNTIF ist normalerweise nicht.

Für das Problem mit den regulären Ausdrücken ist die einzige Möglichkeit, die ich kenne, SUBSTITUTE alle möglichen gefährlichen Zeichen mit den Escapezeichen.

=COUNTIF(A$3:A3,"="&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A3,"+","\+"),"|","\|"),"(","\("),")","\)"),"[","\[")) 

Die obige Formel ist natürlich nicht vollständig. Und wenn es fertig ist, wird es sehr lang sein.

Verwandte Themen