3

グループ、数値、ランクの3つの列(これと同様) 持つExcelファイルがあるとします。

各グループ内で、彼は値を最小から最大にランク付けする必要があります。値が一致する場合、それらは同じランキングを取得します。したがって、値が最大の場合、ランクは1になります。2番目に大きい場合、ランクは2になります。

次に、このプロセスは2番目の値のセットに対して再開する必要があります。このタスクはどのように達成できますか?配列/バブルソートを使用しているのではないでしょうか?—しかし、それが正しいアプローチかどうかはわかりません。

4

4 に答える 4

1

私はあなたが探している解決策を持っていると思います-しかし、3つの列でそれをしなければなりませんでした.

列 A にグループがあり、ボリューム B にスコアがあるとします。最初にグループで並べ替え、次にスコアで並べ替えます。

次に、前述の数式を列 C2 に入力します。

=SUMPRODUCT(($A$2:$B$25=A2)*($B$2:$B$25>B2))+1

次に、それを自動入力します。

次に、セル D2 にカウンターを配置します。

=IF(COUNTIFS($A$2:A2,A2,$B$2:B2,B2)=1,0,1)

次に、それを自動入力します。

次に、この方程式をセル E2 に入力します。

=IF(C2<>C1,C2-SUMIF($A$2:A2,A2,$D$2:$D$25),C2)

次に、それを自動入力します。

これを行うためのより簡単な/より良い方法があるかもしれません-しかし、これは間違いなくあなたが探しているものをあなたに与えるでしょう:

ランキングソリューション

于 2012-07-23T21:21:16.850 に答える
0

1つの追加の列で問題を解決しました:

「C」列では、次の式を使用して、指定されたグループの数の頻度の逆数を使用する必要があります(値が行2から行10に移動すると仮定)。

=1/SUM(IF(($A$2:$A$10=A2)*($B$2:$B$10=B2);1;0))

次に、次の列(D)で、Cの値を合計することにより、必要なランキングを取得できます。

=SUM(IF(($B$2:$B$10>B2)*($A$2:$A$10=A2);$C$2:$C$10;0))+1

どちらの数式も配列数式(数式?)です。Excelに入力するときは、Shift + Ctrl+Enterを押す必要があります。

表としてフォーマット

データをテーブルとしてフォーマットする場合、(Excel 2010では)次の数式を使用できます。

=1/SUM(IF(([Group]=[@Group])*([Number]=[@Number]);1;0))
=SUM(IF(([Number]>[@Number])*([Group]=[@Group]);[Freq];0))+1

(設定によっては、セミコロンをコンマに置き換える必要がある場合があります。)

于 2012-07-21T08:30:19.407 に答える
0

(あなたのコメントに気づきましたが、すでに次のように書いているので、この質問の将来の閲覧者にとって役立つかもしれないので、アップロードすることもできます)

=SUMPRODUCT(($A$2:$A$18=A2)*($B$2:$B$18>B2))+1.

ここに画像の説明を入力

于 2012-07-21T09:56:40.647 に答える
0

並べ替えの最初のレベルがグループ列 (最小から最大) であり、並べ替えの 2 番目のレベルが値列 (最大から最小) であるカスタム並べ替えを行いました。次に、ランク列で式を使用しました

=IF(B2=B1,C1,COUNTIF($A$2:A2,A2))

ここで、A2 は最初の行です。それから私はそれをずっと下にドラッグしました。

これにより、ランクが表示されます。また、完了したときと同じように、すべてが画面上で視覚的に並べ替えられます。

于 2012-07-23T02:48:53.870 に答える