Во-первых, я полагаю, что ваши данные в этом формате:
И что вы хотите выполнить поиск, используя данные из 'Raised Source'!
искать через Sheet1!
и вернуть команду из Sheet1!
, как Что ж.
формула:
Формула нужно будет вводить в виде массива (один раз скопировать и вставить еще в строке формул хит CTRL + SHIFT + ENTER)
=IFERROR(INDEX(Team,MATCH(1,(E1=TeamDate)*(F1=UserID),0)),"")
Я использовал названные диапазоны, чтобы сделать формулу опрятной:
Team =Sheet1!$F$1:$F$6
TeamDate =Sheet1!$A$1:$A$6
UserID =Sheet1!$B$1:$B$6
Пожалуйста, обратите внимание, что при использовании формулы массива на всех расчетах колонков значительно замедляется, так что лучше, чтобы избежать этого и определить точный диапазон вы ищите через или занижение его разумную суммой, если вы ожидаете дополнения.
Логика:
=INDEX(array,row,[column])
- Эта формула «индекс» массив вы указываете, вы можете сказать ему номер строки и столбца, который Вы хотите вернулся (например =INDEX(B3:C4,1,1)
будет возвращать значение в первый столбец первой строки и первый столбец B3:C4
, который равен B3
. Нам не нужно указывать формулу столбцу, если мы хотим вернуть только первый столбец, или если данные, которые мы ищем, имеют ширину всего 1 столбца.
Здесь находится формула. W e используйте формулу MATCH(lookup_Value,Lookup_array,[match_type])
, чтобы рассказать нам, какую позицию (или какую строку в этом случае) имеет значение, которое мы ищем.
Нормальное использование MATCH()
будет соответствие содержания точных ячеек в диапазоне, но, как мы используем формулу массива я играл небольшой трюк с использованием MATCH(1,(E1=TeamDate)*(F1=UserID),0)
Итак, я сказал формулу, чтобы найти 1
и скажите мне, положение, в котором оно происходит. 1
возвращается, когда оба критерия совпадают с формулой Excel, TRUE
представляет 1
и FALSE
представляет 0
.Когда эта формула работает через построчно, если оба результата совпадают и вернуть TRUE
то массив будет хранить 1*1
, который 1
и, конечно, если один или оба FALSE
, то он будет возвращать 1*0
, 0*1
или все из которых приведет к 0
.
Поскольку именованные диапазоны начинаются с одной и той же строки, относительное положение (или сколько раз до появления 1
) всегда будет номером строки, который вы хотите вернуть формулу INDEX()
.
IFERROR(value,value_if_error)
- Если совпадение не найдено, формула выдает ошибку, поскольку она не может соответствовать 1
массиву, который я создал. Если это произойдет, я сказал формулу, что я бы хотел, чтобы она вернула ,"")
, а это пустая ячейка. Вы можете обновить его до любого текста, который вы предпочитаете, возможно, ,"Not Found")
?
Другие IF() в формуле из другого ответа были специфичны для этого вопроса, поскольку они хотели знать только, что было совпадение, а не возвращать что-то из этой строки.
Выходные:
Так команда имена на 'Лист1 F: f'? даты и идентификатор пользователя находятся на A и B? –
Я издевался над данными, и это работает для меня ... Возможно, он не может найти совпадение, вы проверили, чтобы убедиться, что матч существует? Кроме того, будьте осторожны с использованием формул массива на всех строках/столбцах, это значительно замедляет вычисления –
Если вы дадите более ясное ожидание ожидаемого результата, я был бы более чем счастлив предоставить полное описание того, как Index and Match работают вместе: несколько примеры моих можно найти в ответах, которые я представил ранее: [Index() Small() example] (http://stackoverflow.com/questions/41549674/how-to-categorise-a-column-in-excel- [info]/[41565539 # 41565539] и [INDEX() для проверки 3 условий] (http://stackoverflow.com/questions/40805108/how-compare-3-columns-and -put-yes-or-no-in-another-column/40806443 # 40806443) –