• ベストアンサー

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」となります。 このカウントの総数を一つのセルで計算する方法を教えてください。 関数は詳しくないのでまた質問するかもしれませんが、解説もよろしくお願いします。 回答よろしくお願いします。

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

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

一つにセルという条件というのはよくわかりませんが、計算用の行列を使います。例えば、与えられた表がA1から始まっているとします。 F2に「=IF(B2=MAX($B2:$D2),1,0)」G2に「=IF(C2=MAX($B2:$D2),1,0)」、H2に「=IF(D2=MAX($B2:$D2),1,0)」と入力します。式の意味は「そのセルが最大値と等しいのなら、1,違っているのなら0を表示する」ということです。「$」は絶対セルという意味です。たの列にコピーしても列は変わりません。その3列を下4行分コピーします。これで計算用の部分は終わり。E2に「=SUM(F2:H6)」と入力すれば8と表示されます。

miya_HN
質問者

お礼

確かにそれぞれ行に計算式を出して合計するとカウントの総数が出ますね。 しかし、一つのセルで計算するという条件に当てはまっていないのでちょっと。 ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

=MAX(A1:C1)*COUNTIF(A1:C1,MAX(A1:C1))+MAX(A2:C2)*COUNTIF(A2:C2,MAX(A2:C2))+MAX(A3:C3)*COUNTIF(A3:C3,MAX(A3:C3))+MAX(A4:C4)*COUNTIF(A4:C4,MAX(A4:C4))+MAX(A5:C5)*COUNTIF(A5:C5,MAX(A5:C5)) これでいけるかと^^ あまりスマートではないのでほかの方のご回答を待った方がいいかと

miya_HN
質問者

お礼

なるほど。行ずつの最高値をカウントしてるんですね。 しかし、実際のデータでは1000(1から5の部分)を超えることもあるので残念ながら使えません; ありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 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以上になることもある ということです。 関数は詳しくないのでまた質問するかもしれませんが、解説もよろしくお願いします。 回答よろしくお願いします。

  • 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」の部分)、このような方法はあるでしょうか? 回答よろしくお願いします。

  • 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)」 という関数を使っていますが、これ以上簡単にできませんか? 回答よろしくお願いします。

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

    例えば、以下のようなデータがあります。 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)の計算式(関数)について

    エクセル(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関数:「0」を除いた標準偏差の計算方法

    例えば、下のようにセル「A1」が「1」、「A2」が「0」というようにデータがあったとします。これらのデータの中から「0」を除いた標準偏差(母集団、データ総数の)を一つのセルで計算したいのですがこのような計算方法があったら教えてください。 あまり、関数を知らないので解説もよろしくお願いします。   A 1 1 2 0 3 2 4 5 5 4 回答よろしくお願いします。

  • Excel関数:「0」を除いた標準偏差の計算方法2

    前に質問したのですが条件を書いていなかったので改めて質問します。回答してくれた方、申し訳ありませんでした。 例えば、下のようにセル「A1」が「1」、「A2」が「0」というようにデータがあったとします。これらのデータの中から「0」を除いた標準偏差(母集団、データ総数の)を求める計算方法があったら教えてください。 条件は、 1.一つのセルで計算する 2.「0」を変えない 3.データ範囲「A1:A5」を変えない 4.純粋に関数のみで計算する です。 あまり、関数を知らないので解説もよろしくお願いします。   A 1 1 2 0 3 2 4 5 5 4 回答よろしくお願いします。

  • Excel関数orVBAでの複数条件を満たすカウント方法

    以下のようなデータ表があります。 (お手数ですが、以下半角スペースをタブ(\t)に変換し、エクセルのA1に貼り付けてください。) 連番 物品番号 記入日 状態 *状態1 *状態2 (状態) (セル色コード) 1 A0001 10/30 - - - 配送済み 38 2 A0002 10/30 - - - 配送済み 38 3 B008C 11/09 - - - 配送待ち 6 4 Z9800 5/12 - - - 未着手 2 5 A0001 11/09 - - - 配送待ち 6 6 Q9999 10/30 - - - 配送待ち 6 7 C5520 5/12 - - - 未着手 2 8 B008C 11/09 - - - 未着手 2 9 Z9800 5/12 - - - 未着手 2 10 A0001 11/03 - - - 未着手 2 11 Q9999 11/03 - - - 未着手 2 12 C5520 11/03 - - - 未着手 2 A列からF列までが表となっており、セルに対して色が塗ってあります。 そのセル色内容を関数で表示したものがH列になります。 なお、G列は当質問用の補足欄となります。 A~F列のセル色と、G列及びH列は対になっており、この表の場合ですとエクセル行2・3行目はピンク色、4・6・7行目は黄色にセルが塗られております。 ここで、11行目(連番でいくと10)のデータに対し、G列(状態)の 数をカウントしたいのです。(この場合ですと、配送済みのものが1件、配送待ちのものが1件となります。) E列の「*状態(1)」の箇所に配送済みの件数を、F列の「*状態(2)」の箇所に配送待ちの件数を入れたいのですが、どのようにしたら良いでしょうか? 注)この時データの状態を示す方法として、C列のセルの色コードを関数で自動参照するものとします。(関数はVBAで作成済み。)

  • EXCEL関数について

      A   B   C   D   E   1200 1500 1000  2500   =(A1*B1)/C1 1  ・  ・  ・   ・   ・ 2  ・  ・  ・   ・   ・ 20                =SUM(E1:E19) 上のように、E20セルに行ごとの計算結果の合計を出す式がありますが、行ごとの計算を一度に行う関数はないでしょうか?乗算だけでしたらSumproduct関数で出来ますが、除算が入った場合の関数が分かりません。ご教授を宜しくお願いします。

  • 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」で始まるセルをカウントするにはどうしたらいいでしょうか? 長くなりすみません

専門家に質問してみよう