みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

COUNTIFで特定の文字列を含む値のカウント方法

Excel2010を使っている者です。

COUNTIF関数で特定の文字列を含むセルの数をカウントしたいのですが、結果がゼロになってしまいます。

具体的には
A列の1行目から900行目までに以下のように番号が振ってあって、その中で1994を含むセルの数を数えようと思っています。
計算式として「=COUNTIF($A$1:$A$900,"1994")」と入力したのですが、戻り値が0になってしまいます。
なお、A列は数値にしても文字列にしても結果は変わらず、「=COUNTIF($A$1:$A$900,"1994*")」とワイルドカードを使った検索にしても同じく0になってしまいます。

1994000001
1994000002
1994000005

2009111112
2009111117


もう一つ関連した質問をさせていただきますが、そもそもこの関数で特定の文字列を含む検索をかけたいときは、ワイルドカードの*を使わないとうまく計算できないものなのですか?

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

投稿日時 - 2012-12-17 12:18:34

QNo.7848864

すぐに回答ほしいです

質問者が選んだベストアンサー

>ただ、そういった工夫なしで照合ができると大変便利なのですが・・

工夫と言うほどでもないとは思いますが(^_^;)
まぁ、元データを文字列に変えてしまってもかまわないのであれば

A列を選択→データ→区切り位置→次へ→次へ→列のデータ形式で文字列を選択→完了

で一度に文字列になります。

投稿日時 - 2012-12-17 13:53:06

お礼

ありがとうございます。
大変助かりました。

もう一つ伺ってもよいでしょうか・・

ホームリボンから数値タブの中で値の書式を変更しても(又は右クリックからセルの書式設定)、表示形式が変わるだけでデータの型は常に変わらないのでしょうか?
変わる場合とそうでない場合があるとしたら、どのような分け方なんでしょうか?

投稿日時 - 2012-12-17 14:26:12

ANo.4

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(11)

ANo.11

NO8です。
>何度かエクセルを終了して起動するを繰り返すと反映されるというようなことでしょうか?
 ⇒ブックのオープン/クローズには関係なく、セルを編集モードで更新(セルのダブルクリックやデータ再入力等)しないと反映されないという事です。

投稿日時 - 2012-12-17 18:22:08

お礼

ありがとうございます。
すっきりしました。

投稿日時 - 2012-12-18 09:29:13

ANo.10

>ただ、そういった工夫なしで照合ができると大変便利なのですが・・

 それでしたら作業列を設けて以下の様にされると良いと思います。
 今仮に、それらの数値がSheet1のA1~A900に入力されているものとして、Sheet2のA列を作業列として使用するものとします。

 まず、Sheet2のA1セルに次の関数を入力して下さい。

=INDEX(Sheet1!$A:$A,ROW())&""

 次に、Sheet2のA1セルをコピーして、Sheet2のA2~A900の範囲に貼り付けて下さい。
 これで、Sheet2のA列には、Sheet1のA列の値を文字列データに変換した値が返されますから、特定の文字列を含むセルの数をカウントした結果を表示させるセルに、次の関数を入力されると良いと思います。

=COUNTIF(Sheet2!$A$1:$A$900,"1994*")

投稿日時 - 2012-12-17 15:28:27

お礼

ありがとうございます。

投稿日時 - 2012-12-18 09:28:31

ANo.9

>以下の質問についてはどうでしょうか?

基本的に、Enterで確定しない限りは表示形式を変更してもデータ型は変わりません。
(つまり、ダブルクリックやF2で編集状態→Enterするなど)

データ型を変えるのでしたら区切り位置機能が一番手っ取り早いと思います。
知っているのと知らないのとでは作業効率に天と地ほどの差があります。

ところで、SUBTOTAL関数をお調べになってみるのもいいかもしれません。
オートフィルタでも集計できますよ。

投稿日時 - 2012-12-17 15:19:39

お礼

ありがとうございます。

大変参考になりました。

投稿日時 - 2012-12-17 16:32:26

ANo.8

データの文字列と数値について学習しましょう。

数値なら、=COUNTIFS(A1:A900,">1994000000",A1:A900,"<1995000000")で計数可能ですよ。
因みに文字列ならば、ご例示の通りです。

又、セルの表示形式を文字列にする操作は、直ぐに反映されませんので次の方法をお試し下さい。
A1:A900を選択→データ→区切り位置→次へ→次へ→列のデータ形式欄で文字列を選択→完了

