• 締切済み

【EXCEL】関数について

初心者のため、きちんと説明できるか不安ですが、上手に伝われば幸いです。 例えば、 範囲をA1~A50にし、検索条件がD1にあった場合 =COUNTIF(A1:A50, D1) でOKですが・・・ 検索条件がD2~D6までの複数だった場合 =COUNTIF(A1:A50, D1:D6) だとエラーまたは0になってしまうのですが 何が原因でしょうか。 ※ちなみに、入力されているデータは数字ではなく「あ」や「A」などの単体の文字です。 もし、COUNTIF関数で出来ない場合は、どの関数を使えばよいでしょうか? SUBPRODUCT関数なども試したのですが、上手く正しい数字が返ってきません。 よろしくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.10

何がしたいか、模擬的な説明もないので、推測してやってみます。 >何が原因でしょうか。 単純に、エクセルの関数の規約違反です。第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/8248)
回答No.9

回答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/8248)
回答No.8

>ORの条件だったので、SUBPRODUCT関数を試しましたが、結果は同じくエラーで返ってきてしまいます…。空白のセルも含まれているからでしょうか…。 あなたがやりたいことを説明されていません。 回答No.3の補足で『関数で、「あ~ん」から「あ、か、さ、た、な、は」が何件入力されているかを結果として出したいということです。』と言っていますが「あ、か、さ、た、な、は」の合計を1つの数式でカウントしたいのですか?、それとも其々の明細を6個のセルへ一挙にカウントしたいのですか? また、エラーになった数式を提示して頂けないと原因が分かりません。 「空白のセルも含まれている」とはA1~A50に未入力セルが有るのですか? 尚、未入力のセルはBLANKですが「""」は文字列なので「空白」のデータタイプも提示された方が良いでしょう。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.7

[No.3補足]へのコメント、 添付図参照 式 =COUNTIF(A$1:A$50,D1) を入力したセル E1 を下方に(セル E6 まで)ズズーッとオートフィルすれば、貴方が求める数値はセル E7 に表示されます。 セル E7 には次式を入力 =COUNTIF(A1:A50,D1)+COUNTIF(A1:A50,D2)+COUNTIF(A1:A50,D3)+COUNTIF(A1:A50,D4)+COUNTIF(A1:A50,D5)+COUNTIF(A1:A50,D6) でも、如何に貴方でもこんな小学生がするようなことはしないでせう?そう、 =SUM(E1:E6) とすれば好いのです。

  • Chiquilin
  • ベストアンサー率30% (94/306)
回答No.6

条件を範囲で指定するということは 結果が配列で返るということ に他なりません。その数式をそのまま確定したのなら 結果は単独 で返ります。配列数式について勉強して下さい。 =SUM(COUNTIF(A1:A50,D1:D6)) Ctrl + Shift + Enterで確定 とすれば結果が返るはずです。 Enter確定にしたいなら =SUMPRODUCT(COUNTIF(A1:A50,D1:D6)) これで。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.5

訂正 誤:D1:D5が検索条件です。 正:D1:D6が検索条件です。

  • mt2015
  • ベストアンサー率49% (258/524)
回答No.4

データの先頭と検索条件の先頭にフィールド名を付ければ、DCOUNTA関数で答えが出せます。 添付の図ではA1とD1にフィールド名「DAT」を付けました。 この場合、A1:A51がデータベース、D1:D5が検索条件です。 検索条件は縦の場合はOR、横につなげるとANDになります。 今回はORですので、検索条件のどれかを満たす個数は =DCOUNTA(A1:A51,A1,D1:D6) で出せます。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.3

「=COUNTIF(A1:A50, D1) でOK」とする貴方は、 「=COUNTIF(A1:A50, D1:D6)」の結果がどうなって欲しいのですか?

bob_in_trouble
質問者

補足

大事なところが抜けていて申し訳ありません。 A1~A50内の、D1~D6にある複数の特定の文字のみが何件あるかを結果で出したいと思っています。 例えば、 A1~A50に「あ~ん」がランダムで入力されており、D1~D6には「あ、か、さ、た、な、は」が入力。 関数で、「あ~ん」から「あ、か、さ、た、な、は」が何件入力されているかを結果として出したいということです。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

>検索条件がD2~D6までの複数だった場合 COUNTIF関数は条件が1個に限られているようです。 複数の条件でカウントしたいと言っても条件がANDなのかORなのかで数式の組み立て方が変わります。 ANDの条件のときはCOUNTIFS関数で範囲1に対して条件1、範囲2に対して条件2、・・・・のように複数の範囲と条件を列記します。 ORの条件のときはSUMPRODUCT関数でマトリクスを作り論理演算すれはカウントできます。 比較範囲をD1:I1のように列方向にすれば50×6のマトリクスで論理演算できます。その結果を集計すれば目的の値が得られます。 =SUMPRODUCT((A1:A50=D1:I1)*1)

bob_in_trouble
質問者

補足

分かりやすいご説明ありがとうございます! COUNTIF/COUNTIFS関数はANDの条件のときに使用するんですね、勉強になりました… ORの条件だったので、SUBPRODUCT関数を試しましたが、結果は同じくエラーで返ってきてしまいます…。空白のセルも含まれているからでしょうか…。

  • Nobu-W
  • ベストアンサー率39% (725/1832)
回答No.1

=COUNTIF(A1:A50, D1:D6) ↑ これだと構文エラ~になります >< COUNTIF … 範囲の条件にあったデータを返してくれます。 書式COUNTIF(範囲,"検索条件") COUNTIFS … 複数の範囲のセルに条件を適用し、すべての条件に一致した回数を 返します。 COUNTIFSの使い方は https://www.becoolusers.com/excel/countifs.html 参照され理解して下さい^^ もし解りにくいHPだなぁ~ って 思われましたら>< 『EXCEL COUNTIF COUNTIFS 使い方』で検索されますと、色々出てきますので、 貴殿の理解しやすいところ、探してみて下さい

参考URL:
https://www.becoolusers.com/excel/countifs.html
bob_in_trouble
質問者

お礼

ありがとうございます…! どうやら、私の求めるものだとCOUNTIFS関数では補えなさそうです>< 今後、使用機会があった場合、是非参考にさせていただきます!

関連するQ&A

  • Excel2010でcountif関数について

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

  • excel関数(countif)

    countif関数の使い方についてお伺いします。 countif関数の検索条件として、6分の1,3分の1などはどのように設定すればいいのでしょうか。それぞれ、excel上は16.7(=16.66666・・・),33.3(=33.33333・・・)などと表記されますが、割り切れない数字なので、「16.7」「33.3」と入れても当然正しいカウントはできません。 例えば範囲をH3:H13とすると、その範囲の中にある数字が順に以下のようになった場合 H3 ・・・ 50 H4 ・・・ 33.3(=33.33333・・・) H5 ・・・ 25 H6 ・・・ 40 H7 ・・・ 16.7(=16.66666・・・) H8 ・・・ 100 H9 ・・・ 16.7(=16.66666・・・) H10・・・ 50 H11・・・ 33.3(=33.33333・・・) H12・・・ 0 H13・・・ 16.7(=16.66666・・・) この範囲での50の個数はcountif(H3:H13,50)=2となります。 では、16.7(=6分の1)や33.3(=3分の1)はどのように関数を作ればいいのでしょうか? よろしくお願いします。

  • Excel関数のことで教えていただきたいのですが、、、

    Excel関数のことで教えていただきたいのですが、、、 SUBTOTAL と COUNTIF を1セルに同時に使用できませんか? 全行で”A”を数えることはできます。ここで、フィルタで行をしぼっても しぼった中から”A”を数えたいのです。 数字の合計ならSUBTOTAL(9,範囲)ですし、数字入力セル数を数えるならSUBTOTAL(2,範囲) ですが‥ よろしくお願いします。

  • 関数について

    例えば「A1:D10」の範囲の所々に入力されている文字列等を検索する関数と「HLOOKUP」関数を組み合わせて使うのにはどうしたらいいのでしょうか。(下の数字を返したいのです)  (例)○○費      5,000           ××費           10,000                △△費                 8,000

  • Excel関数

    Eccel2003を使用して以下のような入力作業を行っております。 A列~C列のセルに「1~10」いずれかの数字を入力して行きます。 入力パターンは (1)A列だけ入力 (2)A列とB列に入力 (3)A列~C列全てのセルに入力 の3パターンです。 複数の列に数字を入力する場合((2)及び(3))、同じ数字を入力することはありません。 【例】     A B C D  1  5  4  1  2  6  3   1 2  4   2 4 5  ・  ・  ・ このとき、A~C列に一つでも該当の数字(ここでは2と4と5)が入力されていた場合に、 ある文言(30文字くらい)をD列に反映させたいのですが、何か良い関数等ありますでしょうか?    ※ 上記例の場合、1,3,4行目のD列に文言を反映 例の4行目のように全ての列に該当の数字を入力することもあります。 ご教示頂きたく何卒宜しくお願い致します。

  • <Excel>関数について

    宜しくお願いします。 SUMIF関数のように、条件範囲と条件と合計範囲を指定できるCOUNT関数はないのでしょうか? COUNTIFですと、合計範囲が条件範囲と同じになってしまうので困っています。 教えてください。

  • エクセルのCOUNTIF関数について。

    エクセル初心者です。 たとえば A1のセルからA4のセルに 350、349、371、328 と入力されていて A6に  =COUNTIF(A1:A4,">=350") だったら 『2』となりますが A6に  =COUNTIF(A1:A4,">=A1") だったら 『0』になります。 こういう使い方は出来ないのでしょうか? A1を検索条件に入れたい場合は 何か他のやり方(関数)があるのでしょうか? どうすれば良いか ぜひ教えてください。

  • エクセルのCOUNTIF関数について

    COUNTIF関数でワイルドカードを使って検索する場合、検索対象は文字列でないと検索できないんでしょうか? 例えば、COUNTIF(A1:A10,"??1??") と入力した場合、A1からA10は数値では検索できず、文字列でないと検索できませんか?

  • エクセルの関数について教えてください。

    オフィス2010初心者です。 A1からA10まで赤色数字か黒色数字を入力しA11に NG or OKと表示させたい。 表示条件としまして、赤色数字がなければOKで赤文字があればNGと 表示する関数を教えて下さい。 宜しくお願いします。

  • エクセルの関数について教えてください。

    どの関数を使ったらよいのか教えてください。 1.例えば、1000以上2000以下の数値が入っているセルの個数をカウントしたい。この場合、COUNTIFで式を入れようとしても条件がひとつしか入らないので(">1000"のように)、他のどの関数を使えばいいのでしょうか。 2.ある文字列の中で同じ文字があった場合、その文字とセルの個数をカウントしたい。例えば、ある範囲にA,D,W,D,R,D,A,A,Wとあった場合、A 3,D 3,W 2,R 1というような結果がほしいのですが。 基本的なことで質問して申し訳ないのですが、急いでやらなければならないことがありますのでよろしくお願いします。

専門家に質問してみよう