Excel - головоломка с логической формулой - PullRequest
0 голосов
/ 04 мая 2018

Мне нужно придумать формулу в подсвеченном столбце «Результат» (см. Встроенный SCREENSHOT), в которой ячейке для каждой строки следует присвоить 1 или 0. Критерии для формулы:

  • ЕСЛИ у инцидента есть несколько «Str Types» (я называю их ногами) И некоторые из этих ног говорят «Да», а некоторые говорят «Нет» «Контролировать Существуют?» ТОГДА "Результат" должен сказать 0.

  • ЕСЛИ у инцидента есть несколько "Str Types" (я называю их ногами) И все эти ноги говорят "Да" на "Control Exist?" ТОГДА "Результат" должен сказать 0.

  • ЕСЛИ у инцидента есть несколько "Str Types" (я называю их ногами) И все эти ноги говорят "Нет" "Control Exist?" ТОГДА "Результат" должен сказать 1. ОДНАКО, что 1 значение должно быть указано только ОДИН РАЗ для каждого уникального ИД инцидента.

  • ЕСЛИ инцидент НЕ имеет несколько «Str Types» (я называю их ногами), но только один И он говорит «Да» на «Control Exist?» ТОГДА "Результат" должен сказать 0.

  • ЕСЛИ инцидент НЕ имеет несколько «Str Types» (я называю их ногами), а только один И он говорит «Нет» «Control Exist?» ТОГДА "Результат" должен сказать 1.

Я вставил скриншот проблемы, и желаемые результаты указаны вручную в столбце «Результат». Мне нужна формула, которая даст те же результаты.

Спасибо за все, что вы делаете!

SCREENSHOT

1 Ответ

0 голосов
/ 04 мая 2018

Вы сделали это намного сложнее, чем нужно - если вы посмотрите на свои правила, вы можете переформулировать их следующим образом:

  • Результат = 0 для ВСЕХ значений, кроме:
    • Первое появление «Нет», когда для этого заданного значения «Да» нет Incident Id

Итак, взяв примерное изображение и поместив эту таблицу в диапазон A1:C19, ваша формула Result в столбце D будет выглядеть следующим образом:

D2: =IF(COUNTIFS($A$2:$A$19,A2,$C$2:$C$19,"Yes")>=1,0,IF(A2<>A1,1,0))

Разбивка:

COUNTIFS($A$2:$A$19,A2,$C$2:$C$19,"Yes") - Подсчитать количество Yes значений для данного Incident Id

IF(COUNTIFS($A$2:$A$19,A2,$C$2:$C$19,"Yes")>=1,0 - Если у нас есть хотя бы 1 Yes для данного Incident Id, тогда установите значение 0

,IF(A2<>A1,1,0)) - Теперь мы находимся в части ELSE, так что это означает, что нет значений Yes, поэтому все, что нас волнует, это то, что мы находимся в первом ряду идентификатора инцидента, это означает, что значение в столбце A новое, поэтому оно не будет равно значению над ним. Таким образом, если Incident Id отличается от значения в строке над ним, верните 1, иначе верните 0.

Перетащите эту формулу вниз в столбец D, и все готово.

Иногда это помогает переоценить проблему - надеюсь, это поможет!

...