>そもそもこの関数で特定の文字列を含む検索をかけたいときは、
>ワイルドカードの*を使わないとうまく計算できないものなのですか?
 ⇒特定の文字列を含むという事なら当然です。
 

投稿日時 - 2012-12-17 15:05:08

お礼

ありがとうございます。
参考になりました。

>又、セルの表示形式を文字列にする操作は、直ぐに反映されませんので次の方法をお試し下さい。
A1:A900を選択→データ→区切り位置→次へ→次へ→列のデータ形式欄で文字列を選択→完了

直ちに反映されないとは、何度かエクセルを終了して起動するを繰り返すと反映されるというようなことでしょうか?

投稿日時 - 2012-12-17 16:29:41

「そういった工夫なしで照合ができる」方法
{=COUNT(FIND(1994,A1:A900))}
(配列数式)

投稿日時 - 2012-12-17 14:31:00

お礼

ありがとうございます。

しかし、その方法でも集計できませんでした。

投稿日時 - 2012-12-17 16:27:19

ANo.6

文字列に変換、簡単でしょ?
B列をコピーして値だけA列に貼り付けるコトもできる。
B1:
=TEXT(A1,"0000000000")
C1:
=COUNTIF($B$1:$B$900,"1994*")

投稿日時 - 2012-12-17 14:13:20

お礼

ありがとうございます。

>B1:
=TEXT(A1,"0000000000")


とのことですが、0というのは文字列の書式を表すということなんでしょうか。
また、桁数と同じだけ0を入力しないといけないのですか?

投稿日時 - 2012-12-17 16:19:30

ANo.5

あ、逆?? 文字列→数値?

最後の文字列のチェックを標準にして下さい。(何もしなくても最初は標準がチェックされてると思いますが)

ところで、オートフィルタとかじゃ駄目なのかしら。
(いや、駄目なんでしょうね。きっと)

投稿日時 - 2012-12-17 14:09:44

お礼

いえ、数値から文字列で良かったです。

オートフィルタじゃだめだと思います。
(集計機能がついてないので)

ところで、先ほどの以下の質問についてはどうでしょうか?
どなたかわかる方がいたらお願いします。

「ホームリボンから数値タブの中で値の書式を変更しても(又は右クリックからセルの書式設定)、表示形式が変わるだけでデータの型は常に変わらないのでしょうか?
変わる場合とそうでない場合があるとしたら、どのような分け方なんでしょうか?」

投稿日時 - 2012-12-17 14:55:47

》 A列は数値にしても文字列にしても結果は変わらず、…
それはウソでしょ?
元々数値が入っているセル(範囲)の書式を“文字列”に変更した結果だけで、「文字列にしても」と仰っているのでしょ?(その操作だけではまだデータは文字列になっていない!)
最初から“文字列”書式に設定したセル(範囲)に数字を打ち込んだ場合を試してみてください。あるいは、標準書式のセル(範囲)にアポストロフィを打ち込んでから数字を打ち込んだ場合も試してみてください。

投稿日時 - 2012-12-17 13:07:03

お礼

ありがとうございます。

確かに、文字列として打ち込んだ値のときはcountifの関数で集計できました。

どうすれば文字列を数値に完全に変換できるのでしょうか?
そういった方法があればよろしくお願いいたします。

投稿日時 - 2012-12-17 13:43:42

ANo.2

A列は数値ですね?

=COUNTIF(A1:A900,">=1994000000")-COUNTIF(A1:A900,">=1995000000")

とかでは如何でしょうか?

投稿日時 - 2012-12-17 12:56:47

お礼

ありがとうございます。

ただ、そういった工夫なしで照合ができると大変便利なのですが・・

投稿日時 - 2012-12-17 13:42:02

ANo.1

質問より1994の含まれる場所は頭の4桁のみでしょうか?

例えば
1994000001
1994000002
2000199401

という場合は3つとカウントするのでしょうか?

もし頭4桁のみでよりなら(「=COUNTIF($A$1:$A$900,"1994*")」から4桁と頭4桁と推定)
=SUMPRODUCT((LEFT(A1:A900,4)="1994")*1)
で個数が出ます。

投稿日時 - 2012-12-17 12:39:34

お礼

>もし頭4桁のみでよりなら(「=COUNTIF($A$1:$A$900,"1994*")」から4桁と頭4桁と推定)

ありがとうございます。
その視点は忘れてました。

しかし、そのようにしてもゼロになってしまうのです。

投稿日時 - 2012-12-17 13:40:53

あなたにオススメの質問