[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『マイナス数値のRANK表示』(よしあす)
=ABS(A1-B1)のようにしますと、差の絶対値が得られます。 (6UP)
ご希望が、差異の絶対値の順位ということでは、ないでしょうか? (6UP)
以下のようにB1に=ABS(A1)、C1に=RANK(B1,B$1:B$5)として、 5行目までフィルドラッグです。 RANK(数値, 範囲, 順序)は、範囲に配列を適応させる訳には行かないので、 作業列を配置しています。 (6UP)
A B C 1 24 24 5 2 34 34 4 3 -58 58 2 4 45 45 3 5 -68 68 1 ↑ ↑ =RANK(B1,B$1:B$5) =ABS(A1)
作業列を使いたくなければこんな関数になりますワ。
Alt+F11→挿入→標準モジュール
下のコードをコピペします。
戻ってB1からB5を選択し、=Mix_rank(a1:a5) Ctrl+Shift+Enterで確定でいけます。
今時のIDネームは花の弥太郎(弥太郎)
'----------------------
Function Mix_rank(adrs As Range)
Dim i As Long, b As Integer, u As Integer, t As Integer, tbl, x
tbl = adrs.Value
For i = 1 To UBound(tbl, 1)
If tbl(i, 1) < 0 Then tbl(i, 1) = tbl(i, 1) * -1
Next i
ReDim x(1 To UBound(tbl, 1), 1 To 1)
For i = 1 To UBound(tbl, 1)
m = Application.Match(WorksheetFunction.Large(tbl, i), tbl, 0)
x(m, 1) = i
Next
For i = 1 To UBound(x, 1)
If x(i, 1) = 0 Then
b = WorksheetFunction.CountIf(adrs, tbl(i, 1)) + _
WorksheetFunction.CountIf(adrs, tbl(i, 1) * -1)
data = tbl(i, 1)
m = Application.Match(data, tbl, 0)
u = x(m, 1) - (b - 1)
For t = 1 To UBound(x, 1)
If data = tbl(t, 1) Then
x(t, 1) = u
b = b - 1
tbl(t, 1) = Empty
If b = 0 Then Exit For
End If
Next t
End If
Next
Mix_rank = x
End Function
配列数式では、例えば、このようになります。 (6UP)
A B 1 24 5 2 34 4 3 -58 2 4 45 3 5 -68 1 ↑ =COUNT(IF(ABS(A1)<ABS(A$1:A$5),),)としてCtrl+Shift+Enter
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.