比较 2 个集合的属性

Comparing attributes from 2 sets

我有 2 组数据,比方说,WorkersPlatform。两者都有属性,例如 DrillingGrindingHammering

我需要一种方法来比较 Excel 中两个集合中每个元素的属性。比如A平台需要锤钻,A工有钻磨锤,A平台就可以接受,B工只有钻,B平台就会被拒。

以下传播sheet清楚地说明了这一点:

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

在sheet中,"Canta Baila Pinta"是属性。到目前为止我提出的解决方案是: 为每个 WorkerPlatform 生成一个字符串,等于其属性

如何比较两个字符串,就像问一样,"Does string B contain any element not present in B?"

此外,此代码不是动态的...您将如何使其自动处理任何新添加的属性,而无需用户干预?

删除所有公式并使用这些:

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


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


=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)))


更新:

=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))))

spreadsheet demo

这不是动态的,但这里有另一种可能感兴趣的方法:

=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)))

我们的想法是将 Trabajadores 和 Plataformas 矩阵相乘(将 Sí 转换为 1,将其他任何值转换为零)以计算每个 worker/platform 组合的技能对应数量。然后通过执行另一个 mmult 来计算 plataformas 矩阵中需求的列总数,最后比较结果以查看哪些工人具有每个平台所需的技能数量。