Сравнение атрибутов из 2 комплектов - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть 2 набора данных, скажем, Workers и Platform.Оба имеют атрибуты, скажем, Drilling, Grinding, Hammering.

Мне нужен способ сравнить в Excel атрибуты для каждого элемента в обоих наборах.Например, если платформе A требуется молотить и сверлить, а у работника A есть сверление, шлифование и ударение, он будет принят на платформу A. У работника B есть только сверление, поэтому он будет отклонен на платформе B.

Следующая таблица ясно иллюстрирует это:

https://docs.google.com/spreadsheets/d/1qvkZbDNIWe9gmFjGNr4dhtvqagJZOkS89YD4fzqjvQQ/edit?usp=sharing

На листе «Canta Baila Pinta» - это атрибуты.Решение, которое я до сих пор нашел, состоит в следующем: генерировать строку для каждого Worker и Platform, что соответствует его атрибутам

Как мне сравнить обе строки, как будто спрашивать: «Есть ли строка Bсодержать какой-либо элемент, отсутствующий в B? "

Кроме того, этот код не является динамическим ... как бы вы сделали так, чтобы любой новый добавленный атрибут обрабатывался автоматически, без вмешательства пользователя?

Ответы [ 2 ]

0 голосов
/ 19 сентября 2019

Это не динамично, но вот другой подход, который может представлять интерес:

=ArrayFormula(mmult(if(Trabajadores!E2:G6="Sí",1,0),if(Plataformas!B2:F4="Sí",1,0))=
mmult(transpose(row(Plataformas!B2:F4))^0,if(Plataformas!B2:F4="Sí",1,0)))

enter image description here

Идея состоит в том, что вы умножаетеМатрицы Trabajadores и Plataformas (преобразующие Sí в 1, все остальное в ноль) для подсчета количества соответствий в навыках для каждой комбинации «работник / платформа».Затем вы вычисляете итоги потребностей столбца в матрице plataformas, выполнив еще один mmult, и, наконец, сравните результаты, чтобы увидеть, какие работники имеют необходимое количество навыков для каждой платформы.

0 голосов
/ 19 сентября 2019

удалите все свои формулы и используйте их:

=ARRAYFORMULA(
 IF(E2:E="Sí", E1, )&
 IF(F2:F="Sí", F1, )&
 IF(G2:G="Sí", G1, ))

0


=ARRAYFORMULA(SUBSTITUTE(QUERY(IF(INDIRECT("B2:"&ROW()-1)<>"", 
 INDIRECT("A2:A"&ROW()-1), ),,999^99), " ", ))

0


=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A, 
 {Trabajadores!A:A, Trabajadores!H:H}, 2, 0)&" "&
 HLOOKUP(B1:F1, {Plataformas!B1:1; INDIRECT("Plataformas!B"&
 MATCH("Endstring", Plataformas!A:A, 0)&":"&
 MATCH("Endstring", Plataformas!A:A, 0))}, 2, 0)))

0


ОБНОВЛЕНИЕ:

=ARRAYFORMULA(IFERROR(REGEXMATCH(IFERROR(VLOOKUP(A2:A, 
 {Trabajadores!A:A, Trabajadores!H:H}, 2, 0)&SUBSTITUTE(COLUMN(B1:F1)^0, 1, )), 
 SUBSTITUTE(ROW(INDIRECT("A2:A"&COUNTA(A2:A)+1))^0, 1, )&
 HLOOKUP(B1:F1, {Plataformas!B1:1; INDIRECT("Plataformas!B"&
 MATCH("Endstring", Plataformas!A:A, 0)&":"&
 MATCH("Endstring", Plataformas!A:A, 0))}, 2, 0))))

0

демонстрация электронной таблицы

...