
Excelの学習をしており、空文字の判定に関してわからないことがあり質問しました。
例えば以下のような関数がA1のセルに書いてあり、B1=C1とします。
=IF(B1=C1,"同じ","")
↑は""(空文字)を入れたくて行っています。
加えてA2-A5には適当な文字列が入っているとします。
A1からA5に対してCOUNTIF関数を使います。結果は以下のようになります。
① =COUNTIF(A1:A5,"") の場合 -> 1
② =COUNTIF(A1:A5,"<>") の場合 -> 5
ここで疑問なのですが、なぜ①で空文字が1つと判定されているのに、②で空文字でないものが5つと判定されるのでしょうか?4つと判定されるのが正常な気がします。
Excelの文字列周りについて調べたのですが、自分のググる力が足りず解決できませんでした。
詳しい方、教えていただけると大変助かります。
よろしくお願いします。
A 回答 (7件)
- 最新から表示
- 回答順に表示
No.7
- 回答日時:
No.5、6です。
前々回の回答で、
>一つの関数なのに等号・不等号を入れ替えても「補集合」にならない
>という珍現象がおこります。
と書きましたが不適切な表現でした。
=COUNTIF(範囲,"<>")に対して、等号・不等号を入れ替えるのであれば、=COUNTIF(範囲,"")ではなく、=COUNTIF(範囲,"=")を用いて検証しなければいけません。
=COUNTIF(範囲,"")を用いて検証し、【「補集合」にならない】と書いてしまいまい、単なる早とちりでした。
=COUNTIF(範囲,"<>")と=COUNTIF(範囲,"=")は未入力のみを空白と捉えるようなので、互いに補集合になります。
Microsoftにツッコミを入れるような問題ではありませんでした。
お詫びして訂正いたします。
No.6
- 回答日時:
No.5です。
前回回答の補足説明です。ご質問者は最初の質問で
>なぜ①で空文字が1つと判定されているのに、②で空文字でないものが
>5つと判定されるのでしょうか?
と述べており、さらに補足説明で
>何がいけないのでしょうか・・
とおっしゃっています。
ご質問者は何もいけないことをしていません。
前回回答のとおり、COUNTIF関数の「意外な仕様」により「意外な結果」に遭遇しているだけです。
普通に考えると「5個のうち【●●という条件に当てはまる】ものが1つあるとき、【●●という条件に当てはまらない】ものは4つである」という常識が、「COUNTIF関数と""(空白)との組み合わせでは成立しない」という特殊事情を知っているかどうかの問題です。
No.5
- 回答日時:
>COUNTIF(A1:A5,"<>")はCOUNTIF(A1:A5,"<>"&"")と同義だとネット
>上に書いてあったので上記の結果に納得がいっていません。
ということですが、COUNTIF関数の仕様に「意外な部分」があるからだと思います。
添付画像をご覧ください。A1~A10にさまざまな文字、数値、空白、未入力を置いて検証してみました。
おそらくfujillinさんの解説のように、COUNTIF関数は「空白である」を判別するときはCOUNTBLANKと平仄をあわせ、「空白でない」を判別するときはCOUNTAと平仄を合わせるとした結果、一つの関数なのに等号・不等号を入れ替えても「補集合」にならないという珍現象がおこります。
つまり、COUNTIF関数は「空白である」を判断するとき「空白には【見かけの空白】を含む」のに対して、「空白でない」を判断するとき「空白には【見かけの空白】は含まず(純粋な【未入力】のみカウント)」という意外な仕様であることが判ります。
「Microsoftさん、いささかやりすぎですよ」とツッコミたくなる状況です。
また、enunokokoroさんが、
>ワイルドカードを使ったCOUNTIF(A1:A5,"?*")であれば、未入力と
>空文字のセルをカウントします。
と解説しておられます。添付画像のように検証してみました。これを見る限り、そのような結果にはなりません。
COUNTIF(範囲,"?*")は「範囲内の長さ1以上の文字列セルを数える」数式だと思います。従って添付画像の場合、数値を除く文字a、b、c、dを数えて4が返ります。
さらに、COUNTIF(範囲,"<>?*")を検証するとちゃんと補集合が返ります。
従って「長さ0の文字列は空白」と見做すのであれば、数値セルを数えるCOUNT関数と組み合わせて、
=COUNTIF(範囲,"?*")+COUNT(範囲)
とすれば、範囲内の長さ1以上の文字列があるセルの数+数値が入力されたセルの数がカウントされるので、範囲内の空白(長さ0の文字列:見かけり空白を含む)以外のセルがカウントできます。
COUNTIF関数は上記のように紛らわしい挙動なので、見かけの空白を含めて「空白」と「空白以外」のセルを判別するときはSUMPRODUCT関数を使う手もあります。
添付画像のように見かけの空白も含めて空白セルをカウントするときは、
=SUMPRODUCT((範囲="")*1)
という数式を記述し、見かけの空白も含めて空白以外のセルをカウントするときは、
=SUMPRODUCT((範囲<>"")*1)
という数式を用いるということになります。

