我有一个巨大的文件,我想在列中的所有值排名,其中值“0”将给我排名第一 . 到目前为止没有问题 . 主要的问题是我也有负数,只要我有这些负数,他们将总是排名低于“0”或任何其他数字 .
无论如何要从.Rank函数中排除负数?
我可以给他们一个占位符号,但是这会失败,因为我想在几个“排名”上运行这个代码,我还需要其他计算的“真实”数字 .
删除了我的代码,这基本上是我现在运行的:
Sub test()
lastrow = Worksheets("Sheet").Range("A65536").End(xlUp).Row
Dim Lista As Range
Set Lista = Sheets("Sheet").Range("A1:A100")
For i = 1 To lastrow
irRanking = WorksheetFunction.Rank_Eq(Worksheets("Sheet").Cells(i,1)
.Value, Lista, 1)
Worksheets("Sheet").Cells(i, 4).Value = irRanking
Next i
End Sub
或者还有其他方式这样做,一起跳过.Rank吗?
还必须补充说我知道它可能使用公式,但我真的需要一个VBA解决方案
2 回答
假设您的号码在A2:AXX中
=IF($A2>0,MATCH($A2,SMALL(IF($A$2:$A$XX>0,$A$2:$A$XX),ROW(INDIRECT("1:"&COUNTIF($A$2:$A$XX,">0")))),0),"")
您可以计算负值并将此总数减去排名: