- 締切済み
【EXCEL】関数について
初心者のため、きちんと説明できるか不安ですが、上手に伝われば幸いです。 例えば、 範囲をA1~A50にし、検索条件がD1にあった場合 =COUNTIF(A1:A50, D1) でOKですが・・・ 検索条件がD2~D6までの複数だった場合 =COUNTIF(A1:A50, D1:D6) だとエラーまたは0になってしまうのですが 何が原因でしょうか。 ※ちなみに、入力されているデータは数字ではなく「あ」や「A」などの単体の文字です。 もし、COUNTIF関数で出来ない場合は、どの関数を使えばよいでしょうか? SUBPRODUCT関数なども試したのですが、上手く正しい数字が返ってきません。 よろしくお願いします。
- みんなの回答 (10)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
何がしたいか、模擬的な説明もないので、推測してやってみます。 >何が原因でしょうか。 単純に、エクセルの関数の規約違反です。第2引数には1セル(の値)か1つの値(定数)しか指定できません。 エクセル関数では、2つ以上の引数がある場合、一方は複数セル(通常はセル範囲)は可だが、他は単一である場合が多い。一度代表的な関数の引数について 見直してみたらどうか。 ーー 例題 A1:A10 木村 木下 大山 東野 東山 山口 山田 島野 野村 上島 とB1:B4に列的に 山田 島野 野村 上島 とデータがあるとします。 考えていることは、A列の氏名の中に、B列の氏名で見つかるのは、何人か? こういう内容とした場合です。 ーー 初心者の場合は、下記のやり方でやるのも良いと思う。 C1に式 =IF(COUNTIF(A$1:A$10,B1)>=1,1,"") と入れます。 山田はA列にあるので、C1は1になります。 式をC5まで複写すると、C1,C3,C5が 1 1 1 になります。 これを縦の合計を出すと、3です。 B列の人は、3人はA列の中にいることになります。 しかしこのコーナーで、この回答をすると、作業列C列を使うので、質問の「お礼」では不満そうで、ベストアンサーはもらえません(強いてもらいたいわけではないが)。 本回答も、多分わからないということで不評判だろうが。 質問者は、もう少し勉強するようにと言いたい。 ーー 作業列を使えば簡単になるのだが、それを避けるために、配列数式とか、初心者には判りにくい回答を載せられることが多い。 ーー この件もユーザー関数というものを作ると、COUNTIF関数とそっくりなものを 作れる。関数の名前は勝手にcntifx とした。 標準モジュールに下記をコピペしておく。 Function cntifx(r1, r2) m = 0 For Each cl In r2 MsgBox cl k = WorksheetFunction.CountIf(r1, cl) If k >= 1 Then m = m + 1 End If Next cntifx = m End Function そしてシートのセルに(どこでもよいがC1セルとすると)C1セルに =cntifX(A1:A10,B1:B5) と入れると、ENTERを押すと、実行され、結果は(本件の例では)3になる。 少し勉強すれば、既存の関数を使いつつ、関数が作れる。
- bunjii
- ベストアンサー率43% (3589/8249)
回答No.8の追加です。 COUNTIF関数関数で複数(配列)の条件を指定すると戻り値が複数になりますので1つのセルには代入できません。 従って、戻り値の左上の値だけが代入されるはずです。 A1="と"、A2="た"、A3="く"、A4="さ"、A5="た"、A6="は"、A7="ね"、・・・・ A8~A50には"あ"、"か"、"さ"、"た"、"な"、"は"が含まれないものとして D1="あ"、D2="か"、D3="さ"、D4="た"、D5="な"、D6="は" 上記の条件で下記の数式の動作を説明します。 E1=COUNTIF(A1:A50, D1:D6) ↓ 配列計算の中間値 E1= {0;0;1;2;0;1} ↓ 代入される値は先頭の0のみ E1=0 E1~E6を選択して戻り値を6個のセルへ代入するように操作したときは E1:E6=COUNTIF(A1:A50, D1:D6) 確定時にShift+Ctrl+Enterの打鍵する ↓ E1へ0、E2へ0、E3へ1、E4へ2、A5へ0、A6へ1のように纏めて代入される E1~E6の合計に相当する計算方法は次の数式になります。 =SUM(COUNTIF(A1:A50,D1:D6)) 数式を確定するときにShift+Ctrl+Enterの打鍵が必要です。(1つのセルへ代入)
- bunjii
- ベストアンサー率43% (3589/8249)
>ORの条件だったので、SUBPRODUCT関数を試しましたが、結果は同じくエラーで返ってきてしまいます…。空白のセルも含まれているからでしょうか…。 あなたがやりたいことを説明されていません。 回答No.3の補足で『関数で、「あ~ん」から「あ、か、さ、た、な、は」が何件入力されているかを結果として出したいということです。』と言っていますが「あ、か、さ、た、な、は」の合計を1つの数式でカウントしたいのですか?、それとも其々の明細を6個のセルへ一挙にカウントしたいのですか? また、エラーになった数式を提示して頂けないと原因が分かりません。 「空白のセルも含まれている」とはA1~A50に未入力セルが有るのですか? 尚、未入力のセルはBLANKですが「""」は文字列なので「空白」のデータタイプも提示された方が良いでしょう。
- msMike
- ベストアンサー率20% (364/1804)
- Chiquilin
- ベストアンサー率30% (94/306)
条件を範囲で指定するということは 結果が配列で返るということ に他なりません。その数式をそのまま確定したのなら 結果は単独 で返ります。配列数式について勉強して下さい。 =SUM(COUNTIF(A1:A50,D1:D6)) Ctrl + Shift + Enterで確定 とすれば結果が返るはずです。 Enter確定にしたいなら =SUMPRODUCT(COUNTIF(A1:A50,D1:D6)) これで。
- mt2015
- ベストアンサー率49% (258/524)
訂正 誤:D1:D5が検索条件です。 正:D1:D6が検索条件です。
- mt2015
- ベストアンサー率49% (258/524)
- msMike
- ベストアンサー率20% (364/1804)
「=COUNTIF(A1:A50, D1) でOK」とする貴方は、 「=COUNTIF(A1:A50, D1:D6)」の結果がどうなって欲しいのですか?
- bunjii
- ベストアンサー率43% (3589/8249)
>検索条件がD2~D6までの複数だった場合 COUNTIF関数は条件が1個に限られているようです。 複数の条件でカウントしたいと言っても条件がANDなのかORなのかで数式の組み立て方が変わります。 ANDの条件のときはCOUNTIFS関数で範囲1に対して条件1、範囲2に対して条件2、・・・・のように複数の範囲と条件を列記します。 ORの条件のときはSUMPRODUCT関数でマトリクスを作り論理演算すれはカウントできます。 比較範囲をD1:I1のように列方向にすれば50×6のマトリクスで論理演算できます。その結果を集計すれば目的の値が得られます。 =SUMPRODUCT((A1:A50=D1:I1)*1)
補足
分かりやすいご説明ありがとうございます! COUNTIF/COUNTIFS関数はANDの条件のときに使用するんですね、勉強になりました… ORの条件だったので、SUBPRODUCT関数を試しましたが、結果は同じくエラーで返ってきてしまいます…。空白のセルも含まれているからでしょうか…。
- Nobu-W
- ベストアンサー率39% (725/1832)
=COUNTIF(A1:A50, D1:D6) ↑ これだと構文エラ~になります >< COUNTIF … 範囲の条件にあったデータを返してくれます。 書式COUNTIF(範囲,"検索条件") COUNTIFS … 複数の範囲のセルに条件を適用し、すべての条件に一致した回数を 返します。 COUNTIFSの使い方は https://www.becoolusers.com/excel/countifs.html 参照され理解して下さい^^ もし解りにくいHPだなぁ~ って 思われましたら>< 『EXCEL COUNTIF COUNTIFS 使い方』で検索されますと、色々出てきますので、 貴殿の理解しやすいところ、探してみて下さい
お礼
ありがとうございます…! どうやら、私の求めるものだとCOUNTIFS関数では補えなさそうです>< 今後、使用機会があった場合、是非参考にさせていただきます!
補足
大事なところが抜けていて申し訳ありません。 A1~A50内の、D1~D6にある複数の特定の文字のみが何件あるかを結果で出したいと思っています。 例えば、 A1~A50に「あ~ん」がランダムで入力されており、D1~D6には「あ、か、さ、た、な、は」が入力。 関数で、「あ~ん」から「あ、か、さ、た、な、は」が何件入力されているかを結果として出したいということです。