Выделение пропущенных уникальных пар по сравнению с основным списком - Excel - PullRequest
0 голосов
/ 29 мая 2019

На листе 1 у меня есть основной список данных с соответствующими атрибутами. Некоторые данные имеют более одного атрибута, некоторые имеют только один, и существует возможность пропусков. Атрибуты могут повторяться при назначении другому имени.

Ниже приведены некоторые примеры данных, поэтому мы все можем говорить об одних и тех же ячейках / именах и т. Д.

На Листе 2 происходит гораздо больше ввода / анализа данных произвольной формы. Пользователи могут выбрать «Имя» из раскрывающегося меню с помощью «Проверка данных», а затем выбрать из доступных атрибутов, соответствующих этому имени, снова с помощью раскрывающегося меню. Имена и атрибуты могут отображаться в любом порядке на листе 2.

Важно, чтобы все пары были рассмотрены во втором листе.

Можно ли использовать условное форматирование, чтобы выделить поле «Имя» (на листе 2), пока не будет хотя бы одна строка со всеми возможными парами? В приведенном ниже примере вы можете видеть, что мы забыли поместить любую информацию, касающуюся того факта, что Салли счастлива, и, следовательно, «Салли» была выделена, чтобы привлечь внимание к тому факту, что некоторая недостающая информация отсутствует.

Example Data

Текущие мысли: У меня уже есть список атрибутов, которые соответствуют соответствующему имени - это то, что приводит в действие раскрывающееся меню на Листе 2, и генерируется в фоновом листе, когда выбирается имя на Листе 2. Я могу сосчитать непустые ячейки в этот диапазон, чтобы узнать общее количество требуемых пар.

Затем я хотел бы подсчитать количество неповторяющихся атрибутов в строках с тем же именем, что и текущая строка, и сравнить это значение.

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

Что-то вроде приведенного ниже (отформатировано как псевдокод для удобства чтения, но это следует читать как описание высокого уровня, а не как реальный код)

{Count the 1s in the array(AND(
'Check if it's a name match'
If($D$1:$D$10=[$ACurrent],[set flag to 1],[set flag to 0])
'Check if it's a unique value'
[somehow check array values set at 1 to see if there is a duplicate value in column E, and then set the array value to zero if so])
}

Имеет ли этот подход смысл, и как бы я мог построить эту фактическую формулу?

Я не против использовать VBA при необходимости, но предпочел бы по возможности избегать его (политика компании, извините).

Ответы [ 2 ]

1 голос
/ 29 мая 2019

@ Foxfire And Burns And Burns помог мне решить мою проблему - я немного изменил его формулы, убрав двойное COUNTIFS и учтя строки в основных данных, где находятся обе ячейкипусто - ниже это то, что я использовал.

=IF (OR($A2<>"",$B2<>""),
        (IF(COUNTIFS($D$2:$D$12,$A2,$E$2:$E$12,IF($B2="","",$B2))=0,TRUE,FALSE)
        )
    )

Это работает, возвращая TRUE или FALSE из следующих логических проверок - если окончательный результат равен TRUE, то появляется форматирование.

  1. OR($A2<>"",$B2<>"") - Проверяет, является ли одна из ячеек в мастере не пустой.- Если обе ячейки не заполнены, возвращается FALSE и ничего не форматируется (см. A10:B10).
  2. IF(COUNTIFS($D$2:$D$12,$A2,$E$2:$E$12,[see point 3])<1,TRUE,FALSE) - Это число раз, которое оба диапазон $D$2:$D$12 содержит значение ячейки $A2, а диапазон $E$2:$E$12 содержит значение ячейки $B2.Если это число <1, (нулевое совпадение), то оператор возвращает TRUE и реализует форматирование.
  3. IF($B2="","",$B2) - этот вложенный оператор IF проверяет, является ли ячейка $B2 пустым, и возвращает"", если он не заполнен или сохраняет значение $B2 в противном случае.Это связано с тем, что COUNTIFS будет видеть ячейку как «ноль», если пусто, в противном случае (см. A9:B9).
  4. Я не использовал подобное вложенное, если проверять, является ли $A2 пустым, потому что это не должно быть пустым , поэтому полезно подчеркнуть, что пользователь также допустил ошибку при вводе данных и здесь (см. A2:B2 - он останется красным, когда пользователь введет имя, так как он не будетболее длинное совпадение D2:E2.)

Справочное изображение ниже:

Working Conditional Formatting

1 голос
/ 29 мая 2019

Ну, вы хотите выделить значение Sally, Happy, если это значение не отображается в Sheet2, поэтому вам просто нужны COUNTIFS

Функция COUNTIFS

Я получил это:

enter image description here

Я использовал правило условного форматирования, основанное на моей собственной формуле,Формула, которую я использовал:

=IF($B2="";IF(COUNTIFS($F$2:$F$12;$A2;$G$2:$G$12;"")=0;TRUE;FALSE);IF(COUNTIFS($F$2:$F$12;$A2;$G$2:$G$12;$B2)=0;TRUE;FALSE))

Есть 2 COUNTIFS, потому что возможны пустые значения:

  1. IF(COUNTIFS($F$2:$F$12;$A2;$G$2:$G$12;"")=0;TRUE;FALSE) будет подсчитывать, сколько строк получили одно и то же имя и непустые атрибуты в Sheet2.Если 0, то он вернет True и выделит строку.
  2. IF(COUNTIFS($F$2:$F$12;$A2;$G$2:$G$12;$B2)=0;TRUE;FALSE) подсчитает, сколько строк имеют одинаковые имена и пустые атрибуты.Если 0, то он вернет True и выделит

. При начальном IF вы можете использовать пустые или непустые атрибуты, просто чтобы убедиться, что вы подсчитали все возможности значений.

Я загрузил пример в mi Gdrive на тот случай, если вы захотите загрузить и получить автоматически переведенные формулы на вашем ПК.

https://drive.google.com/open?id=1Im4LoaK4EIvINBj7tfyEcYk9juWUp7zr

Надеюсь, вы сможете адаптировать его к вашим потребностям.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...