dポイントプレゼントキャンペーン実施中!

例えば、

  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 回答 (2件)

#01です。

補助列を使わないよう、もう一度考えてみました。
A6の式
 =SUMPRODUCT(($A1:$A5>0)*($A1:$A5>=$B1:$B5)*($A1:$A5>=$C1:$C5)*1)/SUMPRODUCT((($A1:$A5>0)+($B1:$B5>0)+($C1:$C5>0)>0)*1)

B6の式
 =SUMPRODUCT(($B1:$B5>$A1:$A5)*($B1:$B5>=$C1:$C5)*1)/SUMPRODUCT((($A1:$A5>0)+($B1:$B5>0)+($C1:$C5>0)>0)*1)

C6の式
 =SUMPRODUCT(($C1:$C5>$B1:$B5)*($C1:$C5>$A1:$A5)*1)/SUMPRODUCT((($A1:$A5>0)+($B1:$B5>0)+($C1:$C5>0)>0)*1)

配列数式で行の配列と列の配列を組み合わせると、二次元配列と見なされてしまうので、無理矢理、行の配列にしたため列毎に式が異なる結果となりました。もう少し美しくしたかったのですがとりあえずここまでとします。
    • good
    • 0
この回答へのお礼

なるほど。よく分かりました。

ありがとうございました。

お礼日時:2007/12/11 20:07

これは補助列を使えば簡単ですが、配列数式だけで実現しようとなるとかなり難しくなります。

ですから補助列を使う方法で回答します。

D列を補助列に使います。D1セルに以下の式を入力して下方向にコピーします。
 =IF(SUM($A1:$C1)>0,MATCH(MAX($A1:$C1),$A1:$C1,0),0)

A6セルの式(A列が最高値である比率)は以下になります
 =COUNTIF($D1:$D5,"="&COLUMN(A1))/COUNTIF($D1:$D5,">0")
A6セルをB6,C6にコピーしてください
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!