VBA:如何确定一行中的最低值的列?

这个子程序检查每一行的最低值。 我想知道这个值是在哪一列。 我如何继续? 这是我到目前为止:

Sub LowCol() Dim iAnz As Long Dim myrange As Range Dim rCell As Range Dim iLevel As Long Dim i As Long Dim j As Long Dim iPos As Long Dim dMin As Double iAnz = Worksheets("v1").Cells(6, 3).Value 'amount of columns iLevel = Worksheets("b1").Cells(2, 2).Value 'amount of rows For i = 0 To iLevel Set myrange = Worksheets("b1").Range(Cells(5 + i, 2 + iAnz + 1), Cells(5 + i, 2 + iAnz + iAnz + 1)) dMin = Application.WorksheetFunction.Min(myrange) Set rCell = myrange.Find(What:=dMin, LookIn:=xlValues, _ LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False, SearchFormat:=False) iPos = CLng(rCell.Column) 'this line is obviously not working. How to fix? Worksheets("b1").Cells(5 + i, 2 + iAnz + iAnz + 1).Value = iPos Next i End Sub 

这并不像Min函数那么快,但除非你使用大型数据集,否则不会有太大的区别。

 Function getMinValueColumn(Target As Range) As Long Dim r As Range, rMin As Range If Target Is Nothing Then Exit Function For Each r In Target If r.Value <> vbNullString Then If rMin Is Nothing Then Set rMin = r If r.Value < rMin.Value Then Set rMin = r End If Next If Not rMin Is Nothing Then getMinValueColumn = rMin.Column End Function 

您不需要VBA获取MIN值的列数。 只需使用公式与MATCH ,如:

 =MATCH(MIN(A1:G1);A1:G1;0)