Как отфильтровать значения в строке и присвоить их массиву и найти минимум? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь использовать другой подход к коду, который я пытаюсь завершить уже неделю.

Моя цель - создать функцию, чьим вводом является конкретная рабочая таблица. Затем я хочу найти все значения в 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 Ответ

2 голосов
/ 08 июля 2019

Вместо того, чтобы передавать имя рабочего листа, передайте весь диапазон, над которым вы хотите работать.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...