У меня есть вложенная формула IF. Возвращаемое значение для некоторых операторов IF задается путем сопоставления индекса. Если элемент не существует на другом листе, индекс совпадения возвращает # N/A, но если есть ошибка, я хочу, чтобы в ячейке было указано "Требуется расследование" вместо # N/A, поэтому я поставил в заявлениях IFERROR, чтобы сделать это. Это отлично работает. Посмотрите первое заявление IF, которое я ободрил, чтобы понять, о чем я говорю.

У меня проблема с последним утверждением IF (также выделено жирным шрифтом). Этот отличается от всех других тем, что имеет несколько условий (одно из которых задается путем сопоставления индекса) и потому что я указываю возвращаемое значение Else (т. Е. Если условие истинно, тогда возвращаемое значение, в противном случае возвращаем другое значение). Я хочу добиться того же, что и выше (то есть, если возникает та же ошибка # N/A, что и выше, я хочу, чтобы в ячейке было указано "Требуется расследование" вместо # N/A). Я поместил в IFERROR заявления везде, о которых я могу думать, и ничего не работает. Где я должен положить в IFERRORs? Или я должен использовать что-то другое, чем IFERROR?

=IF(D2="Approved","Approved",IF((AND(D2="Supplier Submittal",E2="Interim Approval")),"Interim Approved",IF(D2="Define","Initial Review",IF(D2="Due Date Approval","Initial Review",IF(D2="Initial Review","Initial Review",IF(D2="No Status","Drawing Not Released",IF(D2="Polaris Review","Polaris Review",IF(D2="Staging","Waiting on Child Components",IF(D2="Supplier Acceptance","Initial Review",**IF(D2="Closed W/O Approval",IFERROR(INDEX(SharePoint!X:X,MATCH('Exceptions List'!A2,SharePoint!N:N,0)),"Needs Investigation")**, IF(D2="Needs Validation",IFERROR(INDEX(SharePoint!X:X,MATCH('Exceptions List'!A2,SharePoint!N:N,0)),"Needs Investigation"),IF(D2="No PPAP Required",IFERROR(INDEX(SharePoint!X:X,MATCH('Exceptions List'!A2,SharePoint!N:N,0)),"Needs Investigation"), IF(D2="Transferred",IFERROR(INDEX(SharePoint!X:X,MATCH('Exceptions List'!A2,SharePoint!N:N,0)),"Needs Investigation"),IF((AND(D2="Supplier Submittal",C2<TODAY())),"Supplier Late",IF((AND(D2="Supplier Submittal",C2>TODAY(),C2<$J$1)),"On Track for PV",**IF((AND(D2="Supplier Submittal",C2>$J$1, INDEX(SharePoint!X:X,MATCH('Exceptions List'!A2,SharePoint!N:N,0))="")),"Due after PV",INDEX(SharePoint!X:X,MATCH('Exceptions List'!A2,SharePoint!N:N,0)))**)))))))))))))))

Вот та же формула, на которую, вероятно, проще смотреть.

Если это помогает, вот пример первого утверждения IF, которое я подбодрил (которое работает) из электронной таблицы.

А вот снимок примера оператора IF, с которым у меня проблемы.

1 ответ1

0

Использование функции SWITCH может помочь в устранении проблемы, сделав формулу более удобочитаемой и более легкой в обслуживании. Скобки были уменьшены на 15 наборов, включая внешние наборы, окружающие функции ( AND(...) ) .
Поскольку в случае "Отправка поставщика" все еще существует вложенность IF требующая действия по умолчанию (условие IF последнего вложенного FALSE), это значение по умолчанию также было дублировано предложению по умолчанию функции SWITCH . Эти значения по умолчанию INDEX(MATCH()) теперь заключены в скобки IFERROR . Отсутствие IFERROR здесь, вероятно, вызвало ошибку # N/A.

Вероятность возникновения необработанной ошибки # N/A в тесте INDEX(MATCH())="" для определения условия "Срок после PV" может быть исправлена локально, возвращая что-то отличное от "" как это AND( C2>$J$1, IFERROR( INDEX(MATCH()) ,"NO MATCH") =""), "Due after PV", ,. При получении этого возврата IFERROR "Требуется расследование" также будет выполнено сравнение с "" FALSE результате чего последнее условие IF « FALSE , IFERROR(INDEX(MATCH()),... вернет "Требуется расследование".
Реализованное решение было кронштейн всех этой окончательная вложенной IF ( « В связи после того, как PV») в IFERROR и удаление избыточного IFERROR из IF условия этого FALSE «s.

Иногда Excel любит вставлять многострочные формулы в несколько ячеек. В этом случае вставьте формулу непосредственно в строку формул.

Формула (строка) может быть отформатирована с разрывом строки, нажав Alt - Enter

=SWITCH(D2, "Approved", "Approved", "Define", "Initial Review", "Due Date Approval", "Initial Review", "Initial Review", "Initial Review", "No Status", "Drawing Not Released", "Polaris Review", "Polaris Review", "Staging", "Waiting on Child Components", "Supplier Acceptance", "Initial Review", "Closed W/O Approval", IFERROR( INDEX( SharePoint!X:X, MATCH( 'Exceptions List'!A2, SharePoint!N:N, 0)), "Needs Investigation"), "Needs Validation", IFERROR( INDEX( SharePoint!X:X, MATCH( 'Exceptions List'!A2, SharePoint!N:N, 0)), "Needs Investigation"), "No PPAP Required", IFERROR( INDEX( SharePoint!X:X, MATCH( 'Exceptions List'!A2, SharePoint!N:N, 0)), "Needs Investigation"), "Transferred", IFERROR( INDEX( SharePoint!X:X, MATCH( 'Exceptions List'!A2, SharePoint!N:N, 0)), "Needs Investigation"), "Supplier Submittal", IF( E2 = "Interim Approval", "Interim Approved", IF( C2 < TODAY(), "Supplier Late", IF( AND( C2 > TODAY(), C2 < $J$1 ), "On Track for PV", IFERROR( IF( AND( C2> $J$1, INDEX( SharePoint!X:X, MATCH( 'Exceptions List'!A2, SharePoint!N:N, 0)) = ""), "Due after PV", INDEX( SharePoint!X:X, MATCH( 'Exceptions List'!A2, SharePoint!N:N, 0))), "Needs Investigation") ))), IFERROR( INDEX( SharePoint!X:X, MATCH( 'Exceptions List'!A2, SharePoint!N:N, 0)), "Needs Investigation"))

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