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

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

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

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

8 ответов


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

  1. выделить ячейку, содержащую эту формулу
  2. в меню Вставка выберите пункт имя и нажмите кнопку Определить
  3. введите имя переменной (например, 'Value')
  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), etc. Шаг (4) достигает этого, используя относительные ссылки (A1 и B:B), а не абсолютные ссылки ($A и $B:$B).


вы можете хранить промежуточные значения в ячейке или столбце (которые вы можете скрыть, если выберете)

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

не связанные с переменными, ваш пример также будет решен с помощью MOD:

=Mod(VLOOKUP(A1, B:B, 1, 0);10)

два варианта:

  • VLOOKUP функция в собственной ячейке:=VLOOKUP(A1, B:B, 1, 0) (В С1), то формула ссылается С1: =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

определение имени, содержащего поиск, является аккуратным решением, однако всегда кажется, что имя листа хранится со ссылкой на ячейку. Тем не менее, я думаю, если вы удалите имя листа в " кавычки, но оставьте "!"это может сработать.


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


да. Но не напрямую.

проще

  • вы можете опубликовать Vlookup () в одной ячейке и использовать его адрес там, где это необходимо. - Это, пожалуй, единственный прямой способ использования переменных в Excel.

или

  • вы можете определить Vlookup (reference)-10 как функцию-оболочку из макросов VBE. Нажмите Alt+f12 и используйте эту функцию

Я знаю, что это немного не по теме, но следуя решению, представленному Йонасом Бемером, на самом деле я думаю, что MOD-лучшее решение для вашего примера.

Если вы намеревались ограничить результат одной цифрой, MOD-лучший подход для его достижения.

ie. Предположим, что VLOOKUP (A1, B:B, 1, 0) возвращает 23. Ваша формула IF просто сделает этот расчет: 23-10 и вернет 13 в результате.

с другой стороны, MOD (VLOOKUP(A1, B: B, 1, 0), 10) разделит 23 на 10 и покажет остаток: 3.

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