Это скорее доказательство концептуальной функции, чем практическая. Вам необходимо использовать тип Variant для необязательных параметров, если вы не хотите устанавливать значение по умолчанию и вместо этого использовать функцию «IsMissing».
Требуется диапазон Excel, такой как A1: A5 или A1: B5, и 2 дополнительных параметра (мин. И макс.). Он выдаст строку, сообщающую вам новые значения диапазона.
В качестве теста положите значения 1,2,3,4,5 в A1 - A5. Теперь, в B1, напишите это:
=CheckArray(A1:A5,3)
Вы должны получить результат "Диапазон теперь: 3, 3, 3, 4, 5", так как вы не дали макс.
Вы также можете сделать:
=CheckArray(A1:A5,,3)
И это вернет «Диапазон теперь: 1, 2, 3, 3, 3»
Function CheckArray(ByVal cell_range As range, _
Optional ByVal min_value As Variant, _
Optional ByVal max_value As Variant)
Dim i As Long, j As Long
Dim vArray As Variant
Dim test As String
vArray = cell_range.Value
For i = 1 To UBound(vArray, 1)
For j = 1 To UBound(vArray, 2)
'Check the min. value
If IsMissing(min_value) = False Then
If vArray(i, j) < min_value Then
vArray(i, j) = min_value
End If
End If
'Check the max value
If IsMissing(max_value) = False Then
If vArray(i, j) > max_value Then
vArray(i, j) = max_value
End If
End If
Next
Next
' The function is done. The below is just to spit out a test result.
For i = 1 To UBound(vArray, 1)
For j = 1 To UBound(vArray, 2)
test = test & (", " & vArray(i, j))
Next
Next
CheckArray = "The range is now: " & vbLf & Right(test, Len(test) - 2)
End Function