• ベストアンサー

エクセルの条件付きでデータの種類をカウントする関数

エクセルの条件付きで重複データや空白データをカウントせず、種類数をカウントする関数の書き方を教えてください。 C列の5行目から14行目に「品目」が入力され、D列に「売れた数」が入力されているとします。売れていない場合は「売れた数」は空白。品目等のデータがない行もあります。品目には重複しているものもあります。 ここで、G5セルに「売れた品目の種類数」を表示させる関数をどのように書けばよいか教えてください。 SUMPRODUCTやCOUNTIFまたはMATCH関数を使っていろいろ試してみましたが、うまくいきません。

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

  • ベストアンサー
noname#204879
noname#204879
回答No.2

[No.1]の補足 セル G5 の式は、そのまんまでも構わないけど、若干冗長な箇処があるので、次式に訂正しておきます。ただし、此れも配列数式です。 =SUM(IF(D5:D14,1/COUNTIF(F5:F14,IF(D5:D14,C5:C14,"")),""))

edoharu
質問者

お礼

ありがとうございました。もっと勉強します。関数についても、配列数式についても。

edoharu
質問者

補足

やってみましたが#DIV/!になります。どこかまちがっているのでは。 でもこれがいちばん簡明な回答に近い気がします。 もう少し私も勉強してみます。

その他の回答 (3)

noname#204879
noname#204879
回答No.4

[No.2補足]へのコメント、 》 …#DIV/!になります ホントですか?#VALUE! ではありませんか? 》 もう少し私も勉強してみます 「配列数式」って何かも勉強してネ。

edoharu
質問者

補足

あそうか、わかりました。配列数式っていうのをわかっていませんでした。上手く行きそうです。ありがとうございました。

  • MackyNo1
  • ベストアンサー率53% (1521/2850)
回答No.3

データ数が99個以下なら、以下の数式を入力してCtrl+Shift+Enterで確定して配列数式にしてください。 =SUM((MATCH(IF(D5:D100<>"",C5:C100,""),IF(D5:D100<>"",C5:C100,""),0)=ROW(C5:C100)-4)*1)-1

edoharu
質問者

お礼

ありがとうございました。ベストアンサーにしなかった事をお許し下さい。でもこれも勉強になりました。もっと配列数式の事を勉強します。

noname#204879
noname#204879
回答No.1

添付図参照 1.フォント色を白に設定したセル F5 に式 =IF(D5,C5,"") を入力して、此れを下方にズズーッとドラッグ&ペースト 2.セル G5 に次の配列数式を入力   =SUM(IF(D5:D14,1/COUNTIF(F$5:F$14,IF(D5:D14,C5:C14,"")),""))