No.4
- 回答日時:
関数でセットする””は値というより、エクセル上で見た目を
ブランクにする手段ですね。
「関数の引数」(fxをクリック)を見ると
わかるように返ってきた値は””だが結果はブランクです。
つまり見た目ブランクだけど本当はブランクじゃないということです。
1セルだけで試すと分かり易い。
=COUNTA(実体)は1で、=COUTBLANK(見た目)も1。
従ってCOUNTIF(A1:A5,"<>")は実体の有無を判断するので5。
COUNTIF(A1:A5, "")は見た目を判断するので1。
では実体も無しでいいじゃないかとは思いますが、
マイクロソフトはそこは厳密なんでしょう。
No.3
- 回答日時:
COUNTIF(A1:A5,"<>")は、未入力セル以外カウントするものです。
数式による空文字も入力されたものとしてカウントされます。
ワイルドカードを使ったCOUNTIF(A1:A5,"?*")であれば、未入力と
空文字のセルをカウントします。
https://excel-ubara.com/excel-answer/EXCEL702A.h …
No.2
- 回答日時:
こんにちは
セル内に関数式が設定されているか否かで空白とは見做さないか、関数式とは関係なく結果のセル値が空白かどうかで判断するかの違いですね。
余分なセルを入れずに、1セルだけを判断させてみればわかりやすいと思います。
添付図は、B3:F3セルに値を設定し、5~9行で各セルを評価したものです。
B3:D3は固定値の「空白」、「文字」、「数値」となっており、E3:F3は関数式を設定して、結果が「空白」、「文字」となるようにしてあります。
B5:F9には、A列に示した式を用いて各列の3行目の値を評価しています。
ご覧になればわかると思いますが、
=COUNTIF(セル範囲,"") は
=COUNTBLANK(セル範囲) と同等
=COUNTIF(セル範囲,"<>") は
=COUNTA(セル範囲) と同等
ということがわかると思います。
前者は「セル値が空白か」で判断しており、後者は「セルがEmptyでないか」で判断していることになります。
つまり、両式の意味は完全には背反ではないってことでしょう。

No.1
- 回答日時:
①②の答えは逆だと思います。
A1:A5が全てNULLならば、
COUNTIF(A1:A5,"")=5 …NULLの数が5個
COUNTIF(A1:A5,"<>") =1 …1種類の文字(実際にはNULL)がある。
後者は、違うものの種類の数、を返します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel表示形式 2 2022/09/09 09:57
- Excel(エクセル) ExcelのIF関数 2 2022/04/14 16:11
- Excel(エクセル) エクセル 関数について質問です。 2 2022/10/03 11:14
- Excel(エクセル) 【画像あり】A1が●+B1と同じ文字がB列にある+C1と同じ文字がC列にある場合D1に〇を付ける 3 2023/03/09 18:18
- Excel(エクセル) Excel 関数 数式 について 2 2022/09/02 21:45
- Excel(エクセル) If関数に関する質問です。(再掲) 3 2022/10/01 20:51
- Excel(エクセル) Excelのマクロで、特定のセルから順番に値を取得したい 5 2022/12/06 15:34
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- Excel(エクセル) 条件付き書式の設定方法を教えて下さい。 2 2023/04/14 18:12
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
歳とったな〜〜と思ったことは?
歳とったな〜〜〜、老いたな〜〜と思った具体的な瞬間はありますか?
-
みんなの【マイ・ベスト積読2024】を教えてください。
積読、ついついしちゃいませんか?そこでみなさんの 「2024年に買ったベスト積読」を聞きたいです。
-
AIツールの活用方法を教えて
みなさんは普段どのような場面でAIツール(ChatGPTなど)を活用していますか?
-
思い出すきっかけは 音楽?におい?景色?
記憶をふと思い出すきっかけは 音楽、におい、景色 どれですか?
-
Excelの空文字セルの削除方法を教えてください
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの空文字判定について
-
DB2 の SQL で NULL値を空文字...
-
あるカラムを対象に、Nullと空...
-
BULK INSERTについて
-
AccessのSQL文
-
NOT NULL制約がついた項目のUPD...
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
SELECT 文 GROUP での1件目を...
-
SQLで特定の項目の重複のみを排...
-
EXISTSを使ったDELETE文
-
for whichの使い方
-
INSERT文でフィールドの1つだ...
-
UPDATE文のWHERE条件に他のテー...
-
外部参照してるキーを主キーに...
-
1日に1人がこなせるプログラム...
-
列番号による項目の取得について
-
画像とカテゴリーを出力したい...
-
カーソル0件の時にエラーを発生...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
あるカラムを対象に、Nullと空...
-
NOT NULL制約がついた項目のUPD...
-
DB2 の SQL で NULL値を空文字...
-
BULK INSERTについて
-
Excelの空文字判定について
-
AccessのSQL文
-
空文字の意義
-
SQLのUpdateについて
-
差し込み後、元データを変更し...
-
フィルターかけた後、重複を除...
-
エクセルで最後の文字だけ置き...
-
エクセルの関数について教えて...
-
外部参照してるキーを主キーに...
-
SELECT 文 GROUP での1件目を...
-
SQLで特定の項目の重複のみを排...
-
EXISTSを使ったDELETE文
-
INSERT文でフィールドの1つだ...
-
for whichの使い方
-
カーソル0件の時にエラーを発生...
-
1日に1人がこなせるプログラム...
おすすめ情報
見た目上はA1が空欄,A2-A5に適当な文字列が入っているため、逆ではないです。
COUNTIF(A1:A5, "") は空文字の数を数えており、結果は1(A1が空文字のため)
COUNTIF(A1:A5,"<>")は空文字ではないものを数えると思っているのですが、なぜか結果が5と表示されているという状況です。
COUNTIF(A1:A5,"<>")はCOUNTIF(A1:A5,"<>"&"")と同義だとネット上に書いてあったので上記の結果に納得がいっていません。
何がいけないのでしょうか・・