• ベストアンサー
  • 困ってます

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

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

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

  • 回答数6
  • 閲覧数363
  • ありがとう数8

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

  • ベストアンサー
  • 回答No.6
  • Wendy02
  • ベストアンサー率57% (3570/6232)

こんばんは。 #4 のWendy02 です。 >もう素人にはお手上げの範疇でございます。 ちょっと、コメント。 私は、Excelの関数を最初に勉強して思ったことは、むずかしい数式は、たぶん、誰かが試行錯誤で偶然も左右して生まれて、それに理屈をつけて広まったのだろうなって思いました。それで、それらをパターン化していく中で、組み合わせて使っていくのだろうと思いました。 >IF関数って、かっこの中に入るのは、(論理式,RUE,FALSE)であったような気がします。 IF(論理式,TRUE,FALSE) は、そのとおりです。 =IF(B1="","", ↑ 単なるエラー処理です。B1に何もなかったら、何も出さないでおく、とエラー処理を書くのは、ユーザーに対する思いやりなのですが、逆に、分かりにくくなるのも否定できませんね。 COUNTIF($A$1:$A$10,"*"&B1)+COUNTIF($A$1:$A$10,B1&CHAR(10)&"*") 問題は、こちら側ですね。 COUNTIF($A$1:$A$10,B1&CHAR(10)&"*")) CHAR(10) というのは、セル内の改行コードのことです。Alt+Enterのことです。 それから、「*」の意味は、「0文字以上、文字は何でも」という意味なのですね。あたりまえのようで、あたりまえじゃないのですね。1文字以上ではありません。

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

質問者からのお礼

わかりやすく説明していただきまして、大変ありがとうございました。 ただの記号だと思っていたものが、大いに意味のある記号と知り、ただただ驚きです。 CHAR(10) 。 覚えました!(使いこなせるかは、別として!) エクセル作成に苦労しておりましたが、少し楽しくなってきました。 本当にありがとうございました。

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

  • エクセル COUNTIF関数 (複数条件)

    エクセルの件で、たとえば、 COUNTIF 関数 A1からA5まで 例として上から あ、い、う、え、お と入力した場合 A7セルにCOUNTIF関数で 上記のすべての条件をカウントする場合は どのような関数式が正しいですか? COUNTIF(A1:A5."あ")+COUNTIF(A1:A5,"い")+ ・・・・・・・ のようにじ式を連続して5回 使うのが正しいほうほうですか? もっと賢い方法はありませんか? また、僕は初心者で詳しくありませんが、 NOTを混ぜて あいうえお以外をカウントする方法はありませんか? たとえば、  A1からA5までで、 「 あ、い、う え お  」 以外のひらがなが入力された場合に その数をカウントする方法 たとえば か き く などが 入力されていたら その数をカウントする方法は ありませんか? ついでに教えてほしいのですが、COUNTIFS(A1:A5,"×",A1:A5,"○") の計算式は正しいですか?エクセルに入力しても0が反映されます。 式がエラー表示されないので間違いではないとと思いますが、 ○ ×を入れても カウントがでません なぜでしょうか?

  • Excel2010でcountif関数について

    countif関数を使って、特定の文字が入力されたセルの数を算出するシートを作っています。検索する文字に"*"(アスタリスク)を指定すると数字以外のセルがすべてカウントされてしまいます。 =countif(範囲,"*") 他の文字列と同じように検索するにはどうしたら良いでしょうか?

その他の回答 (5)

  • 回答No.5
  • imogasi
  • ベストアンサー率27% (4558/16318)

配列数式ですが別解を考えました。 =SUM(IF(ISERROR(FIND("a",A1:A8)),0,1)) と入れて、SHIFT+CTRL+ENTERキーを押します。 例データ as s a f a s f as で4となります。 >あらかじめ別の列に文字の一覧をつくっておき ビタミンなど文字の一覧をB列につめて作っておき、 式の複写で ビタミン数 =COUNTIF(A1:A5,"*B1*") のB1をB2、B3のように変化させ また$A$1:$A$5とA列の範囲はずれないようにすればよい。 「文字の一覧をつくっておき」は関数でできますが、私の昨日の質問回答に あります。 ただ#2の補足の意味をよく考えてないが、それを満たすのは難しいかもしれない。(配列数式の上記回答も同じ。)

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

質問者からのお礼

どうもありがとうございました。 =SUM~の式も本当に4とでました。 #4様と同様、関数が難しすぎて理解できませんでしたが、これから勉強させていただきます。

  • 回答No.4
  • Wendy02
  • ベストアンサー率57% (3570/6232)

