3

Я ищу способ, как определить какой-то псевдоним в Excel. Допустим, у меня есть эта длинная функция для классификации / пометки каждой строки в списке расходов на жилье:

= ЕСЛИ (ЕЧИСЛО (ПОИСК ("Карри", $ F2)), "Карри", ЕСЛИ (ИЛИ (ЕЧИСЛО (ПОИСК ({ "ЛИДЛ", "ТЕСКО", "АЛЬБЕРТ", "БИЛЛА"}, $ F2))), "Продовольственные товары", ЕСЛИ (ИЛИ (ISNUMBER (ПОИСК ({"FITINN", "GM ELECTRONIC"}, $ F2))), "Fun", ""))))

Он просто проверяет соседнюю ячейку и заполняет тег в текущей ячейке. Теперь допустим, что эта функция имеет длину в сто строк, поэтому я не хочу помещать ее в каждую строку на листе. Я хотел бы создать псевдоним с именем «тег» и поставить просто = тег в каждой ячейке. Как мне добиться чего-то подобного?

3 ответа3

1

Вам нужно задействовать VBA, чтобы позаботиться об этом. По сути, вы определяете свою функцию "TAG" в вашем случае с помощью редактора VBA, а затем присоединяете полученный модуль к вашей электронной таблице. Затем вы можете использовать «= TAG(...)» в строке формул Excel, как если бы это было встроено.

Смотрите здесь для руководства. Волшебная фраза для Google является пользовательская функция.

1

Используйте таблицы.

Выделите весь прямоугольник ячеек, включая строку заголовка, выберите "Вставить таблицу" и превратите ее в таблицу.

Затем замените упоминание о F2 на [@ColumnTitle] где "ColumnTitle" - это заголовок столбца F. [ColumnTitle] относится ко всему столбцу, [@ColumnTitle] относится к ячейке этого столбца в текущей строке.

Как только вы заменяете всю строку формулой, которая не использует нотацию "А1", которая одинакова для каждой ячейки в этой строке, эта формула сохраняется ровно один раз, независимо от того, сколько строк в таблице. Если вы измените его в какой-либо ячейке, он будет изменен для всего столбца, ваше обслуживание значительно упало, а формула станет более читабельной.

И, кстати, вы также можете использовать UDF в таблицах, так что вы можете иметь формулу =MyUDF([ColumnTitleA],[@ColumnTitleA],Offset([@ColumnTitleB],-1,0)) и он пройдет все данные в A, ячейка в A для текущей строки и ячейка в B для предыдущей строки.

0

Вам может показаться, что следующее будет немного проще для глаз:

=INDEX($F$2:$F$8,MATCH(TRUE,NOT(ISERROR(SEARCH($E$2:$E$8,$A$2))),0))

Я проверил это со следующей настройкой - формула выше находится в ячейке A5

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .