excel 如何将这些对象分组为可以相互链接的对象?

k10s72fa  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(69)

我有一个列表的项目和匹配已找到的,像这样。
| 项目|匹配||
| --|--|--|
| 苹果|树;窗||
| 框|显微镜||
| 烟囱|盘;栅栏||
| 菜|||
| 围栏|||
| 耳机|||
| 显微镜|盒子;耳机||
| 绘画|||
| 窗口|烟囱;苹果||
我想把它们分组,每个可以被另一个对象“够到”的对象都和那个对象在同一个组里,比如说,applefence 在同一个组里,因为在“匹配”列里,我们可以选择 apple -> window-> chimney -> fence
然而,applemicroscope 不在同一个组中,因为两者之间没有路径。它们不会在“匹配项”列中列出彼此,并且这些项目中没有一个会在其“匹配项”列中列出另一个项目,依此类推。
| 项目|匹配|组|
| --|--|--|
| 苹果|树;窗| 1 |
| 框|显微镜| 2 |
| 烟囱|盘;栅栏| 1 |
| 菜|| 1 |
| 围栏|| 1 |
| 耳机|| 2 |
| 显微镜|盒子;耳机| 2 |
| 绘画|| 3 |
| 窗口|烟囱;苹果| 1 |
^这是第三列,group, 应该是这样的。我有没有办法用LAMBDA函数来完成这个操作,最好不要使用加载项?
像TEXTJOIN这样的方法将不起作用,因为尽管存在“path”,但没有字符串匹配将连接“apple”和“chimney”,因为匹配不存在。
谢谢.

vybvopom

vybvopom1#

给予这个试试:

=XMATCH("*"&A2&"*",REDUCE(,A$1:A10,LAMBDA(m,n,IF(COUNT(FIND(n,m)),m,VSTACK(m,REDUCE(n,A2:A10,LAMBDA(x,y,TEXTJOIN(";",,x,XLOOKUP(TEXTSPLIT(x,";"),A:A,B:B,"")))))))),2)-1

字符串


的数据

9nvpjoqh

9nvpjoqh2#

=MIN(
    IFNA(
        VLOOKUP("*"&
            LET(
                Z,LAMBDA(X,UNIQUE(TEXTSPLIT(TEXTJOIN(";",,REPT(A$2:B$10,BYROW(A$2:A$10&B$2:B$10,LAMBDA(S,COUNT(FIND(X,S))>0)))),,";"))),
                Z(Z(Z(Z(A2)))))&"*",
                IF({1,0},A$1:A$1&B$1:B1,C$1:C1),2,),9),N(C1)+1)

字符串


的数据
Z拆分水平,我多加了两个,以防意外,仅供参考。

相关问题