• ベストアンサー
  • すぐに回答を!

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

共感・応援の気持ちを伝えよう!

  • 回答数11
  • 閲覧数1368
  • ありがとう数11

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

  • ベストアンサー
  • 回答No.4
  • chonami
  • ベストアンサー率43% (448/1036)

>ただ、そういった工夫なしで照合ができると大変便利なのですが・・ 工夫と言うほどでもないとは思いますが(^_^;) まぁ、元データを文字列に変えてしまってもかまわないのであれば A列を選択→データ→区切り位置→次へ→次へ→列のデータ形式で文字列を選択→完了 で一度に文字列になります。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

関連するQ&A

  • Excel 指定の文字列を含むとカウントするようにしたい場合は?

    ただいまエクセルと格闘中の初心者です。 関数等はオートSUMくらいしか使ったことがなく、必要時にいちいち調べているような状態です。 今回は文字列を含むとカウントするところで躓いております。 表の中から特定の文字列を含むとカウントするようにしたい時COUNTIFを使うと思うのですが、この場合正確にその言葉じゃなければカウントされませんよね? 例えば「ボールペン」「サインペン」「シャープペン」のようなペン類をまとめてカウントしたい時、ペンだけで認識してくれるようにすることは可能なのでしょうか? COUNTIF関連で探してみているのですが、中々思うような検索ができていません(もしくはわからずに見逃しているのかも?) エクセルにお詳しい方、アドバイスを頂ければと思います。 よろしくお願い致します。

  • エクセル 特定の文字列を抽出・挿入

    例えば A列にあるセルの中から特定の文字列を検索・抽出して、その特定の文字列だけB列に挿入していく関数はありますか? またはA列にあるセルの中から特定の文字列に挟まれた文字列を検索・抽出してその特定の文字列だけB列に挿入していく関数はありますか? マクロを組まないと難しいのでしょうか?

  • エクセル シート内に特定の文字列があるか判定し、結果を表示する方法

    エクセルの質問です。 シート内に特定の文字があるかを判定して、逐一表示してくれるリストを作ろうとしています。 文字1 有 文字2 無 文字3 有 というように、左側のセルに検索する文字列を、その右のセルに結果を表示し、 適宜追加していけるようにしたいのです。 現在、COUNTIF関数を使い、 「=IF(COUNTIF(E:Z,C6)>0,"有","無")」というように隣のセルの単語を指定範囲からカウントし、 それが1以上か否かで文字を変えるようにしています。 しかし、これの数が多くなると処理が大変重くなり、困っています。 また、シート全体からの検索はできず、便宜的に範囲を設定する必要も出てしまっています。 上記問題を解決する何か有効な方法はないでしょうか。 ご指導のほどよろしくお願いします。

その他の回答 (10)

  • 回答No.11
  • mu2011
  • ベストアンサー率38% (1910/4994)

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.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*")

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。

  • 回答No.9
  • chonami
  • ベストアンサー率43% (448/1036)

>以下の質問についてはどうでしょうか? 基本的に、Enterで確定しない限りは表示形式を変更してもデータ型は変わりません。 (つまり、ダブルクリックやF2で編集状態→Enterするなど) データ型を変えるのでしたら区切り位置機能が一番手っ取り早いと思います。 知っているのと知らないのとでは作業効率に天と地ほどの差があります。 ところで、SUBTOTAL関数をお調べになってみるのもいいかもしれません。 オートフィルタでも集計できますよ。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.8
  • mu2011
  • ベストアンサー率38% (1910/4994)

データの文字列と数値について学習しましょう。 数値なら、=COUNTIFS(A1:A900,">1994000000",A1:A900,"<1995000000")で計数可能ですよ。 因みに文字列ならば、ご例示の通りです。 又、セルの表示形式を文字列にする操作は、直ぐに反映されませんので次の方法をお試し下さい。 A1:A900を選択→データ→区切り位置→次へ→次へ→列のデータ形式欄で文字列を選択→完了 >そもそもこの関数で特定の文字列を含む検索をかけたいときは、 >ワイルドカードの*を使わないとうまく計算できないものなのですか?  ⇒特定の文字列を含むという事なら当然です。  

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 参考になりました。 >又、セルの表示形式を文字列にする操作は、直ぐに反映されませんので次の方法をお試し下さい。 A1:A900を選択→データ→区切り位置→次へ→次へ→列のデータ形式欄で文字列を選択→完了 直ちに反映されないとは、何度かエクセルを終了して起動するを繰り返すと反映されるというようなことでしょうか?

  • 回答No.7
noname#204879

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 しかし、その方法でも集計できませんでした。

  • 回答No.6

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 >B1: =TEXT(A1,"0000000000") とのことですが、0というのは文字列の書式を表すということなんでしょうか。 また、桁数と同じだけ0を入力しないといけないのですか?

  • 回答No.5
  • chonami
  • ベストアンサー率43% (448/1036)

あ、逆?? 文字列→数値? 最後の文字列のチェックを標準にして下さい。(何もしなくても最初は標準がチェックされてると思いますが) ところで、オートフィルタとかじゃ駄目なのかしら。 (いや、駄目なんでしょうね。きっと)

共感・感謝の気持ちを伝えよう!

質問者からのお礼

いえ、数値から文字列で良かったです。 オートフィルタじゃだめだと思います。 (集計機能がついてないので) ところで、先ほどの以下の質問についてはどうでしょうか? どなたかわかる方がいたらお願いします。 「ホームリボンから数値タブの中で値の書式を変更しても(又は右クリックからセルの書式設定)、表示形式が変わるだけでデータの型は常に変わらないのでしょうか? 変わる場合とそうでない場合があるとしたら、どのような分け方なんでしょうか?」

  • 回答No.3
noname#204879

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

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 確かに、文字列として打ち込んだ値のときはcountifの関数で集計できました。 どうすれば文字列を数値に完全に変換できるのでしょうか? そういった方法があればよろしくお願いいたします。

  • 回答No.2
  • chonami
  • ベストアンサー率43% (448/1036)

A列は数値ですね? =COUNTIF(A1:A900,">=1994000000")-COUNTIF(A1:A900,">=1995000000") とかでは如何でしょうか?

共感・感謝の気持ちを伝えよう!

質問者からのお礼

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

  • 回答No.1
  • ryo_ky
  • ベストアンサー率47% (112/237)

質問より1994の含まれる場所は頭の4桁のみでしょうか? 例えば 1994000001 1994000002 2000199401 という場合は3つとカウントするのでしょうか? もし頭4桁のみでよりなら(「=COUNTIF($A$1:$A$900,"1994*")」から4桁と頭4桁と推定) =SUMPRODUCT((LEFT(A1:A900,4)="1994")*1) で個数が出ます。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

>もし頭4桁のみでよりなら(「=COUNTIF($A$1:$A$900,"1994*")」から4桁と頭4桁と推定) ありがとうございます。 その視点は忘れてました。 しかし、そのようにしてもゼロになってしまうのです。

関連するQ&A

  • 特定の範囲内に入力された文字列の抽出とカウント方法

    特定の範囲(C6:C15、E6:E15、G6:G15、I6:I15、K6:K15)に入力された文字列(氏名)をP6、P7、P8・・・へと表示して、隣のQ列にはその氏名が範囲内で何回入力されたかのカウントをしたいのですが、P6へはどのような関数を使用したらよいかご教示お願いします。 Q列に使用する関数はcountif関数を使用し、隣のP列にある文字列を検索条件に設定すれば良いというとこまではわかったのですが、上記の抽出ができないため、よろしくお願いいたします。

  • エクセルで文字列の個数を数える

    ある範囲のエクセルデータから決まった文字列の個数をカウントする関数の使い方が判れば教えてください。 例えば、A1からH200までのデータより、”リンゴ”という文字列が何個あるかカウントしたいのですが。 COUNTIF(A1:H200,"*リンゴ*")とすると”リンゴ”という文字列が含まれるセルの個数は出たのですが、”リンゴ”という文字列が複数含まれるセルもあるので、”リンゴ”という文字列の個数とは 一致しないようなのです。 どなたか、よろしくお願いします。

  • COUNTIF 文字列の検索

    COUNTIF 文字列の検索 タイトルが適切かどうか分かりませんが、教えてくださいませ。 例えばC2・D2・E2のセルに、それぞれ「◎」「〇」「△」と文字が入っているとします。 そして、C2~E2のセルをチェックして、 ◎が2つ以上あれば「◎」を、△が2つ以上なら「△」を、それ以外なら「〇」と F2のセルに返すようにしたいのですが、やり方が分かりません。 宜しければ教えてくださいませ。

  • 文字列のなかの特定の文字の数

    エクセルの関数式を使って、ある文字列のなかに、特定の文字の数を取得する方法を教えて下さい。 つまり、セルA1に「山口県山口市山田町」という文字列が入力されているとき、「山」という文字が何個あるかを取得したいのです。

  • 縦に不規則に並ぶ表から特定文字列をカウントしたい。

    縦に不規則に並ぶ表から特定文字列をカウントしたい。 Sheet1の縦に日付ごとに並んだ表から、 Sheet2へ特定文字列のカウント結果を表に起こしたいです。 日付ごとグループごとに項目数が異なるので、 どのようにセルを選択し、カウントすればいいのかわからず、 困っております。。 質問内容を分かりやすく画像に纏めましたので、 お手数ですがどうか見て下さい!! どうかよろしくお願いいたします。><!

  • COUNTIFを使って文字を抽出したい

      A 1 ビタミン   カルシウム 2 ビタミン 3 鉄 4 ビタミン 5 マグネシウム というようにA1のセルには二行にわたって文字が入力されています。 このA列で、「ビタミン」を含むセルはどのようにカウントするのですか? COUNTIFで「=COUNTIF(A1:A5,"ビタミン")」とすると、2 となってしまいます。この列に含まれるビタミンの数、つまり3と計算させる関数を教えてください。 よろしくお願いします。

  • 別ファイルの文字列の個数をカウントするには?

    下記のようにA列に文字列が入っているBファイルがあります。 Cファイルで上記A列の「1」を含むセルの個数を数えるために COUNTIFを使っているのですが 一度保存し開くと「#VALUE!」が表示されてしまいます。 どのようにしたらうまく行くのでしょう? ちなみに、Bファイルはいじれません。 また「1」以外の数字の個数も数える予定です。 今は【=COUNTIF(範囲,”*文字列*”)】という計算式を入れています。 A列 1 1.4(この.は小数点ではありません。) 3 2 2.3.4

  • エクセル ある文字列を入れるとある文字列を返す

    エクセルでの関数、ど素人です。一応自分で調べたのですが、無理なので質問させていただきます。よろしくお願いいたします。 エクセルで、時刻ですが文字列として1745&#65374;2345までを手入力します(1745,とか2000とか2330とか。。。。。) 入れた文字列によって、すぐ横のセルに1745、1800、1815であれば8.00、1830からは0.25刻みで8.25、1845であれば8.50、1900であれば8.75。。。。2330であれば13.25、2345であれば13.50と言ったように、入力した文字列に対しある特定の文字列を自動的に入れたいのですが、どのような関数を使えばよろしいのでしょうか。 私が行おうとしたのは、別シートに文字列一覧を作り、if(特定のセル(手入力するセル)=別シートの1745&#65374;2345まで、横のセル=別シートの8.00、8.00、8.00&#65374;13.50まで)や、sumif、lookupを使ってみましたが撃沈です。 どなたか教えていただきたく、お願いいたします。

  • エクセルである文字列をカウントしたい

    例えば、シート1のA列のセルごとに下記のいずれかの文字列が入っているとします。(文字列の1部ではなく、完全一致の文字列です。) おはよう こんにちは こんばんは そこで、シート2で上記の各文字列が記入されているセルがいくつあるか集計したいのですが、どうしたらよいでしょうか。 シート2は、A列に上記3つの文字列、B列にはそれぞれのカウント数を入れようと思っています。

  • EXCELで文字列の特定の文字の位置を知る方法

    EXCELで文字列の特定の文字の位置を知る方法 EXCELでセル中の文字列、例えば、"abc 4/3 5/5 6/4" の最後の"/"の位置を知る方法を関数の組み合わせで出来ますか? 教えてください。"/"の数は任意で最後の"/"の位置を知りたいのですが??? どうかよろしくお願いします。VBAでなく関数の組み合わせでお願いします。