こんにちは。 範囲をA1:A10 までして、バリエーションを試してみました。  ビタミン  カルシウム 本来、1レコードに二種類入っているものを、一旦、テキストにコピーして、再び、ワークシートに貼り付け、切り分けたら簡単に済んだのだと思いますが、 B1から下に、抽出項目を入れ、以下のような式でフィルダウン・コピーすれば出来るかと思います。 =IF(B1="","",COUNTIF($A$1:$A$10,"*"&B1)+COUNTIF($A$1:$A$10,B1&CHAR(10)&"*")) 最初、少ない量でお試しください。

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

質問者からのお礼

もう素人にはお手上げの範疇でございます。 IF関数って、かっこの中に入るのは、(論理式,RUE,FALSE)であったような気がします。FALSE部分にあてはまるのはCOUNTIF($A$1:$A$10,"*"&B1)+COUNTIF($A$1:$A$10,B1&CHAR(10)&"*")ですか? なんですか、CHARって。そのあとの(10)も・・・。 むつかしすぎますが、この意味がわかった日には、きっと少し頭がよくなるのでしょうね。

  • 回答No.3

No.1です。 >「ビタミン」と「ビタミンA」という文字があり 「ビタミンA」の個数を引けばいいのではないでしょうか? B1 に「ビタミン」と入力されていて、「ビタミンA」の個数を求める数式が C5 に入っているとすれば、 =COUNTIF($A$1:$A$5,"*"&B1&"*")-C5 他にも 「ビタミンC」とかあれば、それもすべて引いてください。 フィルコピーするなら、範囲は $ をつけて絶対参照にしてくださいね。

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

質問者からのお礼

なるほど。 そりゃそーでした。頭はやわらかくないとダメですね! どうも有難うございました。

  • 回答No.2
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)

=COUNTIF(A1:A5,"*B1*") を =COUNTIF(A1:A5,"*"&B1&"*") のようにして下さい

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

質問者からのお礼

ありがとうございました。 すぐに教えていただいた式で計算しなおしたところ、ひとつ、やっかいなことがでてきました。 それは、「ビタミン」と「ビタミンA」という文字があり、本当は、ビタミン数 2、ビタミンA数 7、なのにその式をあてはめるとビタミン数 9になってしまいます。こんな場合の関数とはどうしたらいいですか?

  • 回答No.1

こんにちは~ 「ビタミン」の前後に *(アスタリスク)をつけてください。 =COUNTIF(A1:A5,"*ビタミン*")

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

質問者からのお礼

感動しました! 大変、ありがとうございました。 ついでといってはなんですが、いちいち,"ビタミン"というように、文字を入力するのがすごく面倒なため、あらかじめ別の列に文字の一覧をつくっておき、そのセル番号を入力するなんて、可能でしょうか?   (例)   A           B 1 ビタミン      ビタミン   カルシウム 2 ビタミン      鉄 3 鉄          マグネシウム 4 ビタミン     カルシウム 5 マグネシウム A列のビタミン数 =COUNTIF(A1:A5,"*B1*") というような。

