- 帖子
- 1018
- 主題
- 15
- 精華
- 0
- 積分
- 1058
- 點名
- 0
- 作業系統
- win7 32bit
- 軟體版本
- Office 2016 64-bit
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2012-5-9
- 最後登錄
- 2022-9-28
|
2#
發表於 2014-1-13 20:24
| 只看該作者
本帖最後由 stillfish00 於 2014-1-13 20:36 編輯
回復 1# yeh6712
用VBA時,因為Rank第二參數好像不支援array形式,所以像下面這樣囉嗦了一點
物品欄也可以不用數字- Sub TEST()
- Dim rngTest As Range, rngB As Range, ar, i
-
- With ActiveSheet
- Set rngTest = .Range(.[A2], .Cells(.Rows.Count, "A").End(xlUp)).Offset(, 2)
- Set rngB = .Range(.[B2], .Cells(.Rows.Count, "B").End(xlUp))
-
- Randomize Now
- For i = 1 To rngTest.Count
- rngTest(i).Value = Rnd
- Next
-
- ReDim ar(1 To rngTest.Count)
- For i = LBound(ar) To UBound(ar)
- ar(i) = Application.WorksheetFunction.Rank(rngTest(i).Value, rngTest)
- ar(i) = IIf(ar(i) > rngB.Count, "", rngB(ar(i)))
- Next
-
- rngTest.Value = Application.Transpose(ar)
- End With
- End Sub
複製代碼 |
|