Нужна формула, которая поможет перепроверить значения и условия в разных столбцах

Я надеюсь на помощь в решении новой задачи в моем ветеринарном исследовательском проекте. Мне нужен способ перекрестной проверки значений в разных столбцах моей электронной таблицы Excel. Я хочу убедиться, что для каждого случая (птицы), которому присвоена категория, имеется хотя бы один диагноз (подкатегория) для этой категории; и что птице, которой не была присвоена эта категория, не был поставлен ошибочный диагноз. У меня 6500 случаев (птиц), 27 категорий и более 200 диагнозов (подкатегорий), поэтому я надеюсь, что формула поможет мне сэкономить время и повысить точность.

КАТЕГОРИЯ1 ДИАГНОСТИКА1 ДИАГНОСТИКА2 ДИАГНОСТИКА3 ПЕРЕКРЕСТНАЯ ПРОВЕРКА ПТИЦА1 Н Н Н Н 0 ПТИЦА2 Да Н Н Н 2 ПТИЦА3 Да Н Н Да 1 ПТИЦА4 Да Да Да Н 1 ПТИЦА5 Н Н Да Н 3

Таким образом, в таблице выше в столбце ПЕРЕКРЕСТНАЯ ПРОВЕРКА (выходные данные) будут два ПРАВИЛЬНЫХ условия: «0» и «1».

  • «0» будет означать, что птице не присвоена определенная категория (КАТЕГОРИЯ1="N") и для этой категории не присвоен диагноз (подкатегория) (ДИАГНОСТИКА1:ДИАГНОСТИКА3="N").
  • «1» будет означать, что была присвоена категория (КАТЕГОРИЯ1="Y") и был присвоен хотя бы один диагноз (подкатегория) (по крайней мере один столбец в ДИАГНОСТИКА1:ДИАГНОСТИКА3 содержит "Y").

В столбце ПЕРЕКРЕСТНАЯ ПРОВЕРКА (выходные данные) будут два состояния ОШИБКИ: «2» и «3».

  • «2» будет означать, что птице была присвоена категория (CATEGORY1="Y"), но птице не был присвоен какой-либо диагноз (подкатегория) для этой категории (ДИАГНОСТИКА1:ДИАГНОСТИКА3="N")
  • «3» будет означать, что птице не была присвоена категория (КАТЕГОРИЯ1="N"), но был присвоен хотя бы один диагноз (подкатегория) (по крайней мере, один столбец в ДИАГНОСТИКА1:ДИАГНОСТИКА3 содержит "Y")

Чтобы усложнить задачу, буквы «N» и «Y» в столбцах «КАТЕГОРИЯ» и «ДИАГНОСТИКА» были заполнены с использованием функций LAMBDA и BYROW.

Я попробовал несколько формул, некоторые из которых включают ЕСЛИ(СЧЁТЕСЛИ), но смог найти только два потенциальных условия (0/1 или Да/Нет) для столбца перекрестной проверки. Мне нужна более сложная формула, и мне трудно ее написать самому. Кроме того, я думаю, что из-за LAMBDA/BYROW мне придется выполнить жесткий возврат к каждой строке в столбце перекрестной проверки, чтобы получить правильный результат. У меня есть Microsoft 365.

Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
0
105
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

=BYROW(B2:E6,LAMBDA(b,LET(c,SUM(N(DROP(b,,1) = "Y"))>0,IF(TAKE(b,,1) = "Y",IF(c,1,2),IF(c,3,0)))))

Оператор if используется для значения первого столбца (IF(TAKE(b,,1) = "Y"), затем мы проверяем, что количество (/сумма) значений оставшегося столбца, равное «Y», больше 0 (SUM(N(DROP(b,,1) = "Y"))>0 объявлено как c), чтобы получить дифференцированные результаты.

Или немного короче: =BYROW(B2:E6,LAMBDA(b,LET(c,OR(DROP(b,,1) = "Y"),IF(@T(b) = "Y",IF(c,1,2),IF(c,3,0)))))

Лорен,

Решение P.b должно сработать. Поскольку я все еще использую Excel 2010, у меня нет доступа к функциям Excel 365.

Я предлагаю следующий подход:

а) создайте новый столбец «Имеет диагноз» по формуле:

=IF(COUNTIF(C2:E2,"Y")=0,0,1)

б) Внесите в графу «ПЕРЕКРЕСТНАЯ ПРОВЕРКА»:

