2015-04-13 5 views
0

У меня есть формула, над которой я работаю, которая должна извлекать данные из другой электронной таблицы. У меня есть половина рабочей формулы, но мне нужна другая половина, чтобы действительно связать все это вместе. Для этого мне нужно найти соответствие между 2 ячейками в одной строке и затем предоставить правильное значение.IF AND statement excel

Например, если (А36 = (некоторое значение в столбце таблицы C) & & А3 = (Некоторое значение в таблице в колонке I)) = Обеспечить соответствующую ячейку в О.

Вот формула, что я есть до сих пор:

=IFERROR(AND(VLOOKUP($A$36,[ime.xls]Sheet1!C:O,13,0)/100,VLOOKUP($A3,[ime.xls]Sheet1!I:O,7,0)/100),"") 

это работает, когда я удалить вторую часть, если заявление, глядя на матч A3, но бит имеет решающее значение для моей формулы, иначе мои ценности будут ошибочными. На листе [ime] содержатся значения, в которых я ищу совпадения. Может ли кто-нибудь сообщить мне, что я делаю неправильно? Оба этих условия должны быть выполнены для этой работы.

Вот пример того, что я пытаюсь выполнить.

Sample

+0

Чтобы уточнить, вы пытаетесь выполнить _lookup_ значение на основе двух совпадающих значений в одной строке? – Gareth

+0

Да, это правильно. – MrTheBard

+0

Как советует Барри в его ответе, наилучшим будет формула Index Match. – Gareth

ответ

1

Ваша формула не говорит ему, что делать. Формула AND возвращает логическое значение (true или false), поэтому вам нужно объединить это с формулой IF, чтобы заставить его делать что-то одно или другое в зависимости от результата формулы.

Например:

=IF(AND(1=1,2=2),"Both conditions were true","One or more conditions were false") вернется Оба условия были верны.

=IF(AND(1=100,2=2),"Both conditions were true","One or more conditions were false") будет возвращать одно или несколько условий были ложными, потому что 1 не равно 100.

Теперь вы должны применить это к тому, что вы пытаетесь сделать. Что-то вроде этого:

=IF(
    AND(
     $A$36=VLOOKUP($A$36,[ime.xls]Sheet1!C:O,13,0)/100, 
     $A$3=VLOOKUP($A$3,[ime.xls]Sheet1!I:O,7,0)/100 
     ) 
    ,VLOOKUP($A$3,[ime.xls]Sheet1!I:O,7,0) 
    ,"One or more conditions were false" 
) 

Кроме этого, я не уверен, что вы на самом деле пытаетесь сравнить свои значения поиска для, так что вам нужно отредактировать строки 3 и 4 для выполнения сравнения вы на самом деле пытаетесь тест для.

EDIT

на основе проблемы, описанной с образцами данных, это было бы лучше решать с SUMIFS (или AVERAGEIFS, действительно не имеет значения, какой), чем формула ВПР. Поскольку на каждый продукт в день приходится только один КПД, часть SUM фактически ничего не добавит, он просто вернет индивидуальное числовое значение, соответствующее комбинации даты/машины в той же строке.

=SUMIFS([ime.xls]Sheet1!$E:$E,[ime.xls]Sheet1!$B:$B,$A3,[ime.xls]Sheet1!$A:$A,$E$1) 

Вставьте это в C3 на свой лист и скопируйте его по используемому диапазону. Он должен дать вам то, что вы ищете.

Примечание. SUMIFS вернет нули, где нет совпадения, AVERAGEIFS вернет ошибку DIV/0.Вы можете использовать это в ваших интересах, чтобы заменить недостающие значения с чем-то еще, если вы хотите, как это:

=IFERROR(AVERAGEIFS([ime.xls]Sheet1!$E:$E,[ime.xls]Sheet1!$B:$B,$A3,[ime.xls]Sheet1!$A:$A,$E$1),"No efficiency value logged for this date") 
+0

Joe, я получил почти все с этим: = IF (AND (VLOOKUP ($ A $ 36, [ime.xls] Sheet1! C: O, 13,0), VLOOKUP ($ A4, [ime.xls] Sheet1 I: O, 7,0)), VLOOKUP ($ A $ 36, [ime.xls] Sheet1! C: O, 13,0), «FALSE»)/100 Однако это не дает мне этого значения из ячейку, в которой сделаны оба совпадения. Я подозреваю, что это связано с моим значением, если истинный раздел. Есть ли какой-либо способ для меня убедиться, что формула захватывает значение из точной ячейки, где сделаны оба совпадения? – MrTheBard

+0

Привет, MrTheBard, у вас все еще нет сопоставлений внутри оператора AND, вы просто даете ему результаты поиска. Я бы предложил оценить формулу (http://tinyurl.com/lyeodkh). Если вы замените формулы поиска своими результатами, вы в основном написаны примерно так: '= IF (AND (12345,54321), 54321)/100'. Не спрашивая его, проверяет, равен ли 12345 что-либо, оно просто вернет true (по крайней мере, один из тестов должен вернуть 0 или «ЛОЖЬ» для И, чтобы вернуть общий результат «ЛОЖЬ»). Можете ли вы предоставить скриншоты/примеры таблиц того, что вы пытаетесь сделать? – CactusCake

+0

Конечно, Джо, я добавил образец таблицы. – MrTheBard

0

В общем, чтобы соответствовать в двух столбцах и извлекать значение из 3 вы можете использовать «формулу массива» как это

=INDEX(C$2:C$100,MATCH(1,(A$2:A$100=E2)*(B$2:B$100=E2),0))

подтвердил CTRL +SHIFT + ENTER

Это находит первую строку, где E2 соответствует столбцу A и F2, соответствует столбцу B и возвращает значение в той же строке в столбце C, если нет совпадения, которое вы получаете # N/A.

Если вы хотите более простую формулу и не возражаете, используя вспомогательные столбцы, то в D2 скопирована вниз использовать эту формулу для объединения двух столбцов поиска

=A2&"-"&B2

, а затем поиска формула может быть упрощена :

=INDEX(C$2:C$100,MATCH(E2&"-"&F2,D$2:D$100,0))

0

Есть несколько методов, к тому, что вы пытаетесь достичь.

Первый метод является применение Index и Match создать формулу массива следующим образом:

Ниже приведен пример одного из http://blog.contextures.com/archives/2012/07/12/check-multiple-criteria-with-excel-index-and-match/

=INDEX($D$2:$D$10,MATCH(1,(A13=$B$2:$B$10)*(B13=$C$2:$C$10),0)) 

Как уже упоминалось на сайте, это массив поэтому вместо того, чтобы просто нажимать клавишу ввода, когда вы используете формулу, вам необходимо удержать . Ctrl + Shift + Введите.

Чтобы сломать, как отформатирован формула:

=INDEX(a,MATCH(1,(b=c)*(d=e),0)) 
  • а = Весь спектр со всеми данными в нем
  • б = Первый критерий для данных, подлежащих фильтрации на
  • c = Диапазон, в котором должны быть найдены первые критерии
  • d = Второй критерий для фильтруемых данных
  • e = Диапазон, в котором необходимо искать второй критерий

Убедитесь, что вы используете $ в тех местах, которые указаны в приведенном выше примере.

Второй способ заключается в использовании Concatenate для объединения двух столбцов поиска, а затем с помощью Vlookup для поиска конкатенированного столбца.