• ベストアンサー

Excel関数:Excel関数:0を除いたデータから最高値をカウントして優勢率を求める計算方法

例えば、以下のようなデータがあったとします。   A   B   C 1 50  50  25 2 80  80  80 3 45  50  60 4 35  70  45 5  0   0   0 このデータから1から5行目まで見て、「A」「B」「C」の中で最高値をカウントします。 「1」の場合、最高値は「A」と「B」になります。 「2」の場合、最高値は「A」「B」「C」全てになります。 「3」の場合、最高値は「C」になります。 「5」の場合、データ「0」なので除きます これをカウント数にすると、   A   B   C 1  1   1   0 2  1   1   1 3  0   0   1 4  0   1   0 となり、カウントの総数は「7」となります。 優勢率を求めるのに「Aの優勢率=Aのカウント数/カウントの総数」で、3/7となります。 結果、見た目では、   A     B     C 1 50    50    25 2 80    80    80 3 45    50    60 4 35    70    45 5  0     0     0 6 42.8%   42.8%  28.5% このようになります。このような見た目にしたいのですが、 条件は、 ・0を除いたデータ ・「A6」「B6」「C6」以外は計算式や関数を使わない ・1から5は実際のデータでは1から1000以上になることもある ということです。 関数は詳しくないのでまた質問するかもしれませんが、解説もよろしくお願いします。 回答よろしくお願いします。

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

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.1

>「A6」「B6」「C6」以外は計算式や関数を使わない ◆ご希望のとおりではありませんが、作業列による方法です ★6行目に作業列 A6=SUMPRODUCT((COUNTIF(OFFSET($A1,ROW(1:5)-1,,,3),">"&A1:A5)=0)*(A1:A5<>0)) ★右にコピー ★7行目にご希望の数値 A7=A6/SUM($A$6:$C$6) ★右にコピー

miya_HN
質問者

お礼

なるほど。 それぞれのカウント数を計算して合計するんですね。 ありがとうございました。

その他の回答 (1)

  • robbie21
  • ベストアンサー率55% (5/9)
回答No.2

