我有一张这样的 table
我想制作 GROUP
的所有可能组合(但我想要 LOAD Case
值)
但一个组不能在同一组合中存在两次
例如我不能这样做
T + TL + W + Wx
但我可以做 T + TL + W
或 T + TL + Wx
获得组合后,我想添加组合的V、Hy、Hx、My、Mx
值
每个都在其相应的列中
因此,对于 V
列的 T & Tl
来说,它将是 3+8
= 11
我有一本更大的工作簿,可能有 900 种组合,我用手做了你在下面看到的内容,可能有一些计算错误,但这只是为了演示我需要什么。
我还希望单元格值是动态的,因此如果我更改橙色表中 V、Hy、Hx、My、Mx
列中的任何值,它将反射(reflect)在灰色表中
最佳答案
哇,这确实是两个问题,但我想通了:
第 1 部分是单个载荷工况与载荷工况组合的可能组合,其中相似组中列出的载荷工况不能彼此组合。这是最难的部分,我需要一些 lambda 才能到达那里:
改进的解决方案:
=LET(a, A3:A6,
b, B3:B6,
u, TOROW(UNIQUE(a)),
pa, REDUCE(TOCOL(u),SEQUENCE(COUNTA(u)-1,,COUNTA(u)-1,-1),
LAMBDA(c,d,
VSTACK(c,
REDUCE(TOCOL(u),DROP(u,,d),
LAMBDA(e,f,
TOCOL(IFS(ISERR(FIND(u,e)),e&";"&u),3)))))),
pas, SORT(DROP(REDUCE("",pa,LAMBDA(g,h,IFERROR(VSTACK(g,TEXTSPLIT(h,";")),""))),1)),
pb, DROP(REDUCE(0,SEQUENCE(ROWS(pas)),LAMBDA(x,y,VSTACK(x,REDUCE("",INDEX(pas,y,),LAMBDA(v,w,TOCOL(v&";"&TOROW(FILTER(b,a=w,"")),3)))))),1),
SUBSTITUTE(TRIM(SUBSTITUTE(pb,";"," "))," "," & "))
此版本不需要在最后使用另一个 lambda,如果数据增加(如注释中的示例文件中所示),它将完全卡住 excel。
旧版本:
=LET(a, A3:A6,
b, B3:B6,
u, TOROW(UNIQUE(a)),
pa, REDUCE(TOCOL(u),SEQUENCE(COUNTA(u)-1,,COUNTA(u)-1,-1),
LAMBDA(c,d,
VSTACK(c,
REDUCE(TOCOL(u),DROP(u,,d),
LAMBDA(e,f,
TOCOL(IFS(ISERR(FIND(u,e)),e&";"&u),3)))))),
pas, SORT(DROP(REDUCE("",pa,LAMBDA(g,h,IFERROR(VSTACK(g,TEXTSPLIT(h,";")),""))),1)),
pb, DROP(REDUCE(0,SEQUENCE(ROWS(pas)),LAMBDA(x,y,VSTACK(x,REDUCE("",INDEX(pas,y,),LAMBDA(v,w,TOCOL(v&";"&TOROW(FILTER(b,a=w,"")),3)))))),1),
BYROW(DROP(REDUCE("",pb,
LAMBDA(x, y,
VSTACK(x,
TEXTSPLIT(y,";")))),1,1),
LAMBDA(x,
TEXTJOIN(" & ",,x))))
基本上,它首先创建单个(唯一)组到这些唯一组的组合的可能排列,一次添加一个不同的组。
第 2 部分是需要将这些组排列转换为其等效的负载情况,如果有更多等效项,请将它们添加为另一个排列。
然后,为了将 V、Hy、Hx、My、Mx
值与此溢出范围内的相应载荷工况相加,我使用了以下内容:
=MAKEARRAY(ROWS(A8#),COLUMNS(D3:H6),
LAMBDA(r, c,
SUM(XLOOKUP(TEXTSPLIT(INDEX(A8#,r),," & "),
B3:B6,
INDEX(D3:H6,,c)))))
关于excel - 将排列与组限制和匹配这些的查找值相结合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76553034/