
No.4ベストアンサー
- 回答日時:
#1,3です。
#1の説明に誤りがありました。
誤)
> "?"
> は、「長さ0または1の文字列」
正)
"?"
は、「任意の1文字」
以上、訂正をお願いします。
失礼しました。
No.5
- 回答日時:
こんばんは!
横からお邪魔します。
空白以外のセル数を取得する関数
>=COUNTIF($B$2:$B$22,"*?")
の使い方は当方は以前から
>=COUNTIF($B$2:$B$22,"?*")
のように「?」とアスタリクスを逆にして使っています。
「長さが1文字以上の文字列」という解釈です。
(実際はどちらでも大丈夫のようですが)
生データであればCOUNTA関数で対応できるのですが
数式によって「空白に見えるセル」が混在している場合、COUNTA関数では対応できないので
このような使い方はしたことがあります。
ただし、大前提として数式によって返ってくるのは「文字列」というコトです。
結果が「数値」の場合は反応しないと思います。(「0」となるはずです)
数値の場合はCOUNT関数で対応できますが・・・
※ 実は先日同じような質問がCOUNTIFS関数でありましたが
数式によって表示されるデータが「文字列」なのか、「数値」なのかが判らなかったので
敢えて他の方法をアドバイスしたことがありました。
まずはこの程度で・・・m(_ _)m
No.3
- 回答日時:
#1です。
ご質問の数式は10年近く前から、何度か書籍・Webサイト・電子掲示板でも
紹介されていたものだったと記憶しています。
この数式を正解とするクイズに参加したこともありました。
もしかしたら
=COUNTIF($B$2:$B$22,"?*")
と、順番が逆になっていたりする場合もあったのかも知れませんけれど、、、。
現在の私の環境でも、
#1で提示したサンプルで
列挙した4つの数式がすべて異なる値を返す
ことが簡単に確認できます(数式戻り値、上から{4;5;2;7})。
もしかして、環境によっては正しく機能しない場合がある?
というお話をなさっているのでしょうかね?
もし結果が異なるということでしたら、
情報として原因が知りたいです。
Excel関数も用いるワイルドカードと正規表現のメタキャラクタとは
確かに似てるから混同してしまう人も居るのかも知れないですね。
以上、#2さんのコメントを受けての追加補足でした。
No.2
- 回答日時:
こんにちは。
>=COUNTIF($B$2:$B$22,"*?")
>"*?"は、どういう意味なのでしょうか
「"*?"」
誤動作はしませんが、何かの間違いだと思います。
=COUNTIF($B$2:$B$22,"*")
ということと、違いはありません。
* (任意の1文字以上の文字列)
? (任意の1文字)
Excelの組み込み関数の中では、二つを直接組み合わせても意味がありません。
これは、別のストリーム系のプログラムで使う「正規表現」の最短マッチ法に使う書き方に
似ています。しかし、正規表現の書き方は少し違いますし、本来、Excelとは仕様も違います。
(ストリーム系の代表としては、Unicode系の"grep"があります)
おそらく、文字列を探す"*"や"?" を正規表現のそれを混同したのではないでしょうか?
「?」は、Excel上では、「長さ0の文字列」は検知できず、任意の1文字を探します。
(※ 「長さ0の文字列」というのは、少しおかしな表現ですが、れっきとしたブログラミング用語
です。"" [二つのクォーテーション文字で囲まれた中に何もないもの]のことですが、
Excel上では、="" と表します。Excel上にはありませんが、「値0の文字列」などという
ものもあります。)
余談ですが、ストリーム系のプログラムでは、正規表現のメタキャラクタと言いますが、
「?」は、直前に置かれている文字の1回以上の文字列を指します。
「*」は、直前に置かれている文字の0回以上の文字列を指します。
ということになっていますが、Excel上では、標準的には使えません。
たぶん、どこかに、Excelの関数のワイルドカードの説明や使い方は出ているとは思いますが、今の時点で期待通りの詳しい説明があるサイトが見つかりませんでした。
ただし、Excelの関数のワイルドカードにも、裏ワザがいくつかあると思います。
例えば、「長さ0の文字列」を探す方法は、最近、質問に出たばかりです。
No.1
- 回答日時:
こんにちは。
> "*?"は、どういう意味なのでしょうか
「少なくとも一文字以上の長さのある文字列値」があるセルをカウントします。
=COUNTIF($B$2:$B$22,"*?")
=COUNTIF($B$2:$B$22,"*")
=COUNTIF($B$2:$B$22,"?")
=COUNTA($B$2:$B$22)
上記4種類の数式で、
0
10
a
abc
=""
="a"
="abc"
などのサンプルを使って確認してみて下さい。
よく見かける数式として、=IF(条件,計算値,"")のようなものがありますが、
条件によっては「長さ0の文字列」をセルの値に返します。これを
=""
で表していますが、
COUNTA関数と、ご提示の数式ととで、
結果が違う点に着目して頂ければ、
ご提示の数式の意味(存在意義)は自ずと見えてくると思います。
"*"
は、「長さ0以上の文字列」
"?"
は、「長さ0または1の文字列」
を指し示すワイルドカードです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ画像あり】❶1つの条件...
-
【マクロ】既存ファイルの名前...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ】【画像あり】ファイ...
-
Dir関数のDo Whileステートメン...
-
5単位で繰り上げしたい
-
【マクロ】【画像あり】4つの...
-
【画像あり】オートフィルター...
-
Excelで4択問題を作成したい
-
【マクロ】【画像あり】4つの...
-
エクセルのVBAで集計をしたい
-
エクセルの複雑なシフト表から...
-
【マクロ】数式を入力したい。...
-
【マクロ】元データと同じお客...
-
【マクロ】左のブックと右のブ...
-
【マクロ】実行時エラー '424':...
-
Office2021のエクセルで米国株...
-
エクセルのリストについて
-
【マクロ】【相談】Excelブック...
-
セルにぴったし写真を挿入
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報