Мне нужна функция =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 сделает это, но он возвращает ссылку, основанную на целом числе, обратном тому, что мне нужно.
Есть ли какая-то существующая функция, которая делает это, которую я пропустил? Придется ли мне создавать более сложную функцию из чего-то вроде вложенных if или vlookup, или мне придется писать функцию на VBA?
Спасибо за ваше время и помощь.
решение1
Если вы можете поместить значения для сравнения в диапазон в другом месте таблицы, вы можете использовать функцию LOOKUP. LOOKUP ищет свой первый аргумент в диапазоне, указанном во втором аргументе, и возвращает соответствующее значение из диапазона в третьем аргументе. Вам придется добавить диапазон, указав нужное вам значение.
Например, я создаю таблицу поиска в F1:F3 и G1:G3:
ФГ 1 Алекс 1 2 Бетти 2 3 Чарли 3
Тогда используемая функция:
Б 1 =ПРОСМОТР(A1;$F$1:$F$3;$G$1:$G$3) 2 =ПРОСМОТР(A2;$F$1:$F$3;$G$1:$G$3)
В ячейке B1 функция ПРОСМОТР ищет A1 («Чарли»), находит его в F3 и возвращает значение из G3, равное 3. В ячейке B2 функция ПРОСМОТР ищет A2 («Алекс»), находит его в F1 и возвращает значение из G1, равное 1.
Вы также можете поместить таблицу поиска на другой лист рабочей книги, если она вам не нужна на основном листе.
решение2
Я не уверен на 100%, как выглядят ваши исходные данные, но функция ПОИСКПОЗ будет рассматривать одно значение и возвращать его позицию в массиве.
Если A1:A4 равно
Alex
Betty
Charlie
Betty
и в B1 вы кладете
=MATCH(A1,$A$1:$A$4)
B1 вернется
1
Затем просто заполните ячейки с B1 по B4, и вы получите результат.