Существуют ли такие переменные в формуле Excel?
Я ненавижу повторяющиеся функции, особенно в формулах Excel. Есть ли способ, которым я могу избежать чего-то вроде:
=IF( VLOOKUP(A1, B:B, 1, 0) > 10, VLOOKUP(A1, B:B, 1, 0) - 10, VLOOKUP(A1, B:B, 1, 0) )
[Выше приведен простой пример проблемы, а не конкретная формула, с которой я работаю.]
Ответы
Ответ 1
Вы можете определить имя для части формулы VLOOKUP.
- Выделите ячейку, которая содержит эту формулу
- В меню "Вставка" выберите "Имя" и нажмите "Определить".
- Введите имя для вашей переменной (например, "Значение")
- В поле "Относится к" введите формулу VLOOKUP:
=VLOOKUP(A1,B:B, 1, 0)
- Нажмите кнопку Добавить и закройте диалоговое окно.
- В исходной формуле замените детали VLOOKUP только что определенным именем:
=IF( Value > 10, Value - 10, Value )
Здесь важен шаг (1): я думаю, во втором ряду вы хотите, чтобы Excel использовал VLOOKUP(A2,B:B, 1, 0)
, третий ряд VLOOKUP(A3,B:B, 1, 0)
и т.д. На шаге (4) это достигается путем использования относительных ссылок (A1
и B:B
), а не абсолютных ссылок ($A$1
и $B:$B
).
Замечания:
-
Для более новых версий Excel с лентой перейдите на ленту Формулы → Определить имя. Это то же самое после этого. Кроме того, чтобы использовать свое имя, вы можете выполнить "Использовать в формуле" прямо в разделе "Определить имя" при редактировании формулы или начать вводить ее, и Excel предложит имя (предоставлено Майклом Рашем)
-
Сокращенные шаги: 1. Щелкните правой кнопкой мыши ячейку и выберите Определить имя... 2. Введите имя и формулу, которую вы хотите связать с этим именем/локальной переменной 3. Используйте переменную (credits: Jens Bodal)
Ответ 2
Вы можете хранить промежуточные значения в ячейке или столбце (который вы можете скрыть, если вы выберете)
C1: = VLOOKUP(A1, B:B, 1, 0)
D1: = IF(C1 > 10, C1 - 10, C1)
Ответ 3
Не связанный с переменными, ваш пример также будет разрешен MOD
:
=Mod(VLOOKUP(A1, B:B, 1, 0);10)
Ответ 4
Два варианта:
-
VLOOKUP
в своей собственной ячейке: =VLOOKUP(A1, B:B, 1, 0)
(скажем, C1), тогда формула, ссылающаяся на C1: =IF( C1 > 10, C1 - 10, C1 )
- создать UDF:
Function MyFunc(a1, a2, a3, a4)
Dim v as Variant
v = Application.WorksheetFunction.VLookup(a1, a2, a3, a4)
If v > 10 Then
MyFunc = v - 10
Else
MyFunc = v
End If
End Function
Ответ 5
Определение ИМЯ, содержащее поиск, является опрятным решением, ОДНАКО, всегда кажется, что оно хранит имя листа с помощью ссылки на ячейку. Однако я думаю, что если вы удалите имя листа в кавычки, но оставьте "!", Оно может работать.
Ответ 6
Не существует способа определить переменную в строке формул Excel. В качестве обходного пути вы можете поместить функцию в другую ячейку (возможно, скрывая содержимое или помещая его на отдельный лист). В противном случае вы можете создать функцию VBA.
Ответ 7
Да. Но не напрямую.
Простейший способ
- Вы можете опубликовать Vlookup() в одной ячейке и использовать свой адрес там, где это необходимо. - Это, пожалуй, единственный прямой способ использования переменных в Excel.
ИЛИ
- Вы можете определить Vlookup (reference) -10 как функцию обертки из макросов VBE. Нажмите Alt + f12 и используйте эту функцию
Ответ 8
Я знаю, что это немного не по теме, но, следуя решению, представленному Джонасом Бёмером, на самом деле я считаю, что MOD - лучшее решение для вашего примера.
Если ваше намерение состояло в том, чтобы ограничить результат одной цифрой, MOD - лучший способ его достижения.
т. Предположим, что VLOOKUP (A1, B: B, 1, 0) возвращает 23. Ваша IF-формула просто сделает этот расчет: 23 - 10 и вернет результат 13.
С другой стороны, MOD (VLOOKUP (A1, B: B, 1, 0), 10) разделит 23 на 10 и покажет остаток: 3.
Вернемся к основной теме, когда мне нужно использовать формулу, повторяющую какую-то часть, я обычно помещаю ее в другую ячейку, а затем скрываю ее, как уже говорили некоторые люди.