=IF(AND(G2=0,B2 = "N"),0,IF(AND(G2>0,B2 = "Y"),1,IF(AND(G2>0,B2 = "N"),3,2)))

Преимущества моего подхода (с моей точки зрения): 1) сохраняется обратная совместимость с предыдущими версиями Excel и 2) более читаемый код.

Я тестировал такие формулы:

Или за один раз: =IF(B2 = "Y",IF(AND(C2:E2 = "N"),2,1),IF(AND(C2:E2 = "N"),0,3))

P.b 13.07.2024 19:52

Вау, это здорово, я проверю! Мне нравится идея обратной совместимости. Спасибо!

Lauren P 14.07.2024 17:23

Другой способ, без использования вспомогательных функций LAMBDA() и с использованием MMULT() + XMATCH():


• Формула, используемая в ячейке F2

=XMATCH(B2:B6&IF(MMULT(N(C2:E6 = "Y"),TOCOL(RIGHT(C1:E1))^0),"Y","N"),
 {"NN";"YY";"YN";"NY"})-1

Используя MMULT(), верните счетчики для Diagnosis. Если больше 0, то Y, иначе N, присоединитесь к столбцу Category, чтобы создать ссылку, и используйте XMATCH(), чтобы найти относительные позиции элемента в массиве.


Если для Diagnosis всегда есть три столбца, то может быть немного короче:

=XMATCH(B2:B6&IF(MMULT(N(C2:E6 = "Y"),{1;1;1}),"Y","N"),{"NN","YY","YN","NY"})-1

Эта формула преобразует входные данные в двоичное, а затем десятичное значение и с помощью CHOOSE определяет выходное значение формулы.

В строке столбца CrossCheck 2: (и перетащите вниз)

=CHOOSE(BIN2DEC(VALUE(TEXTJOIN("",FALSE,IF(B2:E2 = "N",0,1))))+1,0,3,3,3,3,3,3,3,2,1,1,1,1,1,1,1,1)

С небольшим дополнением для автоматического размещения будущих записей (COUNTA(A:A)).

Надеюсь, ваши птицы не будут возражать против рядов кошек :)

Еще раз спасибо за вашу помощь, Нкалви, в еще одной задаче моего ветеринарного исследовательского проекта, и я совсем не против кошек!

Lauren P 14.07.2024 17:25

Другие вопросы по теме

Excel – объединить все экземпляры текста перед разделителем в одну ячейку
Подсчет количества ячеек, заполненных данными на основе указанных дат в будущем
Суммируйте все ячейки, для которых соответствующая ячейка не является формулой и не возвращает #ЗНАЧЕНИЕ И дата произошла в прошлом
Сопоставление нескольких числовых строк и проверка соответствующих дат в течение 90 дней
Фильтруйте и сортируйте данные с помощью нескольких критериев столбца и строки и сопоставляйте с ними соответствующие данные с помощью фиксированных и гибких return_arrays
Фильтруйте и сортируйте данные с помощью нескольких критериев столбца и строки, а затем сопоставляйте с ними соответствующие данные с помощью нескольких гибких return_arrays
Какой лучший способ репликации суммифов, кроме создания формулы массива?
Как использовать логические операторы с динамическими массивами?
Excel: распечатать точное имя, найденное в списке, для точной даты
Как вернуть упорядоченные уникальные данные в Excel?

Похожие вопросы

Excel – объединить все экземпляры текста перед разделителем в одну ячейку
Запишите изображения в файл Excel — Selenium/Pandas/Python
Подсчет количества ячеек, заполненных данными на основе указанных дат в будущем
Запись в ячейку файла XLSX с помощью скрипта Sheets
Напишите цикл, который будет проверять все вкладки, количество листов, изменение цвета вкладок на основе значений трех ячеек
Как найти результат в соседней ячейке, если в ней используются буквы, форматирование и цифры?
Копирование ячеек без определенного текста в макросе Excel
Суммируйте все ячейки, для которых соответствующая ячейка не является формулой и не возвращает #ЗНАЧЕНИЕ И дата произошла в прошлом
Сопоставление нескольких числовых строк и проверка соответствующих дат в течение 90 дней
Фильтруйте и сортируйте данные с помощью нескольких критериев столбца и строки и сопоставляйте с ними соответствующие данные с помощью фиксированных и гибких return_arrays