Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


36107 / 76732 ←次へ | 前へ→

【45810】Re:どのようにやるのでしょうか?
発言  ichinose  - 07/1/14(日) 22:56 -

引用なし
パスワード
   ▼KAI さん:
こんばんは。
Sheet1のデータは、全て数値であるという条件です。

>以下のシート(Sheet1)の場合、大きい順に(Sheet2)のA列にB4.A3.D2…と書くことはできるのでしょうか??
>また、できるのならば、同得点の場合の処理もどうにかお願いします。
>
>
>(Sheet1)           (Sheet2)
>  A  B  C  D  E        A  B  C
>1 100 123 321 566 129     1   B4
>2 578 654 156 846 345  ⇒ 2   A3
>3 875 659 800 124 651     3   D2
>4 758 986 425 154 445     4   C3

標準モジュールに
'====================================================
Sub test()
  Dim ans As Variant
  Dim rng As Range
  Dim rr As Long
  Dim r As Long, c As Long
  Set rng = Worksheets("sheet1").Range("a1:e4")
  ans = Evaluate("if(" & rng.Address(, , , True) & "<>""""," & _
         "rank(" & rng.Address(, , , True) & "," & rng.Address(, , , True) & "))")
  With Worksheets("sheet2")
    .Range("a1:a" & rng.Count).Value = ""
    For r = LBound(ans, 1) To UBound(ans, 1)
     For c = LBound(ans, 2) To UBound(ans, 2)
       rr = ans(r, c)
       Do Until .Cells(rr, 1).Value = ""
        rr = rr + 1
        Loop
       .Cells(rr, 1).Value = .Cells(r, c).Address
       Next
     Next
    End With
End Sub

試してみて下さい
1 hits

【45807】どのようにやるのでしょうか? KAI 07/1/14(日) 22:07 質問
【45808】Re:どのようにやるのでしょうか? KAI 07/1/14(日) 22:10 発言
【45812】Re:どのようにやるのでしょうか? Kein 07/1/14(日) 23:42 回答
【45810】Re:どのようにやるのでしょうか? ichinose 07/1/14(日) 22:56 発言
【45874】Re:どのようにやるのでしょうか? KAI 07/1/16(火) 20:51 お礼

36107 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free