查找单元格Excel VBA中的最低值

我是新来的。 我正在尝试在内部有多个值的单元格中查找最低值。 例如,

48
44.50
41.00
37.50

我试图find37.50。 应该是什么代码呢?

谢谢

根据您发布的示例:

Sub FindMin() Dim s As String, CH As String Dim wf As WorksheetFunction Dim bry() As Double Set wf = Application.WorksheetFunction s = ActiveCell.Text CH = Chr(10) ary = Split(s, CH) ReDim bry(LBound(ary) To UBound(ary)) For i = LBound(ary) To UBound(ary) bry(i) = CDbl(ary(i)) Next i MsgBox wf.Min(bry) End Sub 

在这里输入图像说明

这假定在单元格的字段之间有一个硬返回( ASCII-10 )。

编辑#1:

为了使它成为一个function, 删除子和replace

 Public Function FindMin(r As Range) As Variant Dim s As String, CH As String Dim wf As WorksheetFunction Dim bry() As Double Set wf = Application.WorksheetFunction s = r.Text CH = Chr(10) ary = Split(s, CH) ReDim bry(LBound(ary) To UBound(ary)) For i = LBound(ary) To UBound(ary) bry(i) = CDbl(ary(i)) Next i FindMin = wf.Min(bry) End Function 

编辑#2:

根据您的评论,这里是一个input输出的例子:

在这里输入图像描述

请注意,所有值都位于单个单元格中,并且值由硬回归而不是空格分隔。

通过代码与相同的单元格和“”作为分隔符打破

 temp = Range("A1").Value temp = Split(temp, " ") Low = CInt(temp(0)) For i = 0 To UBound(temp) - 1 If CInt(temp(i)) < Low Then Low = CInt(temp(i)) Next Range("a2").Value = Low 

如果他们在一个范围内,你可以使用一个公式

 =MIN(A1:A4) 

这个问题非常接近之前提出的问题: VBA / EXCEL:从一个单元格中提取包含多个逗号的值的数字

如果您从该答案中获取代码,并将逗号replace为分隔值,则可以在VBA中访问它们。 然后你可以编写代码来find最小值。

您可以创build一个macros来分割您select的每个单元格的值,然后检查最高值。 并快速检查以确保您没有parsing所有空行(当您select一列时)。

下面的macros将在下一列中设置最高值。

 Sub lowest() Dim Values As Variant Dim LowestValue As Double Dim a As Range Set a = Selection For Each Row In a.Rows For Each Cell In Row.Cells LowestValue = -1 Values = Split(Cell.Value, Chr(10)) For Each Value In Values If LowestValue = -1 Then LowestValue = Value ElseIf Value < LowestValue Then LowestValue = Value End If Next Cells(Cell.Row, Cell.Column + 1).Value = LowestValue If IsEmpty(Cell.Value) Then GoTo EndLoop Next Cell Next Row EndLoop: End Sub