Подтвердить что ты не робот

Существуют ли такие переменные в формуле Excel?

Я ненавижу повторяющиеся функции, особенно в формулах Excel. Есть ли способ, которым я могу избежать чего-то вроде:

=IF( VLOOKUP(A1, B:B, 1, 0) > 10, VLOOKUP(A1, B:B, 1, 0) - 10, VLOOKUP(A1, B:B, 1, 0) )

[Выше приведен простой пример проблемы, а не конкретная формула, с которой я работаю.]

4b9b3361

Ответ 1

Вы можете определить имя для части формулы VLOOKUP.

  1. Выделите ячейку, которая содержит эту формулу
  2. В меню "Вставка" выберите "Имя" и нажмите "Определить".
  3. Введите имя для вашей переменной (например, "Значение")
  4. В поле "Относится к" введите формулу VLOOKUP: =VLOOKUP(A1,B:B, 1, 0)
  5. Нажмите кнопку Добавить и закройте диалоговое окно.
  6. В исходной формуле замените детали 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).

Замечания:

  1. Для более новых версий Excel с лентой перейдите на ленту Формулы → Определить имя. Это то же самое после этого. Кроме того, чтобы использовать свое имя, вы можете выполнить "Использовать в формуле" прямо в разделе "Определить имя" при редактировании формулы или начать вводить ее, и Excel предложит имя (предоставлено Майклом Рашем)

  2. Сокращенные шаги: 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.

Вернемся к основной теме, когда мне нужно использовать формулу, повторяющую какую-то часть, я обычно помещаю ее в другую ячейку, а затем скрываю ее, как уже говорили некоторые люди.