配列数式を利用した回答です。 以下の数式をA6セルに入力してCtrl+Shift+Enterを押して配列数式として入力 =SUM(((A1:A5>=$A1:$A5)*(A1:A5>=$B1:$B5)*(A1:A5>=$C1:$C5)*($A1:$A5>0)))/SUM((($A1:$C5>=$A1:$A5)*($A1:$C5>=$B1:$B5)*($A1:$C5>=$C1:$C5)*($A1:$C5>0)) でもきっと作業用のセルを使って計算をしたほうが簡単でメンテナンスもしやすいです。 上記回答も以下のように作業用のセルを使って一旦作った数式を配列数式に変換したものです。 ====作業列を使った方法 D1に =AND(A1>0,A1=MAX($A1:$C1))*1 と入力、F5までコピー A6に =SUM(D1:D5)/SUM($D$1:$F$5) と入力 C6までコピー =========== ちなみに、こうした作業用の列は 列のグループ化の機能で印刷時などには隠しておくことが出来ます。 参考URL: http://shortcuts.cc/2007/02/post_41.html

miya_HN
質問者

お礼

なるほど。「Ctrl+Shift+Enter」は配列数式と呼ぶんですね。 ありがとうございました。

関連するQ&A

  • Excel関数:最高値をカウントして総数を求める計算方法

    例えば、以下のようなデータがあったとします。   A   B   C 1 50  50  25 2 80  80  80 3 45  50  60 4 35  70  45 5 50  40  30 このデータから1から5行目まで見て、「A」「B」「C」の中で最高値をカウントします。 「1」の場合、最高値は「A」と「B」になります。 「2」の場合、最高値は「A」「B」「C」全てになります。 「3」の場合、最高値は「C」になります。 これをカウント数にすると、   A   B   C 1  1   1   0 2  1   1   1 3  0   0   1 4  0   1   0 5  1   0   0 となり、カウントの総数は「8」となります。 このカウントの総数を一つのセルで計算する方法を教えてください。 関数は詳しくないのでまた質問するかもしれませんが、解説もよろしくお願いします。 回答よろしくお願いします。

  • Excel関数:データの中から最高値をカウントしてその割合を求める方法

    例えば、   A B  C 1 50 25 50 2 40 80 20 3 0  0  0 4 30 45 45 5 90 25 35 このようなデータがあったとします。ここで1の列の最高値、2の列の最高値というように見ていきます。 ただし、最高値が複数ある場合、A(最も優先度が高い)←→C(最も優先度が低い)とし、同じ列の中でカウントされるのは1つだけにします。 また、0は除きます(総数からも省く)。 例の場合、1を見るとAとCが最高値ですが優先度はAの方が高いため、Aがカウントされます。 2は、B、3はカウントなし、4はBとCが最高値ですがBの方が優先度が高いためBがカウントされます。 このようにカウントしていって、「Aのカウント数/総数」のような計算をして、2/4となります。 同じようにBやCも計算し、パーセントで表します。 結果は、  A B C 6 % % % というように、計算式や関数はできるだけ少ないセルに収めたいのですが(計算式は「A6」「B6」「C6」の部分)、このような方法はあるでしょうか? 回答よろしくお願いします。

  • 項目の中で最高値が複数出た場合の優勢の値の計算方法

    例えば、以下のようなデータがあります。 AからCは項目です。1から5はカウント数です。 50、45などはデータの測定値です。   A   B   C 1 50  45  35 2 80  80  15 3 50  50  50 4 20  50  40 5 60  35  65 この場合、「2」の「A」「B」は同じ最高値です。 また、「3」は「A」「B」「C」全て同じ測定値です。 通常なら、「最高値のカウント数/総カウント数(1から5なのでこの場合、5)」でそれぞれ「A」「B」「C」の「優勢率」を計算するのですが、AからCの中で複数最高値が出た場合、どのような計算で優勢率を決めたらよいでしょうか? 回答よろしくお願いします。

  • Excelの関数を簡素化する方法(質問1・2)

    Excelの関数で質問があります。できるだけ一つのセルに計算をまとめたいのですが、 ■質問1:データの最も優勢な値をカウントする計算 例えば、下のようなデータがあったとします。(a~cはデータ項目。1~5はデータ番号。)   a  b   c 1 50 100  84 2 37 11   56 3 64 39   61 4 87 47   70 5 73 71   44 同じデータ番号の系列で、a~cの中で最も高い数値をカウント「1」とします。それ以外は「0」とします。 例えば、aの1・bの1・cの1、の中の最高値という具合です。 そして、最終的に「同じデータ項目の最高値のカウント数/データ番号のトータルカウント数」の値を計算します。 例えばaの場合、「同じデータ項目の最高値のカウント数」は、データ番号の3、4、5が最高値なので「3」となり、「データ番号のトータルカウント数」はデータ番号が5個あるので「5」となり、「3/5」となります。 このような計算を一つのセルにする関数はあるでしょうか? 今は、最高値のカウント数を計算するセル、 「=IF(MAX(a1:c1)=a1,1,0)」 「同じデータ項目の最高値のカウント数/データ番号のトータルカウント数」を計算するセル、 「=SUM(a1:a5)/COUNT(a1:a5)」 に分かれています。(ここでいう「a1」「c1」「a5」とは例にあるデータ項目とデータ番号のことです。) ■質問2:あるデータ区間に当てはまるデータをカウントする計算 例えば、例のa1を30~70に当てはまった場合、「1」とし、それ以外を「0」とする計算なんですが、今は 「=IF(30<=a1,IF(a1<=70,1,0),0)」 という関数を使っていますが、これ以上簡単にできませんか? 回答よろしくお願いします。

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

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

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

    はじめまして. エクセルデータの値が重複した場合にその数をカウントをしてくれないか調べています. 一つの値に対し,範囲内で同値だった場合のカウントはCOUNT関数を使えば良いということはわかりました. しかし,2つセルの値を一セットで考えたときのカウント方法がわかりません. 例をあげると 授業Aと授業Bを行って,授業を受けた生徒はセル内に1,受けていない生徒は0,病欠は2と記入するとA列とB列にそれぞれ1か0が生徒の人数分入ってます. そして,AとBの授業を受けた生徒(=AとB両方に1が入ってる)の人数は何人かというのをそれぞれ知りたいのです. 要は下のような感じです. A B count 1 1 3 1 1 3 1 2 1 1 0 2 1 1 3 1 0 2 2 1 1 何か良い方法はないでしょうか

  • EXCEL関数で教えてください。

    B列に3行おきに名称があります。 C列にその名称ごと(3行ごと)のロット数 D列にその名称ごと(3行ごと)の値A E列にその名称ごと(3行ごと)の値B が入力されています。 そのデータを名称ごとに1行にまとめる場合の関数を教えてください。

  • エクセル(excel)の計算式(関数)について

    エクセル(excel)の計算式(関数)でよいアイディアがありましたら教えてください。 1行目は項目行です。 セルA1から右に15列=セルO1まで、 a | b | c | d | e | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 と入っています。 2行目からデータとして、 セルA2から右に5列=セルE2まで、 4 | 2 | 2 | 1 | 1 と入力したとします。(データ例(1)) あるいは、 セルA3から右にセルE3まで、 6 | 3 | 0 | 0 | 0 と入力したとします。(データ例(2)) 1つのデータの5個の数字のルールは2つで、 「合計で10以下である。」 「左から順に小さくなるか、同じ数字となる。」 です。 (目的は、) このとき、F列からO列にかけて、 データ例(1)のケースでは、 a | a | a | a | b | b | c | c | d | e データ例(2)のケースでは、 a | a | a | a | a | a | b | b | b | と表示されるように、 つまり、項目行の下にある数だけ、その列の1行目の記号を 1(F列)から右に向かって順に埋めていくような、 F列からO列までの2行目以下に入れる適当な計算式(関数)は ないでしょうか。 拙い説明で申し訳ありません。どなたかよい考えをお持ちの方がいらっしゃいましたらと存じます。 どうぞよろしくお願い致します。

  • Excel関数 入居率の計算

    今回、Excelを使用し入居率(一月単位)の計算を行ないたいと思っておりますが、計算方法が少し分からない部分が有りましたので質問させて頂きます。 セル表記例  A B C D E 1 2 例えば、セルA1に当月の日数 ※ここでは「30」とします。 B1に入居人数 ※ここでは「10」とします。 C1に入居者(日)の記入、D1に退出者(日)を入力するとします。 B2に延べ人数(少数第2まで)、C2・D2には入居率(%)が計算されるようにしたい。 ---------------------------------------------- ここで質問ですが、上記の2列目にあるC2セルに入力する関数を教えて頂きたいと思います。 例えば、入寮者がいる場合、=1/A1*(A1-C1+1) と入力すれば計算できますが、いない(0の場合)ですと本来0%(ゼロ値)で表示したいのですが、1.03% ※(1÷30×(30-0+1))となってしまいますのでIF系の関数で‘C1が0の場合、入居率は0’といった関数にしたいのです。 因みにD2の数式は、=1/A1*D1(表記%) と入力してあります。 D2セルに関しましても、もっと良い関数がある様でしたらご教授宜しく御願い致します。 長文、失礼しました。

  • excel関数 参照したセルで始まるもの(同一ではなく)をカウントしたい

    お世話になっております! 例えば列Aに国名があり、列Bには国名プラス数字が入っています。 ・ A ・ B ・ C 1・アメリカ ・ アメリカ4 2・カナダ ・ アメリカ3 3・ブラジル・ 中国1 4・中国 ・ 中国1 5・・ ブラジル8 (注:中点はセルの区切りを表すもので、実際には付きません) C列にて、B列の、国別の数を数えたい(但し「中国1」のように国名・数字とも同じ場合は1とカウントする)のです。ですので正解はC1(アメリカ)に2、C2(カナダ)に0、C3(ブラジル)に1、C4(中国)に1と表示されるような関数を作りたいのです。 当HPで教えて頂いた知識により、例えばC1に入れる式は =SUMPRODUCT(1/COUNTIF(A:A,A1)) ここまでは思い付いたのですが、そうすると「アメリカ」しかカウントしてくれずゼロになってしまいます。 「A1」と同一ではなく、「A1」で始まるセルをカウントするにはどうしたらいいでしょうか? 長くなりすみません

専門家に質問してみよう