组合值列表的动态辅助单元格

Dynamic helper cell for list of combined values

更新:

本质上如果有公式: =SUBSTITUTE(FILTERXML("<t><s>"&TEXTJOIN("</s><s>'",TRUE,CHOOSE({1,2},IF((A2:A100="")+(A2:A100="-"),"",A2:A100),IF((B2:B100="")+(B2:B100="-"),"","-")))&"</s></t>","//s"),"'","")

这将按特定顺序组合 A 列和 B 列。是否可以修改此公式,以便在图像中的 E 列中重复上面的字母而不是连字符。


背景 在下图中,A 列和 B 列(原材料和子组件)中的数据在 C 列中按特定顺序排序/组合。在 D 列中,我创建了一个辅助列,它影响 'groups'原材料和子组件。

此辅助列的公式为:

=INDEX(A2:A20,MATCH(ROW(A2:A15),IF(A2:A20<>"",ROW(A2:A20),"")))

我遇到的问题是,理想情况下,辅助列应该在 'group' 的所有部分合并后对其进行分组。本质上,每次组更改时,我都试图使辅助列 +1。也就是说,不只是 AAA for a,b,c 它的 AAAA for A,a,b,c 或者 C for g 它的 CC for C and g 等等。所以本质上它与原始帮助列相同,但每个列都包含一个额外的值。

如果有人知道我可以在哪些方面做到这一点,那就太好了。

谢谢

=IF(C1="","",IFERROR(INDEX(A:A,MATCH(TRUE,EXACT(C1,A:A),0)),OFFSET(D1,-1,,,))) 并向下拖动。 EXACT 使匹配函数找到区分大小写的匹配项(为真)。如果未找到,则显示上方单元格中的值(偏移 -1 行)。

这太乱了....希望有人能帮助你:

D2中的公式:

=LET(X,FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s"),Y,FREQUENCY(IF(X="-",SEQUENCE(COUNTA(X))),IF(X="-",0,SEQUENCE(COUNTA(X)))),FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,REPT(FILTER(A2:A15&"</s><s>",A2:A15<>""),FILTER(Y,Y>0)+1))&"</s></t>","//s[.!='']"))

没有LET():

=FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,REPT(FILTER(A2:A15&"</s><s>",A2:A15<>""),FILTER(FREQUENCY(IF(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s")="-",SEQUENCE(COUNTA(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s")))),IF(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s")="-",0,SEQUENCE(COUNTA(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s"))))),FREQUENCY(IF(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s")="-",SEQUENCE(COUNTA(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s")))),IF(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s")="-",0,SEQUENCE(COUNTA(FILTERXML("<t><s>"&TEXTJOIN("</s><s>",,IF(COLUMN(A2:B15)=2,"-",IF(A2:B15="","",A2:B15)))&"</s></t>","//s")))))>0)+1))&"</s></t>","//s[.!='']")

这实际上是一个非常简单的解决方案,尽管它不是动态的。

=IFERROR(过滤器($A$3:$A$101,$A$3:$A$101=D6),I5)