Как использовать постоянные значения в Excel UDF?
Я изо всех сил пытался придумать UDF в Excel. в основном то, что я ищу, это функция, которая будет принимать 2 входных параметра (константа), предоставляемых пользователем, тогда функция вернет одно из значений, предварительно сохраненных в таблице excel. Вот как это будет выглядеть:
месяц Пик выключен
- Январь 320 176
- Февраль 320 128
- Март 368 252
- Апрель 352 128
- Май 305 320
Функция будет выглядеть так: = Часы (февраль, пик), тогда она вернет часы пика в феврале и так далее.
Я ценю всю помощь. большое спасибо
- Пользовательская функция Excel, не вызываемая при обновлении соты
- Удалите слова, которые содержат друг друга, и оставьте длинный
- Проблема с функцией CDate в VBA
- Возврат определенного типа данных в ячейке Excel
- Excel UDF для объединения существующей функции через диапазон
EDIT: Код добавлен как комментарий
Public Function calculateHours(ByVal mo As Variant, ByVal period As Variant) As Integer Dim tablette As Range Set tablette = Worksheets("Hours").Range("U4:V15") Set valueRange = Worksheets("Hours").Range("U4:U15") period = "peak" For Each ref In valueRange mo = WorksheetFunction.VLookup(ref, tablette, 1, 0) Next ref calculateHours = WorksheetFunction.VLookup(mo, tablette, 2, False) End Function
Когда я пытаюсь использовать эту функцию, например in = calculateHours (январь, пик), я получаю последнее значение из таблицы, независимо от того, какие параметры
- Получить данные из CSV в функции Excel
- Почему функция UDF не появляется при наборе текста в ячейке в Excel VBA?
- Пользовательская функция для получения адреса гиперссылки из ячейки
- Многоканальная ссылка VBA UDF
- Как использовать пользовательскую функцию во всех excel без дополнительной операции?
- Преобразование Excel VBA Analysis ToolPack «Фурье» в функцию UDF
- Excel вычисляет формулу с функцией VBA как ошибку, если она не была повторно введена
- Как создать определенные пользователем формулы вместо ввода длинных строк
Рассматривать:
Public Function ReturnVale(period As String, MinMax As String) As Variant months = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December") Off = Array(330, 347, 366, 393, 307, 353, 310, 347, 332, 307, 400, 333) Peak = Array(399, 428, 440, 446, 366, 431, 370, 413, 389, 364, 470, 421) For i = LBound(months) To UBound(months) If period = months(i) Then GoTo done End If Next i ReturnVale = "NOT FOUND" Exit Function done: If MinMax = "Peak" Then ReturnVale = Peak(i) Else ReturnVale = Off(i) End If End Function
Естественно, вы изменили бы инструкции Array () в соответствии с вашими требованиями.