#excel #excel-formula #excel-365
#excel #excel-формула #excel-365
Вопрос:
Я надеюсь, что кто-нибудь может помочь, я ищу формульное решение следующей проблемы, если это возможно.
У меня есть столбец с именами людей, и для каждого из этих людей у меня есть 3 столбца данных из 3 разных источников — мне нужно определить, сколько раз данные в этих 3 столбцах совпадают для каждого человека. После тщательного поиска в Google я смог найти решения, в которых результат суммируется в ячейке, полученной из диапазона COUNTIF, однако мне нужны результаты, суммированные в одной строке для каждого человека.
Например: «Дейв» находится в ячейке A2, его результаты были следующими: столбец B2 = СБОЙ, C2 = ПРОХОД и D2 = ПРОХОД — итак, в этом случае у нас есть 2 совпадения, поскольку было 2 прохода. «Sue» находится в ячейке A3, ее результаты были следующими: столбец B3 = СБОЙ, C3 = СБОЙ и D3 = СБОЙ — таким образом, в этом случае у нас есть 3 совпадения, поскольку было 3 сбоя. «Колин» находится в ячейке A4, его результаты были следующими: столбец B4 = TBA, C4 = FAIL и D4 = PASS — так что в этом случае у нас 0 совпадений, поскольку ни один из результатов не совпадает.
В идеале я хотел бы, чтобы количество совпадений было указано в столбце E для каждого отдельного пользователя, поэтому результаты сопоставления Дейва будут в ячейке E2, Сью — в E3, а Дейва — в E4.
Заранее большое спасибо за вашу помощь.
С наилучшими пожеланиями,
TE
Комментарии:
1. Что ты считаешь? Неверные значения или пропущенные значения? Почему Дэйв получил 2 (2 паса), а Сью — 3 (0 пасов)?
2. По сути, я проверяю соответствие результатов, а не сами результаты.
Ответ №1:
Вы могли бы попробовать:
Формула в E1
:
=INDEX({0,2,3},MAX(COUNTIF(B1:D1,B1:D1)))
Немного объяснений для тех, кому интересно:
COUNTIF(B1:D1,B1:D1)
— Приведет к массиву из трех значений (по 1 на столбец), в зависимости от того, как часто эти значения появляются в трех ячейках.MAX()
— Получить максимальное значение из предыдущего массива.INDEX({0,2,3})
— Поскольку результатMAX()
может быть только 1-3, мы можем передать это как параметр строки вINDEX()
функцию. Затем это приведет к 0, 2 или 3.
Немного менее подробным и, возможно, более явным было бы:
=MIN(((B1=C1) (C1=D1) (B1=D1))*2,3)
С помощью этой последней формулы мы используем тот факт, что TRUE
и FALSE
эквивалентны 1
и 0
, и поэтому мы можем добавить несколько логических значений. С помощью некоторой математики мы можем получить желаемый результат.
Комментарии:
1. Боже, что это за колдовство? Не могли бы вы объяснить логику, стоящую за этим? Я протестировал, и это работает отлично, но я пытаюсь понять, как (и почему, лол) вы это разработали
2. @FoxfireAndBurnsAndBurns, я отредактировал ответ, включая некоторые пояснения и другую возможную формулу. Надеюсь, это поможет.
3. Братан, ты крут. Спасибо за добавление объяснения. Это проясняет мысли. Спасибо, что поделились
Ответ №2:
Вы можете использовать IF() MAX() и COUNTIF вместе взятые.
В E2:
=IF(MAX(COUNTIF(B2:D2,B2),COUNTIF(B2:D2,C2),COUNTIF(B2:D2,D2))=1,0,MAX(COUNTIF(B2:D2,B2),COUNTIF(B2:D2,C2),COUNTIF(B2:D2,D2)))
Таким образом, он выполняет три отдельных подсчета, чтобы увидеть, сколько «дублируется» из каждой ячейки.
Возьмите максимальное из них и сравните с 1, если это верно, тогда верните 0, иначе верните максимальное значение.
Ответ №3:
Будет ли что-то подобное работать в столбце E?
=if(countif(B2:D2,B2)=3,3,if(countif(B2:D2,B2)=2,2,if(countif(B2:D2,C2)=2,2,0)))
Дайте мне знать, если это сработает для вас.
Комментарии:
1. Это не сработало бы со Сью. Он вернул бы 0, а ОП сказал, что совпадения сью равны 3
2. В моем тестировании это действительно возвращает 3 для Sue. Смотрите изображение, добавленное к ответу выше.