countif関数で正規化表現がうまくいかない

スプレッドシート (Calc) について
返信する
Debara
記事: 15
登録日時: 1月 31, 2011, 6:07 pm

countif関数で正規化表現がうまくいかない

投稿記事 by Debara »

countif関数で正規化表現をすると、エラーにもならず結果は0(正しくは12)が返される。
使用しているOOOのVer:3.4.0
仕様OS:Windows7 Home Pre.
機種:Lenovo G560

具体的な使用例:
セル範囲(M3:M79)に下記の文字列が混在している。
  新幹線、飛行機、澤田車、熊田車、古川車、藤井車、その他
「車」の文字が入ったセル(澤田車、熊田車、古川車、藤井車)の合計セル数をカウントしたいので、
「車」の部分に正規化表現の*を使って、関数の記述は以下の通り。
  =countif(M3:M79;"*車*")  (車の前後に*印を)
なお(車の前にだけ*印をいれた)=countif(M3:M79,"*車")でも結果は同じです。
MS_OfficeのExcelならば上のどちらの記述でも正しい結果(12)が出るのですが...。
上記の記述で、どこが間違っているのでしょうか?教えて下さい!
よろしくお願いいたします。

Aug.6,2012 Debara
OpenOffice3.2.1 Windows7
MoIshihara
記事: 337
登録日時: 6月 21, 2010, 6:52 am

Re: countif関数で正規化表現がうまくいかない

投稿記事 by MoIshihara »

Debara さん こんにちは

・お手数ですが、作成した ods ファイルを添付して下さい。
Debara
記事: 15
登録日時: 1月 31, 2011, 6:07 pm

Re: countif関数で正規化表現がうまくいかない

投稿記事 by Debara »

MoIshiharaさん

添付File:同期会2012in仙台
箇所:92行K欄の「自家用車」の関数です。
他の行の正規化表現をしないcountif関数の戻り値は正しいモノです。

よろしくお願いいたします。

Aug.15,2012 Debara

添付Fileは都合により削除させていただきました。
Aug.16,2012 Debar
最後に編集したユーザー Debara [ 8月 16, 2012, 8:48 pm ], 累計 1 回
OpenOffice3.2.1 Windows7
MoIshihara
記事: 337
登録日時: 6月 21, 2010, 6:52 am

Re: countif関数で正規化表現がうまくいかない

投稿記事 by MoIshihara »

Debara さん こんにちは

下記手順を試して下さい。
 1.メニューから[ツール][オプション]を選びます。
 2.[オプション]ダイアログのツリービューから[OpenOffice.org Calc][計算式]を選びます。
 3.[数式で正規表現を使う]チェックボックスをオンにします。
 4.[OK]ボタンをクリックします。
 5."K92"セルを選択します。
 6."=COUNTIF(K$3:K$79;".*車")" と入力します。
 (正規表現のワイルドカード "*" はその手前の文字を評価します、詳しくはヘルプを参照して下さい)
Debara
記事: 15
登録日時: 1月 31, 2011, 6:07 pm

Re: countif関数で正規化表現がうまくいかない

投稿記事 by Debara »

MoIshihara さん

早速の回答を有難うございました。
ご指示通りにやったら正規表現自体はうまくいきました。

しかし、Calcを終了させると、「option」で指定した内容(正規表現を使う)が保持されずに「使わない」に
戻ってしまいます。(何度やっても結果は同じ) これはどうすれば解決しますか?
(本件は別のスレッドを立てた方が良かったでしょうか?)

以下は最初の質問(正規表現が失敗する)への付記事項です
ところで
(1)「正規化表現を使う」をOptionで指定するのは知りませんでした。私の調査不足でした。
  しかし願わくば「正規表現」のヘルプでその旨の注意書きがあると嬉しいですね。

(2)「.*」とは知りませんでした。
  回答を戴いた際には「ああ、option指定が必要だったか!」と思い、そこを指定しても改善されていないので、
 「おかしいなあ!」と思いつつ回答を眼を凝らして良く見ると「.*車」と「*」印の前に「.ピリオド」が付いていました。
 確かにこれもヘルプ正規表現の表中2段目に「行ブレークと段落ブレーク以外のすべての単一文字を表します」と明示されていますが、
 この意味が中々理解できませんでしたが、今回の事例でよく分かりました。
 この仕様によれば今回の事例では「.*車」でも「..車」でも同じ結果になるのですね?

(3)ところでこの「*」印の仕様はExcelとは全く互換性がないのですね?
 確かMS_Excelのアスタリスク「*」は、どんな文字にもどんな文字数にもなれる文字で、
 「*」を使えば0文字以上の任意の文字列を指定したことになりますよね?

色々とお手数をおかけしますが、宜しくお願い致します。
Aug.16,2012 Debara
OpenOffice3.2.1 Windows7
MoIshihara
記事: 337
登録日時: 6月 21, 2010, 6:52 am

Re: countif関数で正規化表現がうまくいかない

投稿記事 by MoIshihara »

Debara さん こんにちは

>(正規表現を使う)が保持されずに「使わない」に戻ってしまいます。

[正規表現を使う]オプションは、Calc では無く、その設定を行ったファイルに保存されます。
Calc のデフォルトテンプレートは、このオプションがオンになっていますので。
新規ドキュメントでは無く、過去のファイルかそれとも xls ファイル等を指していませんか?

>「..車」でも同じ結果になるのですね?

たまたま今回は、苗字が2文字の人だけでしたので同じ結果になりました。
苗字が3文字の人がいたらどうしますか?

>ところでこの「*」印の仕様はExcelとは全く互換性がないのですね?

Excel の書式は MS-DOS の頃のなごりで、正しい正規表現ではないのです。
http://ja.wikipedia.org/wiki/%E6%AD%A3% ... 8%E7%8F%BE
Debara
記事: 15
登録日時: 1月 31, 2011, 6:07 pm

Re: countif関数で正規化表現がうまくいかない

投稿記事 by Debara »

MoIshiharaさん

返信を有難うございました。
今回のご回答の内容は全て理解いたしました。
確かに保存する際には(データ互換の関係から)odf形式ではなくxls形式にしています。

色々とご指導を有難うございました。

Aug.17,2012 Debara
OpenOffice3.2.1 Windows7
返信する

“Calc”に戻る