查找单元格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