• ベストアンサー

この場合の関数を教えてください。IF関数とCOUNTIF関数?

  A      B    C  D  F  G 1 12300 2 9800 3 14500 上記の様な表($a$1:$d$3) がある時、 B1 ◎      D1 △   F1◎     C2◎         F2△ B3△      D3◎ F1 に◎を入れた時に、 もし、A列の値が10000より大きいなら(注)、範囲$a$1:$d$3の◎の数を数え結果をG1に2と表示させたいです。(F2に△と入れたら2と表示) (注) 1行目は、12300(A1)なので1行目はカウントの範囲。 2行目は、9800で10000より小さいのでカウントの範囲から外れる。 3行目は、14500はカウントの範囲。 2行目の◎(C2)はカウントされないようにするには、 G1にどのようなCOUNTIFの関数を入れればよいのでしょうか? いつも教えているので、考えたのですが? =IF(A1>10000,COUNTIF($B$1:$D$3,F1),"0")では、間違いとは気づいたのですが? (A1>10000が間違い)どの様にして良いか解りません。 どなたか教えてください。宜しくお願いいたします。 (見にくい表で申し訳ありません)

  • aladd
  • お礼率36% (198/550)

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

=SUMPRODUCT((A1:A3>10000)*(B1:D3="◎")*1) でA列が10000より大きい行だけの◎印の数をカウントできます

aladd
質問者

お礼

大元の表に不備が有った為?上手くいきませんでしたが、 修正後、正しいカウントが出来るようになった様です。現在チェック中です。 と同時に、SUMPRODUCT関数も研究しているのですが? 最後の*1は、どういう意味なのでしょうか?

その他の回答 (3)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

>最後の*1は、どういう意味なのでしょうか? ⇒SUMPRODUCT関数も含め、比較結果はTRUE・FALSEの論理値になり、数値になっていませんので数値の1を掛ける事で数値にするおまじないです。  因みに=SUMPRODUCT((A1:A3>10000))とすると結果は0ですが、=SUMPRODUCT((A1:A3>10000)*1)で2になります。  但し、この数式のように2組以上の式になっている場合は「*1」は不要ですので=SUMPRODUCT((A1:A3>10000)*(B1:D3=F1))となります。

aladd
質問者

お礼

皆さん、本当に有り難うございました。 ⇒SUMPRODUCT関数も含め、比較結果はTRUE・FALSEの論理値になり、数値になっていませんので数値の1を掛ける事で数値にするおまじないです。 なるほど!基本的な事を理解していないもので!非常に解りやすい説明有り難うございました。

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

一読して、質問の意味がわかり難い。読者がどう読むか、しっかり考えて書くこと。 ーー 下記のように 箇条書きするのが良いのではないかな。 実例の書き方も下記を参考にすること。 ーー (1)F列に入れて指定した、◎(や△)の数を(3)の範囲で数える (2)結果はF列に指定した記号のG列対応行に(右隣列)出す (3)個数を数える範囲はB1:D3 (私の例ではB1:D5) (4)ただし、◎などのある対応行のA列の値が10000より小だと その◎や△をカウントしない。 ーーー 例データ A1:D5 (Bは空白。OKWAVE画面で左へ詰められ表示されるのを防止用) A列  B列   C列  D列 12300 ◎ B △ 9800 △ ◎ B 14500 △ △ ◎ 8000 B △ B 5000 B ◎ B ーーー F1:G2 F列  G列 ◎ 2 △ 3 G1の式 =SUMPRODUCT(($A$1:$A$5>10000)*(($B$1:$B$5=$F1)+($C$1:$C$5=$F1)+($D$1:$D$5=$F1)*1)) G2はg1の式を下方向に複写。 ーー SUMPRODUCT関数式の中の +はOR条件、*はAND条件で使う。*1は結果のTRUEを数字化するもので、SUMPRODUCT関数利用で、件数カウントの定石です。

aladd
質問者

お礼

一読して、質問の意味がわかり難い。読者がどう読むか、しっかり考えて書くこと。 全く、その通りと反省しております。 すいません! SUMPRODUCT関数式の中の +はOR条件、*はAND条件で使う。*1は結果のTRUEを数字化するもので、SUMPRODUCT関数利用で、件数カウントの定石です。 非常に参考になりました。有り難うございます。

  • agthree
  • ベストアンサー率72% (233/323)
回答No.1

