问题:
有一个双值范围。我想得到最大值的地址。 我尝试使用匹配功能,但它无法比较双打(给出错误的结果),而且我的范围没有被排序。
有一些丑陋的解决方案(例如我可以将我的数字乘以10000,如果我想要5位精度,那么得到整数部分并进行比较,但是它超过20000行非常慢)也许还有更多优雅的解决方案。
谢谢:)
示例数据:这些是Debug.Print之后的数字
B 7.59999999999934E-02
C 7.00000000000074E-02
D 0.335000000000008
E 8.19999999999936E-02
F 8.49999999999937E-02
G 7.39999999999981E-02
H 5.49999999999926E-02
I 0.070999999999998
J 0.165000000000006
K 7.59999999999934E-02
答案 0 :(得分:0)
为什么不迭代你的范围并在下一个单元格double值更大时更改变量?完成此范围后,使用find返回单元格行和列。见下文
Dim i as Variant
For Each i In Worksheets("yourWorkSheet").Range(Range("youStartCell"), Range("yourStartCell").End(xlDown)).Cells
If i.Offset(-1) < i Then
i = i.value
End if
Next
应该看起来像这样。需要在循环中处理第一行的情况,但如果我这样做你将没有工作要做。
答案 1 :(得分:0)
This is my final solution:
'Find max and its address in range
Public Function maxAddress(rng As Range) As DoubleLong
Dim cell As Range
For Each cell In rng
If IsNumeric(cell.Value2) Then
If cell.Value2 > maxAddress.db Then
maxAddress.db = cell.Value2
maxAddress.lg = cell.Row
End If
End If
Next cell
End Function
where is defined a type:
Public Type DoubleLong
db As Double
lg As Long
End Type