すべてのカテゴリ » インターネット・パソコン » その他

質問

終了

Excelの質問です。
Excel2003を使用しています。

説明しにくいので、画像閲覧お願いします。
http://deaimuryou.eek.jp/up/src/up2187.jpg
B列にプログラムという名前をつけました。
E列に、Dを参照してB列の中にAAA~GGGがある数を数えたいと思います(E1に5、E2に4…と入るように)。
試した方法はCOUNTIFで、E1の計算式は「=COUNTIF(プログラム,$D1)」となってます。
しかし、間違っているのかそもそも不可能なのかがわからないのですが、計算できません。
セルの中の特定の文字列だけを抜き取ってカウントする、という方法(関数)はないのでしょうか?
データは増えていくため、関数を使って自動的にカウントされていくようにしたいです。
セルごとに分かれていれば簡単な話なのですが、AAA~GGGまでは1つのセル内に収める必要があります。
どのようにすれば、Eに結果を求めることができるでしょうか。
詳しい方、どうぞご教授下さい。

  • 質問者:匿名
  • 質問日時:2010-11-06 00:05:38
  • 0

並び替え:

COUNTIF関数は、そのまま使うと完全一致の検索になってしまうので、
部分一致の検索にするには、ワイルドカード文字の ”*”(アスタリスク)を連結するとよいです。
具体的には、
 「 =COUNTIF(プログラム,"*" & $D1 & "*") 」
です。

蛇足ですが、
VBAマクロを使って、同様の処理をさせる場合には、InStr関数を(私は)よく使います。
InStr関数は、元々、文字列の先頭から指定文字までの位置(文字数:何文字目か?の値)を返す関数ですが、
指定文字が含まれなければ、”0”を返すので、部分一致の検索としても使えます。
ワークシート関数には、同様の関数として、Search関数(ワイルドカード使える)、Find関数(ワイルドカード使えない)がありますが、
これらで、ワークシート上で処理させるには、面倒になるので、やはり、VBAマクロでない限りは、COUNTIF関数を用いるのが良いと思います。

  • 回答者:匿名 (質問から2時間後)
  • 1
この回答の満足度
  
とても参考になり、非常に満足しました。回答ありがとうございました。
お礼コメント

ありがとうございました。
マクロは分からないので、エクセルで使いたいと思います。

関連する質問・相談

Sooda!からのお知らせ

一覧を見る