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

问题描述 投票:0回答:1

我有一个已找到的项目和匹配项的列表,如下所示。

项目 比赛
苹果 树;窗
盒子 显微镜
烟囱 菜;栅栏
栅栏
耳机
显微镜 盒子;耳机
绘画
窗户 烟囱;苹果

我想将它们分组,其中另一个对象可以“到达”的每个对象都与该对象位于同一组中。例如,applefence 位于同一组,因为在“匹配”列中,我们可以转到 apple -> window -> chimney -> fence

但是,applemicroscope 不属于同一组,因为两者之间没有路径。它们不会在“匹配”列中相互列出,并且这些项目都不会在其“匹配”列中列出其他项目,依此类推。

项目 比赛
苹果 树;窗 1
盒子 显微镜 2
烟囱 菜;栅栏 1
1
栅栏 1
耳机 2
显微镜 盒子;耳机 2
绘画 3
窗户 烟囱;苹果 1

^这就是第三列 group, 的样子。有没有办法使用 LAMBDA 函数来做到这一点,最好不使用插件?

像 TEXTJOIN 这样的东西将不起作用,因为尽管存在“路径”,但没有字符串匹配可以连接“apple”和“chimney”,因为匹配不存在。

谢谢。

excel excel-formula matching excel-365
1个回答
0
投票
=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分层,为了防止意外我又加了两个,仅供参考。

© www.soinside.com 2019 - 2024. All rights reserved.