Использование VBA в Excel для определения минимального значения из массива именованных диапазонов
У меня есть электронная таблица с несколькими динамическими именованными диапазонами, такими как HR_B1, HR_B10 и т. Д.
Я пытаюсь создать функцию, которая будет находить минимальное значение из того диапазона, который вставлен в функцию, то есть пользовательская функция введет два значения в функцию, скажем, 3 и 6, и найдет минимальное значение в диапазонах от HR_B3 до HR_B6.
Я создал массив и цикл, который хранит имена именованных диапазонов в массиве.
Однако я не могу получить код WorksheetFunction.Min для чтения содержимого массива в виде именованных диапазонов и вывода значения min.
Мой код:
Public Function HR_Min_Range(minval As Integer, maxval As Integer) As Variant
Dim fullrange() As Variant
Dim total_birds As Integer
Dim i As Long
total_birds = (maxval - minval)
ReDim fullrange(total_birds)
For i = 0 To total_birds
fullrange(i) = "HR_B" & (i + minval)
Next i
HR_Min_Range = WorksheetFunction.Min(Sheets("HR_Depths").Range(fullrange))
End Function
2 ответа
Попробуй как,
Option Explicit
Public Function HR_Min_Range(minval As Integer, maxval As Integer) As Variant
Dim i As Long
HR_Min_Range = Worksheets("HR_Depths").Range("HR_B" & minval).Cells(1)
For i = minval To maxval
HR_Min_Range = Application.Min(HR_Min_Range, Worksheets("HR_Depths").Range("HR_B" & i))
Next i
End Function
Правильный синтаксис выглядит так:
Worksheetfunction.min([named])
или же
WorksheetFunction.min(activesheet.range("named"))
или же
WorksheetFunction.min(tabelle1.Range("named"))
или же
Worksheetfunction.Min(worksheets("Tabelle1").range("named"))
или же
Worksheetfunction.Min(tabelle1.[named])
или же
Worksheetfunction.Min(worksheets("Tabelle1").[named])
Не стесняйтесь выбирать что-нибудь:) Это в случае, если рабочий лист с подписью и кодовым именем Tabelle1
и названный диапазон назван named
,
В вашем случае вы не ставите fullrange
в скобках или в [
, Любой из этих двух вариантов должен работать.