Excel UDF для объединения существующей функции через диапазон
Я пытаюсь собрать определенную пользователем функцию, которая позволит функциям excel работать над диапазоном, а не только с одной ячейкой. Пример будет =isnumber(value)
что функция не будет работать в диапазоне ячеек, чтобы использовать ее для проверки диапазона, который мне нужно будет повторить для каждой ячейки в диапазоне.
Кто-нибудь пытался собрать что-то вдоль линий =RangeFunct(range, function,[boolean])
? Это будет делать что-то вдоль линий цикла через каждую ячейку диапазона в существующую функцию и останавливаться на логическом значении, которое не соответствует выбранному. Любая помощь по настройке этого кода будет оценена по достоинству.
- Многоканальная ссылка VBA UDF
- Нужна помощь в создании пользовательской функции в Excel с помощью VBA
- Автоматически показывать, какие переменные необходимы при использовании публичной функции vba в excel
- Пользовательская функция для получения адреса гиперссылки из ячейки
- excel передать содержимое ячейки в udf как аргумент диапазона
- Почему функция UDF не появляется при наборе текста в ячейке в Excel VBA?
- Как создать определенные пользователем формулы вместо ввода длинных строк
- Как использовать пользовательскую функцию во всех excel без дополнительной операции?
- Возврат определенного типа данных в ячейке Excel
- Проблема с функцией CDate в VBA
- Как использовать постоянные значения в Excel UDF?
- Как я могу извлечь конкретные буквы и цифры из текстовой строки через VBA или excel Formula
- Функция непрерывной суммы
Например: =RangeFunc(A1:A10,"ISNUMBER")
Function RangeFunc(rng As Range, funct As String) As Boolean Dim c As Range Dim rv As Boolean rv = True For Each c In rng.Cells If rng.Parent.Evaluate(funct & "(" & c.Address() & ")") = False Then rv = False Exit For End If Next c RangeFunc = rv End Function
Вместо этого вы всегда можете использовать формулу массива:
=AND(ISNUMBER(A1:A10))
… с помощью Ctrl + Shift + Enter
Что-то простое, как это, позволит вам определить диапазон в виде строки (например, «A1: B10»), а затем пропустить каждую ячейку в этом диапазоне. Для каждой ячейки вы можете проверить состояние, изменить эту ячейку (выделить ее или принять к сведению) и т. Д. Вот очень простой пример:
Public Function RangeFunct(ByVal myRange As String) As Boolean Dim cell As Range Dim checkRange As Range Set checkRange = Range(myRange) Dim bTemp As Boolean bTemp = True For Each cell In checkRange If cell.Value = 1 Then bTemp = False Exit For End If Next cell RangeFunct = bTemp End Function
Если вы можете быть более конкретным относительно того, что вы хотите проверить и как вы хотите его использовать, я могу изменить код в соответствии с вашими потребностями.