Оценка формулы, определенной в другой ячейке
Скажем, у меня есть имя функции в ячейке A1
, лайк SUM
и некоторые данные в B1
а также C1
, Есть ли способ определить формулу в одной ячейке так, чтобы она вызывала формулу, определенную в A1
и это работает на B1
а также C1
как данные?
Так что-то вроде:=A1(B1:C1)
должно быть равно =SUM(B1:C1)
поскольку A1
содержит слово SUM
в этом.
По сути, что-то вроде макроса препроцессора в C или указателей на функции.
2 ответа
Вы можете сделать это, используя vba, создав пользовательскую функцию в модуле:
Public Function applyFunction(functionName As Range, argument As Range) As Variant
applyFunction = Evaluate(functionName & "(" & argument.Address & ")")
End Function
Если вы положите SUM
в А1 и 1, 2, 3 в В1, В2, В3, =applyFunction(A1,B1:B3)
вернет 6. Это эквивалентно вызову =SUM(B1:B3)
,
РЕДАКТИРОВАТЬ
Если вы действительно не хотите использовать VBA, вы можете создать имя (введите имя в Excel 2003, я думаю, Определить имя в Excel 2010):
- Определите новое имя (скажем,
eval1
) - в относится к области, введите
=EVALUATE(A1&"(B1:B3)")
где A1 содержит SUM, а B1:B3 - диапазон с числами - в пустую ячейку введите
=eval1
и он должен вернуть результат
Но этот подход менее гибок.
Если вы хотите использовать формулу вместо этого, вы можете использовать функцию SUBTOTAL(). Тем не менее, это немного ограничено.
Проверьте изображение. Для подытога используется ссылка на номер функции. Вы можете расширить это, создав функцию vlookup, если вы хотите использовать имя функции, но вы также должны предоставить способ определения использования обычной функции num или значений типа 101, которые игнорируют скрытые значения в диапазоне данных.,
Проверьте эту ссылку для получения дополнительной информации: http://office.microsoft.com/en-us/excel-help/subtotal-function-HP010062463.aspx