関連するQ&A

  • エクセルデータのカウント

    A1:E5にデータが入力してあります。(空白セルもあり) C列、D列、E列のどれか1つのセルにでもデータ(数値) が入っている行の数をカウントして、A6に表示する 方法を教えてください。 たとえばF列に、=COUNT(C1:E1)を計算する行を入れて、 A8で=COUNTIF(F1:F5,">=1")をすれば、できるのだと思うのですが、 そのために行を増やしたくないのです。

  • エクセル 種類の個数をカウントする関数はありますか

    エクセル2002を使用しています。 重複データはひとつの種類として、範囲内のデータの種類数を計算したいのですが、どのようにすべきでしょうか? この範囲内には、ところどころ空白セルがあります。 例 B列 3行  10 4行  11 5行  12 6行 7行  15 8行 9行  15 10行  18 これで、B3からB10の範囲の種類別のデータの数は5です。 これを関数で計算したいのです。 本当は対象データが多いので、とりあえず、ピボットテーブルをかけて、抽出されたデータの一覧から使用した行数を数えて正解の数はわかりましたが、こんな方法はエクセルらしくないですよね。 また、データが数値でなかった場合も、関数で求められるでしょうか? 例 B列 3行  鈴木 4行  鈴木 5行  佐藤 6行 7行  高橋 8行 9行  高橋 10行  野口 この場合は、鈴木・佐藤・高橋・野口 で、データの種類の個数は4です。 これを関数で求めたいのです。 よろしくお願いします。

  • EXCELでのカウント

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

  • エクセル関数  重複したものを削除する

    皆さんおお知恵を拝借させてください。 101 102 103 104 105 106 102 103 101 とあったときに 101 2個 102 2個 103 2個 104 1個 105 1個 106 1個 となりますので、コード数としては6個になりますが、このように数えれる関数がないものかとこのサイトで検索していましたら、 SUMPRODUCT(1/COUNTIF($A$1:$A$9,A1:A9)) という関数があることが分かりました。そこで早速こちらの関数を試してみたところ、確かにエクセルに空白のセルがない状態であれば重複数字を数えることなしにカウントできることがわかりました。 しかし、ある事情により私のエクセルデータには空白のセルがあり、冒頭の例でいきますと SUMPRODUCT(1/COUNTIF($A$1:$A$11,A1:A11))   (空白セルが2つあるため) としなければならないのですが、そうすると #DIV/O というエラーがでてしまいます。 どのたか対処方をご存知の方教えていただけないでしょうか? よろしくお願いします。 ちなみに今回記載した三桁のコードは便宜上101~106と、つらなった数字をつかっていますが、実際にはそうはなっていません。

  • エクセル関数で重複チェック

    エクセル2010です。 ワークシートのB10:B17の範囲に数値(1から200くらいの自然数)が入力されます。 この範囲が空白になることはありません。 この範囲内での重複(同じ数値の入力)をチェックしたいのです。 ただし、1は何個あろうが重複に含めません。 となりの列あたりを作業列にして、COUNTIFでもできますが、1個のセルで完結させたいと思います。 まず、1を超える数値の個数を取得し、そこから1を除く数の種類の数を引いて0になれば重複はないのではないかと思い、下記の数式を書いてみました。これでTRUEなら重複はないと思いますが、もっと簡単な方法があるのではないかと質問いたしました。 よろしく願いします。 =COUNTIF(B10:B17,">1")-(SUMPRODUCT(1/COUNTIF(B10:B17,B10:B17))-(COUNTIF(B10:B17,"=1")>0))=0

  • EXCELでの重複データカウント方法について(過去問読みましたがわかりません)

    いつもお世話になっております。excel97の関数に関してです。 過去問を検索し、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=118918において、 質問:会社名のデータが1万件あります。 その中には、同じ会社名が重複しているものがあります。 そこで、重複しているデータは1つのものとしてカウントし、全部で何件の会社が存在するかカウントする方法はあるでしょうか? 回答:関数でやるとすると。。。。 データが、A1~A10に入っているとします。 =SUMPRODUCT(1/COUNTIF(A1:A10,A1:A10)) とA11に数式を入力します。 これではいかがでしょうか?? 解説 COUNTIF関数でそれぞれの会社の数をカウントし、 SUMPRODUCT関数で配列の積をもとめます。 というのがあり、未熟者の私は理屈はよく分からないまま、この式でやってみたあと実際に数えてみたのですが、いつも正解数より1多くなってしまうのですが、この式の最後に-1を付ければいいのかな? と思ったのですが、いかがでしょうか?

  • エクセル データのカウント

    C列からG列の5行目以降に数値データが入っています。 ただ、全てのセルに入力し足るのではなくところどころに空白セルがあります。 それぞれの列についてデータの入力してあるセルの数を数えてそれを各列の2行目に表示したいのですがどうしたらいいでしょうか?

  • 関数がうまくいきません?

    簡単な、関数で恥ずかしいのですが フィールド行が5行目にあり6行目からデータ(データは毎日変更があります)が入力されたシートがあります。 I列からL列に条件が一致するものに○があり、一致しないものは空白となっています。   A B C D・・ I   J  K  L  6        ○ 7          ○   ○  ○ 8        ○ ○ ○ ○ 9            ○ ○ 10        ○ ○   ○  11 12        ○     ○ 13          ○ ○ 14        ○ ○ ○ ○ 15        ○   ○ ○  16            ○ 17          ○   ○ 18        ○ ○ ○ ○ 19          ○ ○ ○ 20        ○ ○ ・ ・ ・ このI列の中で空白になっているセルの合計値をB2へ J列の中で空白になっているセルの合計値をD2へ、K列の中で空白になっているセルの合計値をB4へ、L列の中で空白になっているセルの合計値をD4へ入れるために =COUNTIF(I6:I65536,"<> ○") =COUNTIF(J6:J65536,"<> ○") =COUNTIF(K6:K65536,"<> ○") =COUNTIF(L6:L65536,"<> ○") と関数を設定しましたが、うまくいきません。 また =COUNTBLANK(I6:I65536) でも試してみましたが、データの入力の無い空白セルもカウントして駄目みたいです。 どなたかご教授を!  

  • Excelの関数がわかりません

    ExcelでSubtotalによって抽出されたデータを、Sumproduct関数で種類の数をカウントする方法がわかりません。 それぞれ、=subtotal(3,範囲) =SUMPRODUCT(1/COUNTIF(範囲,範囲)) までは、出来上がっておりますが、上記を組み合わせると数式エラーが発生します。 どのように組み合わせればよいか、または、全く違う方法があるのか是非お教えいただきたいと思います。

  • ExcelのCountif関数の条件に関数を使いたい

    Excel2002のCountif関数の条件に関数を使用することは可能でしょうか? 今日と同じ日付のセルの数をカウントしたく、以下のように記述したのですが、カウントされませんでした。 =COUNTIF(H1:H28,"=today()") 条件を日付で記述すればカウントされるので、セルの値は正しく入力されています。 よろしくお願いします。

専門家に質問してみよう