[[20071022151000]] 『マイナス数値のRANK表示』(よしあす) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マイナス数値のRANK表示』(よしあす)
パソコン初心者です。増減数の多い順位にRANK表示を行いたいのですが、マイナス数値がある場合マイナス数値が下位にRANKされてしまいます。プラス、マイナス関係なく増減数の多い順にRANK表示させたいのですが。宜しくお願いいたします。
  


 =ABS(A1-B1)のようにしますと、差の絶対値が得られます。 (6UP)

RANK関数におけるマイナス数値は、絶対値に変換しないと使うことができないのでしょうか.

 ご希望が、差異の絶対値の順位ということでは、ないでしょうか? (6UP)


すみませんこちらの説明不足かもしれません。再度、ご回答お願いします。
(例)
 24
 34
−58
 45
−68
RANK(A1,$A1$:$A5$,0)と入力しますと下記のRANKとなってしまいます。
 24(3)
 34(2)
−58(4)
 45(1)
−68(5)
実際は、下記の回答が得たいのです。
 24(5)
 34(4)
−58(2)
 45(3)
−68(1)


 以下のように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.