エクセルの関数の質問です。


A列に日付を1日単位で入れています。
B列に文字列を入れています。

A列の日付を参照してある月の範囲の中でB列の文字列のなかから特定の文字列を含むセルの数を求めたい場合どのように記述するのでしょうか?

ご回答いただくにあたってはURLは特に必要としません。
できるだけ具体的な数式を教えていただけないでしょうか。

宜しくお願い申し上げます。

回答の条件
  • 1人5回まで
  • 登録:2007/03/28 12:48:07
  • 終了:2007/03/28 15:20:46

ベストアンサー

id:nandedarou No.1

nandedarou回答回数230ベストアンサー獲得回数342007/03/28 13:42:22

ポイント100pt

結果を表示するセルに次のように入力して下さい。

=SUM(IF((MONTH(A1:A5000)=1)*NOT(ISERROR(FIND("漢",B1:B5000))),1,0))

※2箇所5000という数字がありますが、最後のデータのセルの行番号より十分大きな値ならば、いくつでも構いません。

※=1の部分は、1月を検索する場合です。

※"漢"は、"漢"という文字を検索する場合です。


ただし、このままではダメです。

上記の数式を入力後、次の操作をして下さい。

(1)数式を入力したセルをクリック

(2)エクセルのツールバーの下の数式バーに数式が表示されたのを確認

(3)数式バーをクリックし、カーソルを数式バーにおく

(4)この状態で、キーボードの[SHIFT]キーと[CTRL]キーを押しながら、[ENTER]キーを押して下さい。

(5)すると、数式がカッコ{}で囲まれます

これで完成です。

id:paprikan

ご回答ありがとうございます。

ご教授いただいた式を使ったら求めた値が出てきました。

ただ後半の「キーボードの[SHIFT]キーと[CTRL]キーを押しながら、[ENTER]キーを押して下さい。」というのはどういう内容の操作なのでしょうか?

2007/03/28 13:57:23

その他の回答(2件)

id:nandedarou No.1

nandedarou回答回数230ベストアンサー獲得回数342007/03/28 13:42:22ここでベストアンサー

ポイント100pt

結果を表示するセルに次のように入力して下さい。

=SUM(IF((MONTH(A1:A5000)=1)*NOT(ISERROR(FIND("漢",B1:B5000))),1,0))

※2箇所5000という数字がありますが、最後のデータのセルの行番号より十分大きな値ならば、いくつでも構いません。

※=1の部分は、1月を検索する場合です。

※"漢"は、"漢"という文字を検索する場合です。


ただし、このままではダメです。

上記の数式を入力後、次の操作をして下さい。

(1)数式を入力したセルをクリック

(2)エクセルのツールバーの下の数式バーに数式が表示されたのを確認

(3)数式バーをクリックし、カーソルを数式バーにおく

(4)この状態で、キーボードの[SHIFT]キーと[CTRL]キーを押しながら、[ENTER]キーを押して下さい。

(5)すると、数式がカッコ{}で囲まれます

これで完成です。

id:paprikan

ご回答ありがとうございます。

ご教授いただいた式を使ったら求めた値が出てきました。

ただ後半の「キーボードの[SHIFT]キーと[CTRL]キーを押しながら、[ENTER]キーを押して下さい。」というのはどういう内容の操作なのでしょうか?

2007/03/28 13:57:23
id:nandedarou No.2

nandedarou回答回数230ベストアンサー獲得回数342007/03/28 14:13:01

ポイント10pt

配列数式という特殊な数式の書き方を使用しています。知っている人は少ないかも知れません。


エクセルのヘルプで、「配列数式」と検索すると詳しく解説されている部分もあるかと思います。(ただし、実際やってみないと理解するのは難しいですが…。)


例えば、今回の例でいうとMONTHは、普通にやったら、A1:A5000などの範囲を引数に取れない関数ですよね。ところが、あの操作をすると、数式にA1からA500まで一つずつ入れて、その結果の集合を返すのです。それをSAMで集計すると言う訳です。

id:paprikan

ご回答ありがとうございます。

配列数式についてはこのあとじっくり確認してみます。

あと配列数式の中にはCOUNTIF関数は使えないのでしょうか?見当違いな質問だったらお許しください。

2007/03/28 14:31:43
id:nandedarou No.3

nandedarou回答回数230ベストアンサー獲得回数342007/03/28 15:06:44

ポイント10pt

COUNTIF関数自体が配列をとるので、ダメではないかと思います。

配列の配列など特殊な用途で可能かもしれませんが…。できるかわかりません。特に、今回は不要でしょう。

なお、先程の数式は、次のように、NOTを省いて、最後の0と1を逆にした方が、簡単ですね。

=SUM(IF((MONTH(A1:A5000)=1)*ISERROR(FIND("漢",B1:B5000)),0,1))

●別の方法(こちらのほうが普通だと思います。)

セルC1に次のように入力し、最後のデータの行までコピーして下さい。(マウスで簡単にコピーできますが、分からなかったらコメントで聞いて下さい。)

=IF(AND(MONTH(A1)=1,ISERROR(FIND("漢",B1))),0,1)

結果を表示したいセルに次のように入力して下さい。

=SUM(C:C)

※ちなみに、IF文で複数の条件があるとき、条件部分は、AMD(条件1,条件2)としますが、条件1*条件2と書いてもいいです。

(最初に提示した数式では*を使用しました)

id:paprikan

配列部分をなくした式なのですね。

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

ご回答いただいた内容をしっかり理解すれば、かなりエクセルの学習になりそうです。

このあとじっくり確認させていただきます。

2007/03/28 15:19:19

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません