Google sheets 比较两个集合的属性

Google sheets 比较两个集合的属性,google-sheets,match,google-sheets-formula,array-formulas,gs-vlookup,Google Sheets,Match,Google Sheets Formula,Array Formulas,Gs Vlookup,我有两组数据,比如说,Workers和Platform。两者都有属性,例如,钻孔,研磨,锤击 我需要一种方法,在Excel中比较两个集合中每个元素的属性。例如,如果平台A需要锤击和钻孔,而工人A需要锤击、研磨和锤击,他将被接受进入平台A。工人B只需要钻孔,因此他将被拒绝进入平台B 以下电子表格清楚地说明了这一点: 在表格中,“Canta Baila Pinta”是属性。到目前为止,我提出的解决方案是: 为每个工作者和平台生成一个字符串,该字符串等于其属性 我如何比较这两个字符串,好像在问:“字

我有两组数据,比如说,
Workers
Platform
。两者都有属性,例如,
钻孔
研磨
锤击

我需要一种方法,在Excel中比较两个集合中每个元素的属性。例如,如果平台A需要锤击和钻孔,而工人A需要锤击、研磨和锤击,他将被接受进入平台A。工人B只需要钻孔,因此他将被拒绝进入平台B

以下电子表格清楚地说明了这一点:

在表格中,“Canta Baila Pinta”是属性。到目前为止,我提出的解决方案是: 为每个
工作者
平台
生成一个字符串,该字符串等于其属性

我如何比较这两个字符串,好像在问:“字符串B是否包含B中不存在的元素?”

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

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



更新:


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

=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,其他任何值都转换为零),以计算每个工人/平台组合的技能对应数。然后,通过执行另一个mmult,计算plataformas矩阵中需求的列总数,最后比较结果,以确定哪些工人具有每个平台所需的技能数量。

共享一份包含所需输出示例的工作表副本(并避免向下投票跳过excel标记lol)。非常感谢。我不知道诸如QUERY、ROW和INDIRECT这样的公式存在,但我一直需要它们。还有最后一个谜我解不出来。我们已经有了集合A(工人)和集合b(平台)的属性值。例如,阿尔贝托具有“康塔”和“贝拉”属性。1号站台有“康塔”。如何测试以下内容:集合B中的值X是否存在集合A中不存在的属性?例如,Platform2 x Alberto应该“真实”地回答这个问题。2号站台有品塔,阿尔贝托没有。非常感谢你的帮助,兄弟。我不确定我是否理解你。。。你的意思是像消除重复的细胞,例如B2包含2倍的康塔,所以摆脱第二康塔?是的!抱歉耽搁了。我的意思是这样的:想象一下在每个单元格中分割每个结果。是的!抱歉耽搁了。我的意思是这样的:想象一下在每个单元格中分割每个结果。我们在B2号牢房为阿尔贝托准备了“坎塔比拉”,为“普拉塔福尔玛1号”准备了“坎塔”//如果“阿尔贝托”想在“普拉塔福尔玛1号”工作,他必须至少具备普拉塔福尔玛1号的所有技能。这两个“集合”是“Plataforma”和“Workers”。这些值是“Baila”、“Pinta”、“Canta”,这就是为什么我需要一个测试来知道,对于任何给定的单元格,“Plataforma”中是否存在“Workers”中不存在的元素?谢谢,昨天我在做一些事情。我不明白整个公式,但是^0部分非常优雅。非常感谢。
=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))))
=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)))