関連するQ&A

  • エクセルの数式で、COUNTIF(A1:A100,">""") 

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=2224824 の関連質問です。 表A1:A100にある、各セル内の数式で求められた計算結果が文字列の場合、その数を調べるには、 =COUNTIF(A1:A100,">""") で、各セルの計算式の答えが "" 以外の文字列の数を返してくれるようです。(数値や空白セルはカウントされません。) 非常に便利なのですが、ちょっと腑に落ちないのは、  >""  って、""より大きいということですよね? しかし文字列は数字とちがい大小はないのではないでしょうか? もう一点疑問です。 ためしに、=COUNTIF(A1:A100,">=""")  としてみました。 今度は、  >=""  ですから、""も含むということになるはずですよね? ところが答えが  ""  となるものをカウントしません。 不思議でたまりません。 よろしくお願いします。

  • COUNTIF関数での、文字列の指定について

    お世話になっております。 A1セルに、 「P」という文字が含まれる文字列を入力した場合に、 C1セルに、 「庶務業務」と自動で入力されるようにしたいと思っています。 (例) 書類P作成 ⇒ 庶務業務 ここで、COUNTIF関数を使ってやろうと思ったのですが、 「P」だけの入力には反応するのですが、 「書類P作成」だと反応してくれません。 この場合、どうしたらよいでしょうか…? (入力した計算式) =IF(COUNTIF(A1,"P")=1,"庶務業務","") アドバイス頂けると助かります、よろしくお願い致します。

  • COUNTIFで空白表示以外のセル数を取得

    エクセル2010です。 セル範囲A1:A10にはすべて数式が入っています。 計算の結果はすべて文字列が返ります。 その中には、="" で空白に表示されたセルもあります。 セル範囲A1:A10で空白に表示されたセルの数は =COUNTBLANK($A$1:$A$10) で求められます。 空白でないセルの数を求める場合 =COUNTA($A$1:$A$10) では、="" も数式が入っているためすべてカウントされ使えません。 やむを得ず、 =SUMPRODUCT(($A$1:$A$10<>"")*1) や =ROWS($A$1:$A$10)-COUNTBLANK($A$1:$A$10) でしのぎました。 これを、COUNTIFで求めることはできないでしょうか? =COUNTIF($A$1:$A$10,"<>""") とやってみましたが、これも全セル数を返すようです。

  • COUNTIF関数について

    タイトルの件についてご助言をお願いします。 エクセル表でいくつかシートがあって、例えば各シートの同じセル番号(例えば3枚のシートのA1のセルとして)にある”○”の数を集計したいとき、COUNTIF関数で次のように入力しました。 =COUNTIF(sheet1:sheet3!A1,"○") ところが、VALUEエラーが出て、集計してくれません。同じシート内でCOUNTIFで”○”の数を計算するのはすんなりできています。(例えば、=COUNTIF(A1:A5,"○"))この関数ではシートごとの集計はできないのでしょうか?ほかの関数を使うのでしょうか?集計する方法をご存知の方ご教示ください。

  • COUNTIF

    A列に「a」「b」の文字と、空白のセルがあります。「a」の数を数えたいのでcountif関数で求めました。  =COUNTIF(A2:A26,"A") B列、C列と同じように「a」「b」の文字と、空白のセルがありますが、D列はすべて空白です。 空白のときは「0」ではなく、何も表示されない状態にしたいのですが、IFをうまく組み合わせた式を教えてください。 よろしくお願いします。

  • エクセルのCOUNTIFで

    エクセルのカウント方法について教えてください。 A1~A100のセルに式が入っていて、条件により答えが表示される場合とされない場合(="")があります。 答えは文字列です。 A1~A100のなかに答えが表示されているセルの数を求めるにはどういう式にすればいいのでしょうか? COUNTA(A1:A100)では100となってしまいますので、COUNTIFだとは思うのですが・・・・。

  • 指定の文字を含むセルを数えたい。=COUNTIF(J3:J55,"A")

    =COUNTIF(J3:J55,"A") J3:J55 の列セルの中から A という文字を★含む★セルの数をかぞえたい けど、たとえば「A」のみはカウントしても 「AB」はカウントしてくれない。 ABも、Aを含んでるからカウントにいれたい。 どうしたら良いのでしょう?

  • 「countif」関数の結果の後に文字

    名簿の名前の欄に含まれている名前の数をこのようにカウントさせてうまくいったのですが(=COUNTIF(D2:D6, "*"))この結果の後に「人」という文字が出るようにしたいんですが、どうやればいいのかさっぱり分かりません。ご存知の方いらっしゃいましたら教えてもらえないでしょうか?セルの書式設定以外(関数で)の方法を探しています。よろしくお願いします。

  • EXCELでのカウント

    こんんちは!いつも使っている簡単な関数ならわかるのですが... 範囲→1列(A列やB列) 範囲内で指定の文字が入力されているセルの数をカウントしたい(返したい)んです。 例)B列に「2」「23」「50」「13」「12」と入力されているとしたら   「2」を入力しているセルをカウントしたかったら   「3」と出てくるように... COUNTIF関数だと「2」を指定したら「2」と入力したセルだけカウントされますよね。(例えば上記例だと「1」と帰ってくる。これを「2」を含んでいるセルの数をカウントしたいんです。 教えてください。 宜しくお願いいたします。

  • countifで解らない部分があります。教えてください。

    COUNTIFについて教えてください。 例:A1~A20のセルに1~5までの数が不規則にそれぞれ入っています。 次にA21~A25のセルに不規則に1~5の数字を入力しました。 A21~A25に隣接したB21~B25に答えが返ってくるようにします。 検索条件はA21~A25に不規則に入力した1~5の数字の個数なのですが B21・・・~B25=COUNTIF(A1:A20,◎◎◎) と、◎◎◎のところにA21~A25までに入った数字(この場合は1~5)を それぞれ手入力しなければなりません。 手間を省く為に◎◎◎のところを 「A21にはいっている数字と同じ数字」と設定したいのです。 (または「A21に入っている文字と同じ文字」としたいです。) 手っ取り早くいえば、A21に入力した数字と 同じ数字の数を数える式が知りたいのです。 そうすれば、オート-フィルが使えたりしてすごく手間が省け助かります。 不可能なのでしょうか? それともCOUNTIFとは違う関数を使うのでしょうか? 解りにくい文章で恐縮ですが、宜しくお願いします。