2016-09-06 12 views
0

で均一なランキングのために私はVBAコードは、Excel

Sub RankArray() 
    With Range("Distribution").Offset(0, 1) 
     .FormulaArray = "=RANK(Distribution,Distribution)" 
    End With 
End Sub 

をランク付けするため、このVBAコードを書きましたが、それは次のように私の結果を与えている:いくつかのランクが繰り返し

を取得しているので、

順に
1 2 3 4 4 6 7 7 7 10 11 12 12 14 

ありません

ランク付けのための唯一のVBAコードではないので、私の結果は以下のようになります:

1 2 3 4 4 5 6 7 7 7 8 9 10 10 11 12 
+1

正しい答えが得られました。あなたは2×4位を持っているので、定義上、5位はありません。同様に、3位が7位なので、8位または9位はありません。これは数学的な原則であり、Excelではなく、 – Clauric

+0

あなたの質問が正しく理解されていて、それは決して明確ではないので、関数をドキュメントに挿入するのではなく、VBAで 'Rank'関数を使う方法を知りたい結果?その場合は、WorksheetFunction.Rankメソッドを見てください。https://msdn.microsoft.com/en-us/library/office/ff840358.aspx – Miqi180

答えて

1

この種のランク付けには、別の式が必要です。次のようなものがあります。

Sub RankArray() 
    With Range("Distribution").Offset(0, 1) 
     .Resize(1).FormulaArray = "=SUM(--ISNUMBER(MATCH(ROW(INDIRECT(""1:""&RANK(R[0]C[-1],Distribution))),RANK(Distribution,Distribution),0)))" 
     .FillDown 
    End With 
End Sub