野球のボードゲームStrat-O-Maticのシーズンの結果をExcelスプレッドシート(Excel 2011 for Mac)に保存しています。シートにはリーグスケジュールとリーグ順位が記載されています。ゲームのスコアを入力するたびに、そのゲームに参加したチームの新しい勝敗記録を反映するように順位が更新されるように、すでに設定しています。
ゲームのスコアを入力した後、勝率で手動で並べ替えるのではなく、順位を自動的に並べ替えたいと思います。それが違いを生む場合、実際には4つの異なる順位表があり、このリーグの4つの部門ごとに1つずつあります。スプレッドシートが更新されるたびに、勝率で個別に並べ替える必要があります。
どんな助けでもありがたいです、ありがとう。
テーブルを並べ替えるには、VBAスクリプトを作成する必要があります。一般的に、セル内の数式は他のセルの内容に影響を与えることはできません(正確には、他のセルの数式。他のセルにそれを参照する数式が含まれている場合、1つのセルは他のセルの値を変更できます)。
回避策として、ソーステーブル(つまりスケジュール)を更新した後に宛先テーブル(つまり順位)を並べ替えるときに、間接的に並べ替えを行うことができます。
VLOOKUP
によって検索されるようにします。ステップ1
ランキングを最初の列(つまり、この例では列A)にし、次のような式を作成します。
A | B | C
--------------------------------------------------+------+-------------------
Rank | Team | Winning Percentage
=COUNTIF(C$2:C$9,">"&C2)+1 | A | 0.05
=COUNTIF(C$2:C$9,">"&C3)+COUNTIF(C$2:C2, C3)+1 | B | 0.99
=COUNTIF(C$2:C$9,">"&C4)+COUNTIF(C$2:C3, C4)+1 | C | 0.81
=COUNTIF(C$2:C$9,">"&C5)+COUNTIF(C$2:C4, C5)+1 | D | 0.92
=COUNTIF(C$2:C$9,">"&C6)+COUNTIF(C$2:C5, C6)+1 | E | 0.54
=COUNTIF(C$2:C$9,">"&C7)+COUNTIF(C$2:C6, C7)+1 | F | 0.15
=COUNTIF(C$2:C$9,">"&C8)+COUNTIF(C$2:C7, C8)+1 | G | 0.15
=COUNTIF(C$2:C$9,">"&C9)+COUNTIF(C$2:C8, C9)+1 | H | 0.40
自分で範囲を更新してください。最初のCOUNTIF
は、勝率がそれより高いチームの数をカウントし、2番目のCOUNTIF
は、それと関係のあるチームの数をカウントします。重複したランキングがVLOOKUP
を混乱させたくないので、これは重要です。
たとえば、上記の例は次のようになります。
Rank | Team | Winning Percentage
8 | A | 5%
1 | B | 99%
3 | C | 81%
2 | D | 92%
4 | E | 53%
6 | F | 15%
7 | G | 15%
5 | H | 40%
チームFとチームGの勝率が同じであることがわかるように、それらには異なるランキングが割り当てられています。
ステップ2
宛先テーブル(つまり、順位表)で、多くのVLOOKUP
を使用して更新する必要があります。
A | B | C
-----+---------------------------------------------+------------------------------------------
Rank | Team | Winning percentage
1 | =VLOOKUP($A2,Schedule!$A$1:$C$9,2,FALSE) | =VLOOKUP($A2,Schedule!$A$1:$C$9,3,FALSE)
2 | =VLOOKUP($A3,Schedule!$A$1:$C$9,2,FALSE) | =VLOOKUP($A3,Schedule!$A$1:$C$9,3,FALSE)
3 | =VLOOKUP($A4,Schedule!$A$1:$C$9,2,FALSE) | =VLOOKUP($A4,Schedule!$A$1:$C$9,3,FALSE)
4 | =VLOOKUP($A5,Schedule!$A$1:$C$9,2,FALSE) | =VLOOKUP($A5,Schedule!$A$1:$C$9,3,FALSE)
5 | =VLOOKUP($A6,Schedule!$A$1:$C$9,2,FALSE) | =VLOOKUP($A6,Schedule!$A$1:$C$9,3,FALSE)
6 | =VLOOKUP($A7,Schedule!$A$1:$C$9,2,FALSE) | =VLOOKUP($A7,Schedule!$A$1:$C$9,3,FALSE)
7 | =VLOOKUP($A8,Schedule!$A$1:$C$9,2,FALSE) | =VLOOKUP($A8,Schedule!$A$1:$C$9,3,FALSE)
8 | =VLOOKUP($A9,Schedule!$A$1:$C$9,2,FALSE) | =VLOOKUP($A9,Schedule!$A$1:$C$9,3,FALSE)
そして、次のような結果が得られます。
Rank | Team | Winning percentage
1 | B | 99%
2 | D | 92%
3 | C | 81%
4 | E | 53%
5 | H | 40%
6 | F | 15%
7 | G | 15%
8 | A | 5%