创建一个数组,其中包含一组精简的元素,这些元素与多个列中的条件匹配

创建一个数组,其中包含一组精简的元素,这些元素与多个列中的条件匹配

我想在一个更大的问题上做到这一点,但选择最简单的例子来证明概念。

底部是我的文件的 CSV(带有公式)。

我有点数据(四面体的顶点): 在此处输入图片描述

我有一组派生的支柱数据(四面体的边): 在此处输入图片描述

我正在尝试“自适应地”和“动态地”生成与在标签“D”的“S”或“E”列(而不是单个列查找)下匹配的所有支柱的支柱 ID 相对应的数组,并报告相应支柱的支柱 ID。

我希望结果看起来像这样:

在此处输入图片描述

我还希望能够为第一个结果正下方的其他节点设置类似的查找和表格,而不会发生位置冲突。据我所知,数据透视表不会提供解决方案。

我看到了一个参考但那里没有足够的信息让我理解或应用这种方法。

有人能解决我的问题吗?

CSV:

  • 公式
  • 使用已接受答案的输入进行更新,并使用 CSV 进行更新
  • 为应用于测地线穹顶结构分析的方法的下一阶段“概念验证”做好准备
|||||||||||||||||||||||||||
||||||Circumradius|1||||||||||||||||||||
||||||Edge Length|=H2*4/SQRT(6)||||||||||||||||||||
||||||Face Height|=H3*SIN(60*PI()/180)||||||||||||||||||||
||||||Tet Height|=SQRT(6)*H3/3||||||||||||||||||||
||||||Centroid|=H4/3||||||||||||||||||||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||||
ID|Node|G_ID||||x|y|z|||||||||||||||||||
A|1|A||||=H4-H6|0|0|||||||||||||||||||
B|2|B||||=-H6|=H3/2|0|||||||||||||||||||
C|3|C||||=-H6|=-H3/2|0|||||||||||||||||||
D|4|D||||0|0|=H5|||||||||||||||||||
|||||||||||||||||||||||||||
ID|Strut|G_ID|S|E||Vx|Vy|Vz||-Vx|-Vy|-Vz||Length||Sx|Sy|Sz||Ex|Ey|Ez|||||
AB|1|AB|A|B||=(U17-Q17)/$O17|=(V17-R17)/$O17|=(W17-S17)/$O17||=-G17|=-H17|=-I17||=SQRT( (U17-Q17)^2 + (V17-R17)^2 + (W17-S17)^2 )||=VLOOKUP($D17,$A$11:$I$14,7,0)|=VLOOKUP($D17,$A$11:$I$14,8,0)|=VLOOKUP($D17,$A$11:$I$14,9,0)||=VLOOKUP($E17,$A$11:$I$14,7,0)|=VLOOKUP($E17,$A$11:$I$14,8,0)|=VLOOKUP($E17,$A$11:$I$14,9,0)|||||
BC|2|BC|B|C||=(U18-Q18)/$O18|=(V18-R18)/$O18|=(W18-S18)/$O18||=-G18|=-H18|=-I18||=SQRT( (U18-Q18)^2 + (V18-R18)^2 + (W18-S18)^2 )||=VLOOKUP($D18,$A$11:$I$14,7,0)|=VLOOKUP($D18,$A$11:$I$14,8,0)|=VLOOKUP($D18,$A$11:$I$14,9,0)||=VLOOKUP($E18,$A$11:$I$14,7,0)|=VLOOKUP($E18,$A$11:$I$14,8,0)|=VLOOKUP($E18,$A$11:$I$14,9,0)|||||
CA|3|CA|C|A||=(U19-Q19)/$O19|=(V19-R19)/$O19|=(W19-S19)/$O19||=-G19|=-H19|=-I19||=SQRT( (U19-Q19)^2 + (V19-R19)^2 + (W19-S19)^2 )||=VLOOKUP($D19,$A$11:$I$14,7,0)|=VLOOKUP($D19,$A$11:$I$14,8,0)|=VLOOKUP($D19,$A$11:$I$14,9,0)||=VLOOKUP($E19,$A$11:$I$14,7,0)|=VLOOKUP($E19,$A$11:$I$14,8,0)|=VLOOKUP($E19,$A$11:$I$14,9,0)|||||
DA|4|DA|D|A||=(U20-Q20)/$O20|=(V20-R20)/$O20|=(W20-S20)/$O20||=-G20|=-H20|=-I20||=SQRT( (U20-Q20)^2 + (V20-R20)^2 + (W20-S20)^2 )||=VLOOKUP($D20,$A$11:$I$14,7,0)|=VLOOKUP($D20,$A$11:$I$14,8,0)|=VLOOKUP($D20,$A$11:$I$14,9,0)||=VLOOKUP($E20,$A$11:$I$14,7,0)|=VLOOKUP($E20,$A$11:$I$14,8,0)|=VLOOKUP($E20,$A$11:$I$14,9,0)|||||
DB|5|DB|D|B||=(U21-Q21)/$O21|=(V21-R21)/$O21|=(W21-S21)/$O21||=-G21|=-H21|=-I21||=SQRT( (U21-Q21)^2 + (V21-R21)^2 + (W21-S21)^2 )||=VLOOKUP($D21,$A$11:$I$14,7,0)|=VLOOKUP($D21,$A$11:$I$14,8,0)|=VLOOKUP($D21,$A$11:$I$14,9,0)||=VLOOKUP($E21,$A$11:$I$14,7,0)|=VLOOKUP($E21,$A$11:$I$14,8,0)|=VLOOKUP($E21,$A$11:$I$14,9,0)|||||
DC|6|DC|D|C||=(U22-Q22)/$O22|=(V22-R22)/$O22|=(W22-S22)/$O22||=-G22|=-H22|=-I22||=SQRT( (U22-Q22)^2 + (V22-R22)^2 + (W22-S22)^2 )||=VLOOKUP($D22,$A$11:$I$14,7,0)|=VLOOKUP($D22,$A$11:$I$14,8,0)|=VLOOKUP($D22,$A$11:$I$14,9,0)||=VLOOKUP($E22,$A$11:$I$14,7,0)|=VLOOKUP($E22,$A$11:$I$14,8,0)|=VLOOKUP($E22,$A$11:$I$14,9,0)|||||
|||||||||||||||||||||||||||
||||||||||||||||||||||||Struts joined at identified nodes (contributors to force/moment equations)|||
|||||||||||||||||||||||||||
|||||||||||||||||||||||||Node|ID|Strut
|||||||||||||||||||||||||4|=INDEX($A$11:$A$14,MATCH(Z27,$B$11:$B$14,0),1)|"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA27=$D$17:$D$22)+(AA27=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||
|||||||||||||||||||||||||Node|ID|Strut
|||||||||||||||||||||||||1|=INDEX($A$11:$A$14,MATCH(Z35,$B$11:$B$14,0),1)|"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA35=$D$17:$D$22)+(AA35=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||
|||||||||||||||||||||||||Node|ID|Strut
|||||||||||||||||||||||||2|=INDEX($A$11:$A$14,MATCH(Z43,$B$11:$B$14,0),1)|"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA43=$D$17:$D$22)+(AA43=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||
|||||||||||||||||||||||||Node|ID|Strut
|||||||||||||||||||||||||3|=INDEX($A$11:$A$14,MATCH(Z51,$B$11:$B$14,0),1)|"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"
|||||||||||||||||||||||||||"{=IFERROR(INDIRECT(""B""&SMALL(IF((AA51=$D$17:$D$22)+(AA51=$E$17:$E$22),ROW($D$17:$D$22),""""),ROW($D$17:$D$22)-16)),"""")}"

答案1

你问题里的链接是好的,但是需要做如下调整。

=IFERROR(INDIRECT("B"&SMALL(IF(X25=$D$17:$D$22;ROW($D$17:$D$22);"");ROW($D$17:$D$22)-16));"")

{}Ctrl+ Shift+输入数组公式Enter。结果如您所愿为 4、5 和 6。

调整:

  • INDIRECT("B"&— 在您的情况下,您想要的是 B 列中的值,而不是索引。
  • X25=而不是"a"=因为您想要该行的值。
  • ROW($D$17:$D$22)-16而不是ROW()-2因为行号来自 D 列,而不是来自放置公式的位置。

编辑

OR函数本身在数组公式中不起作用,因此请改用+运算符。

=IFERROR(INDIRECT("B"&SMALL(IF((X25=$D$17:$D$22)+(X25=$E$17:$E$22);ROW($D$17:$D$22);"");ROW($D$17:$D$22)-16));"")

结果:2、3、6

至于您的另一条评论,它并不直接基于源的大小 — 生成的数组实际上很大,只有部分结果是空字符串(""在公式中)。您可以通过选择 Y 列添加过滤器来隐藏空结果,转到数据 > 自动筛选并取消选中(空的)

相关内容