Мне нужна функция =Func(A1, "Alex, "Betty", "Charlie") которая возвращает индекс соответствующей записи. Если эта функция введена в B1:B13, она покажет

"Charlie"   3
"Alex"      1
"Alex"      1
"Alex"      1
"Charlie"   3
"Charlie"   3
"Betty"     2
"Charlie"   3
"Charlie"   3
"Betty"     2
"Betty"     2
"Betty"     2
"Alex"      1

Я думал, что CHOOSE сделает это с первого взгляда, но он возвращает ссылку на основе целого числа, обратного тому, что мне нужно.

Есть ли существующая функция, которая делает это, которую я пропустил, мне нужно было бы сделать более сложную функцию из чего-то вроде вложенного ifs или vlookup, или мне нужно было бы написать функцию в VBA?

Спасибо за ваше время и помощь.

2 ответа2

2

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

Например, я создаю таблицу поиска в F1:F3 и G1:G3:

    F         G
1   Alex      1
2   Betty     2
3   Charlie   3

Тогда используемая функция

    B
1   =LOOKUP(A1,$F$1:$F$3,$G$1:$G$3)
2   =LOOKUP(A2,$F$1:$F$3,$G$1:$G$3)

В ячейке B1 LOOKUP ищет A1 ("Чарли"), находит его в F3 и возвращает значение из G3, которое равно 3. В ячейке B2 LOOKUP ищет A2 ("Alex"), находит его в F1 и возвращает значение из G1, которое равно 1.

Вы также можете поместить таблицу поиска в другой лист рабочей книги, если вы не хотите, чтобы она находилась на основном листе.

0

Я не уверен на 100%, как выглядят ваши исходные данные, но функция MATCH будет смотреть на одно значение и возвращать свою позицию в массиве.

Если A1:A4

Alex
Betty
Charlie
Betty

а в б1 ставишь

=MATCH(A1,$A$1:$A$4)

B1 вернется

1

Затем просто заполните B1 до B4, и вы получите свой результат.

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