如何在一行中筛选出值并将其分配给数组并找到最小值?

时间:2019-07-08 13:48:46

标签: excel vba

我正在尝试对已经完成一个星期的代码使用另一种方法。

我的目标是创建一个函数,其输入为特定的工作表。然后,我想在此工作表的第11行中找到所有介于-100和100之间的值。然后,我想将这些值分配给数组。最后,我希望函数的输出为这些数字之间的最小值。

任何帮助将不胜感激。

这是我到目前为止的代码,但是由于某种原因,它仅返回值100。

Function Loss(worksheet1 As Worksheet) As Double

Dim min As Double
Dim i As Integer
Dim myRight As Long, Colcount As Long



min = 100

With worksheet1
    myRight = .Cells(1, .Columns.Count).End(xlToLeft).Column

    For Colcount = 4 To myRight

        If (.Cells(11, Colcount).Value < min) And (Abs(.Cells(11, Colcount).Value) <= 100) Then
            min = .Cells(11, Colcount).Value
        End If
    Next Colcount
End With


Loss = min

End Function```

1 个答案:

答案 0 :(得分:2)

传递您要处理的整个范围,而不是传递工作表的名称。

Option Explicit

Function Loss(sRng As Range)

Dim aCell As Range, minVal As Double,colNum as Long
minVal = 100
colNum = 0

For Each aCell In sRng

If IsNumeric(aCell.Value) Then
    If aCell.Value < minVal And Abs(aCell.Value) <= 100 Then 
        minVal = aCell.Value
        colNum = aCell.Column
    End if
End If

Next aCell

Loss = minVal

End Function

enter image description here