web-dev-qa-db-ja.com

Excel:範囲内のMAX値の数を数える

スコアシートを保持するためにExcel2003(企業ポリシーによりバージョンが制限されています)を使用しています。

_     A       B     C     D
1  Round | Rita | Sue | Bob
   ------+------+-----+-----
2    1   |   5  |  3  |  4
3    2   |   2  |  2  |  5
4    3   |   3  |  1  |  3
_

私が望んでいるのは、一人一人が合計で勝ちラウンドを持ち、両方に同点が与えられることです。したがって、行全体は次のようになります。

_   -------+------+-----+-----
 5  Total |   2  |  0  |  2
_

これは、1つの数式で合計で可能ですか?

CountIfMaxの組み合わせを試しましたが、目的の出力が得られません。

私の他の唯一の解決策は、スコア列の個別のセットを用意することです。たとえば、ラウンドごとにIF(B2=MAX(B2:D2),1,0)を作成し、各人についてこれらを合計します。

EDIT:明確にするために、列を追加するソリューションがあります。私は、式(e)を既存の各人物列に追加して、余分な列を追加せずに合計を計算できるソリューションを求めています。

5
Shevek

D5にコピーされたB5でこの式を試してみてください。これにより、_Rita, Sue and Bob too_の合計が得られます。

=SUMPRODUCT((SUBTOTAL(4,OFFSET($B$2:$D$4,ROW($B$2:$D$4)-ROW(B$2),0,1))=B2:B4)+0)

このソリューションは、より広い範囲に簡単に拡張できます。つまり、より多くの行または列を使用できます。

[OFFSETは各行を個別の範囲として抽出し、最初の引数4を指定したSUBTOTALは各範囲のMAXを検索します.....]

3
barry houdini

式「」を使用して、BOBの横に新しい列を追加します

=MAX(B2,C2,D2)

合計セルには、次のように入力します

=SUM(IF(B2=$E2,1,0),IF(B3=$E3,1,0),IF(B4=$E4,1,0))

[〜#〜] note [〜#〜]:すべての数式は、セルRoundA1であるという仮定に基づいています。
(これもOffice 2010で試したので、2003年に正確な機能が利用できるかどうかはわかりません。

[〜#〜]編集[〜#〜]
余分な列が必要ない場合は、この方法で2つの数式を組み合わせることができます

=SUM(IF(B2=MAX(B2,C2,D2),1,0),IF(B3=MAX(B3,C3,D3),1,0), and so on )
1
Shekhar