我已经尝试了很多次,但是没有成功。 我要实现的目标:在特定列F:F中找到最小值,然后获取该值所在的行号(或范围地址)。
注意:变量rngMinimumVariableEins
必须重新格式化,因为该值非常小。
Dim rngMinimumVariableEinsWert As Range
Dim strResultValue As String
Dim rngMinimumVariableEins As Range
Set rngMinimumVariableEins = Worksheets("Berechnung").Range("F:F")
rngMinimumVariableEins.NumberFormat = "0.00000000000000000000000000"
strResultValue = Application.WorksheetFunction.Min(rngMinimumVariableEins)
Debug.Print strResultValue
Set rngMinimumVariableEinsWert = rngMinimumVariableEins.Find(strResultValue, LookIn:=xlValues, LookAt:=xlPart)
If rngMinimumVariableEinsWert Is Nothing Then
Debug.Print "No Results"
Else
Debug.Print rngMinimumVariableEinsWert.Row
End If
答案 0 :(得分:1)
Excel工作表的有效浮点数限制为15个数字,您从不不能可靠地在真实数字列中找到一个看起来像数字的字符串。
dim minpos as variant
with Worksheets("Berechnung").range("F:F")
minpos = application.match(application.min(.cells.value2), .cells, 0)
end with
If iserror(minpos) Then
Debug.Print "No Results"
Else
Debug.Print minpos
End If
答案 1 :(得分:0)
这是在范围RowOfMin
中找到最小值的行号RangeToSearch
的方式:
Option Explicit
Public Sub FindMinimum()
Dim RangeToSearch As Range
Set RangeToSearch = Worksheets("Berechnung").Columns("F")
Dim RowOfMin As Long
On Error Resume Next
With Application.WorksheetFunction
RowOfMin = .Match(.Min(RangeToSearch), RangeToSearch, 0)
End With
On Error GoTo 0
If RowOfMin = 0 Then
Debug.Print "No number values in column F"
Else
Debug.Print RowOfMin
End If
End Sub
请注意,必须避免将最小值转换为另一种数据类型(例如,通过将其写入变量),而应将其直接用于.Match
,否则会遇到浮点问题。