◎や△の数を数える時にA列の数字について行ごとに10000との大きさを比較しながら数えなければならないのに、A1>10000だと1行目だけしか比較していないのでおかしなことになってしまっていますね。 列が1つだとdcountとかで何とかいけそうですが、列もB~Dと3列ありますから、これを1つの式にまとめるのは結構複雑そうです。 計算を分けてしまってはいかがでしょうか? 例えば、G列はその行の◎の数、H列はその行の△の数を計算する列としてしまい、I列以降にその合計を取るとシンプルかと思います。 G1には=IF($A1>10000,COUNTIF($B1:$D1,"◎"),0) G2には=IF($A2>10000,COUNTIF($B2:$D2,"◎"),0) G3も同様、H1~H3には◎を△に変えた式を入れ、I列以降にG1~G3,H1~H3の和をそれぞれ取るとよいと思います。 式を複雑にすると後でわからなくなりがちなので、セルの数が増えても式を分けた方がわかりやすいと(個人的には)思います。

関連するQ&A

  • ExcelのCOUNTIFについて

    Excel2007を使用しています。 COUNTIFについて次のようなことは可能か教えて下さい。 画像は、仲内の麻雀の成績表です。 A~Fさんまでそれぞれ行によって成績をまとめてあります。 そして、D~F列の1,2、3、4という数字は、K列、N列の順位の回数をCOUNTIFにてそれぞれカウントしています。例えばAさんの場合は、1G目は試合なし、2G目で4着をとっているのでG列の4のところに1カウントしています。 同様に、Eさんは、1G目4着、2G目1着なのでD列の1位とG列の4着が1つずつカウントされています。 これは、Aさんの場合 =COUNTIF(I3:N3,1) にてD列の1着の回数をカウントしています。(同様に、E列~G列も末尾の1を2~4にそれぞれしてカウントしています。 で、問題は8行目のFさんなのですが、上と同様にI8~N8をCOUNTIFでカウントすると、本来は2G目の2着のみなので、E列の2着が1つカウントされるだけなのですが、I8~N8を対象範囲としているのでL列の『P』(※ポイントです)の+3.0を誤って3着にカウントしてしまい、F列の3着のところに1つカウントしてしまっています。 説明が長くなってしまいましたが、要は、着順のK列、N列、Q列・・・・と着順のみの列をCOUNTIFでの範囲にしたいのですが可能でしょうか? ※ゲーム数がこの後相当数になりますのでセルをコピーする予定ですので列を1つずつ選択する方法ではなく何か数式で教えて下さい 以上、分かりにくい文で申し訳ありませんがよろしくお願い致します。

  • 【エクセル】離れたセルのCOUNTIF関数

    こんにちは。 エクセルのCOUNTIF関数についての質問です。 各セルに以下のような数値が入っている表で・・・  A=10  B=00  C=20   D=30   E=00   F=40   G=50  AとCとEとGのセルを選択し、0以外のセルの個数を数えるとき COUNTIF関数で =COUNTIF(A,C,E,G,"<>0") という数式を立てたのですが、エラーとなってしまいました。 最終的には =((COUNTIF(A,"<>0")+(COUNTIF(C,"<>0")+(COUNTIF(E,"<>0")+((COUNTIF(G,"<>0")) という数式をたてて計算は出来たのですが、もっと簡単(?)な式はあったりするのでしょうか? ご存知の方がいらっしゃいましたら是非お教え下さい。

  • 関数 countif の使い方についてです。

    countif =COUNTIF(A1:A9,">2") こんばんは、上記のようにある一定の範囲内である数値以上のセルをカウントしているのですが、ある数値は桁ごとに違い、その数値は決まっているので、ここでいうと>2の2の部分をコピーで引っ張って、一気に桁ごとにそれぞれの数値以上の数をカウントしたいのですが、 そういった事は可能でしょうか? 絵柄的には 2 2 3 5 6 5 8 6    5 8 6 5 8 5 7 9 5    4 9 5 4 3 5 7 8 1    3 範囲は連続で並んでる数値を使用し、右隣りがその中での以上の数値があればカウントをしていきたいといった表になってます。 countifでは、手入力で一つずつ>○以上と入力していかねばならないため、行が2000桁位あるのを捌くのが非常に困難です。 お手数ですが、知識の豊富な方、教えて下さいませ。

  • EXCELでCountif内に2つ以上の列を入れる場合

    0 A、B、C、D 1 a、1、h、2 2 b、0、i、1 3 c、1、j、2 4 d、0、k、1 5 e、1、l、0 6 f、0、m、2 7 g、1、n、0 上の用にaからnチームまでの得点表があります。 1点を得点したチーム数を計算するときに countif(B:B,"1">+countif(D:D,"1") を使うと実際にでるのですが、Countifを一つだけ使用して範囲の部分をB列からD列という形ではなくB列のみとD列のみの中から探すように指定するにはどうしたらいいのでしょうか? countif(B:D,"1")とやったのですが、こうするとB,D列だけでなくC列もカウントされてしまいます。今回はC列に数字がないので問題内のですが、チーム名で1の入るチームがあると計算がくるってしまうと思います。B列のみD列のみと指定する仕方を教えてください PS 一列にすべてを書けば問題ないのですが、列を分けることでスクロールせずに見ることができ見やすいと思い、複数列にしました。

  • excel countif関数の動作について

    excelのcoutif関数を使用して300行ぐらいの文字列が入った列から特定の文字列の個数をカウントさせているのですがなぜかうまくヒットしてくれません。=countif(B4,$D$3:$D$303)と入力 して300行ぐらいコピーしたのですが、結果が”0”となってしまいます。ところが、カウントしている文字列がD3:D303の中にあることは目視で確認できます。exclのサーチコマンドでもヒットします。カウントする文字列とカウントされる文字列をif文で比較してみても同じものだと認識されるようです。何が原因でカウントされないのかよくわかりません。countif関数 を使用するうえで特定の条件があるのでしょうか?d3:d303のデータはソートしています。

  • エクセルの関数について教えて下さい

    現在ある表を元に、見積書を作っています。 すごい効率が悪く、困っています。 A1~G3に表があります。(実際にはもっと多いです) 1行目に商品名 2行目に金額 3行目に個数 G3 に合計 1・2行目は、元々商品名・金額が入っており 3行目に個数を入れていきます。 G3に合計が入るようにしています。 B2、350円  C2、320円  D2、400円  E2、500円  F2、550円  G2 B3、 1    C3、      D3、 1    E3、       F3、      G3、750円  (現在のG3に入っている数式) =F3*F2+E3*E2+D3*D2+C3*C2+B3*B2 項目が多い為、数式がすごい事になっています。 もっといい方法はないでしょうか? わかる方おられましたら、教えて頂けませんか? よろしくお願いします。

  • Excel 関数でcountifの複数条件

    Excelで条件にあった個数をカウントする関数はcountifですが、 複数の条件にあった個数をカウントする場合、countifの式はどうすればよいのでしょうか。 例えば A列の1行から20行で"○"が入っている個数のカウントは =countif(a1:a20,"○")ですが A列の1行から20行で"○"が入っていて、なおかつ B列の1行から20行に"1"が入っている個数のカウントを知りたいです。 =countif(a1:a20,"○")and(b1:b20,"1")ではないですよね。 よろしくご教授願います。

  • COUNTIF 関数について

    エクセル関数(COUNTIF)を教えてください    例題   勤務  氏名 1 日勤   A 2 日勤   B 3 公休   C 4 特休   D 5 日勤   E 6 年休   F 7 日勤   G 8 公休   H 9 日勤   I 10 特休   J A列に勤務、B列に氏名が入力されています 質問の関数でCOUNTIF(A5:A10、"日勤”)ですが ”E”さんの位置より後に”日勤”が何人いるかをカウントしたい 計算式のA5の値を自動的に判別した計算式にしたい(Eさんの位置が変動するためにA5が固定できないためです) 以上よろしくお願いいたします

  • INDEX関数?それともMATCH関数?

    INDEX関数?それともMATCH関数? エクセル2000で下記の様な事をしたいのですが、どうしても分からず思い悩んでいます。 どなたか分かる方がいらしたら、教えてください。 【この表について】 ・予測A(行3)と予測B(行20)と予測(行30)は最初から入っている数値 ・結果A(行4)と結果B(行21)に左から1クール終わるごとに数値が入力される ・結果A(行4)と結果B(行21)に数値が入ると、実績(行31)が表示される ・(行38)と(行39)は予測Aに対する予測Bの割合 【やりたいこと】 <黄色のセル> (1)B31が表示されたらB38を表示 (2)B31~C31が表示されたらC38を表示 (3)B31~D31が表示されたらD38を表示 (4)B31~D31が全て空白ならばD38を表示 (FGHについても同様に表示させたい) →現在の数式は(1)~(3)についてはできるのですが、(4)の場合に#N/Aとなってしまいます。 <赤色セル> (1)B31が表示されたらB38を表示 (2)B31~C31が表示されたらC38を表示 (3)B31~D31が表示されたらD38を表示 (4)B31~D31とF31が表示されたらF39を表示 (5)B31~D31とG31が表示されたらG39を表示 (6)B31~D31とH31が表示されたらH39を表示 (7)B31~D31とF31~H31が全て空白ならばH39を表示 →これもINDEXやMATCHを使って色々考えてみたのですが、(7)の時が#N/Aとなってしまいます。 どうぞよろしくお願いします。

  • エクセル 関数 countif について

    A列、B列に -100~100 を10単位で入力 A列&B列でC列に文字列を生成 D列にcountifでC列の文字列がいくつあるかカウント 10-20の組み合わせが1個 20-10の組み合わせが3個 なのですが、どちらも4個と表示される ほかの組み合わせでは 正しい個数が表示される 何を改善したらよいでしょうか?

専門家に質問してみよう