首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Excel找到树的方向根?

如何使用Excel找到树的方向根?
EN

Stack Overflow用户
提问于 2020-06-10 19:04:29
回答 1查看 142关注 0票数 0

我有以下问题。谢谢你的帮助

有一棵从下到上都有定向根的树。如何使用Excel找到所有连接(成对)?

例如,对于儿童12,12-9,12-6,12-3和12-1,儿童9;9-6,9-3和9-1,儿童6;6-3和6-1,儿童3,3-1是连接。

我该写些什么给L2和M2抄下来呢?(它不应该有空白或重复连接)

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-11 09:04:50

大图片: Stage1 :列出每一列的所有可能对,Stage2 :组合成对&删除重复的Stage3 :以所需的格式放置结果(L &M列表.)

[第1阶段]

思想:使用listA C加载原始的index# >为L&M B> load L&M值生成index#

假设数据准确地位于工作表中的table1中。用Sheet2做所有这些..。

创建模板

  • 在A1中键入“选择”

在D1中键入"list :“

在A7中键入“多少项:”

在A9中键入“多少可能的配对:”

放:

代码语言:javascript
运行
复制
=IF(LEN(OFFSET(Sheet1!$A$1,ROW()-1,$B$1-1))=0,"",OFFSET(Sheet1!$A$1,ROW()-1,$B$1-1)) in E1 and drag until E5

表E1是“加载原始列表”的一部分。

然后:

代码语言:javascript
运行
复制
=COUNT(E1:E5) in D7
=COMBIN(D7,2) in D9

现在,开始B部分:“为L&M生成index#”

然后:

  • 类型在A11中的“生成列表”

在A13中键入"#“

A13中的1型

K13中的"L“类型

L13中的"M“类型

加入这些公式:

代码语言:javascript
运行
复制
=IF(A14<$D$9,A14+1,"") in A15 and drag until A24

然后:

代码语言:javascript
运行
复制
=D7 in C13
=C13-1 in C14

=IF(COUNTIF($C$14:C14,C14)=C14,C14-1,C14) in C15 and drag until C24

然后:

代码语言:javascript
运行
复制
=$C$13-C14 in D14 and drag until D24
=INDEX($E$1:$E$5,D14) in E14 and drag until E24

=IF(E14<>E13,G13+1,G13) in G14 and drag until G24
=COUNTIF($G$14:G14,G14)+G14 in H14 and drag until H24
=INDEX($E$1:$E$5,H14) in I14 and drag until I24

B部分的结尾,“生成index#”。

最后..。

代码语言:javascript
运行
复制
=IF(A14="","",E14) in K14 and drag until K24
=IF(A14="","",I14) in L14 and drag until L24

列I&E是C部分,“使用index#加载L&M值”。其中,列K&L是“清理”版本

完成了模板的创建。为了更好的理解..。做这些..。

  • 类型“使用”多少项“值”在C26中生成“索引#”

在K26中键入“按所需格式对输出列表排序”

在D27中键入"generate #“

在E28中键入“使用索引#从列表中获取L值”

在G30中键入“从值列表中获取项目计数”

在H31中键入“使用”项计数“值”生成“索引#”

在I32中键入“使用索引从列表中获取M值”

使用模板

若要使用,请在单元格B1中输入列号1-10,结果在K13表中。

备注

这是为1列生成对列表。您可以通过在sheet3中执行同样的操作来扩展它的另一列。更改B1 (select列)值,以查看/操作K13表中的结果/列表。

试着理解公式的每一部分,问你是否卡住了/(^_^)

参考文献:

https://exceljet.net/index-and-match

https://exceljet.net/excel-functions/excel-combin-function

[第2阶段]

想法:为每个工作表生成地址>使用间接()将列表加载为一个组合列表

步骤:将上述内容复制到sheet3并选择第2列(Sheet2中的第1列)。然后重复..。Sheet4 >第5栏.Sheet6 >第5栏.直到Sheet10..。现在创建Sheet11并执行以下操作。

  • 型A1中的"Sheetx“型

A2中的"2“类型

在Column#中键入“B1”

B2中的"1“类型

在SheetAddrs中键入“C1”

在AddrsOfColmnK中键入“E1”

在AddrsOfColmnK中键入“F1”

在H1中键入“每列列出多少对”

在J1中键入"from“

J2中的"1“类型

在K1中键入to

然后:

=A2+1 in A3,拖到A10 =B2+1 in B3,拖到B10 ="Sheet"&A2&"!“在C2中拖到C10 =C2和E2中的“K:K”,在F2中拖到E10 =C2和“L:L”,在H2中拖到F10 =COUNT(E2,TRUE),在K2中拖到H10 =J2+H2-1,在J3中拖到K10 =K2+1,拖到J10中。

使用上面的输入..。现在,为每一列中的每一对生成确切的地址并加载它。

在CombineColumnPairList中键入“M1”

在Column#中键入“P1”

在pair#中键入“Q1”

在S1中键入“Gnerate-L”

在V1中键入“Gnerate-M”

在FinalLstWithDuplicate中键入“Y1”

Z1中的"L“类型

AA1中的"M“类型

代码语言:javascript
运行
复制
=IF(N1<SUM(H:H),N1+1,"") in N2 and drag until N60
=IF(N2="","",MATCH(N2,$J$2:$J$11,1)) in P2 and drag until P60
=IF(N2="","",IF(P2<>P1,1,Q1+1)) in Q2 and drag until Q60
=INDEX(C:C,MATCH(P2,B:B,0))&"K" in S2 and drag until S60
=13+Q2 in T2 and drag until T60
=INDEX(C:C,MATCH(P2,B:B,0))&"L" in V2 and drag until V60
=T2 in W2 and drag until W60
=INDIRECT(S2&T2,TRUE) in Z2 and drag until Z60
=INDIRECT(V2&W2) in AA2 and drag until AA60

完成了完整的列表。在Z&AA栏中

[第3阶段]

想法:从stage2的完整名单..。>使用countif(),如果1,则这对是唯一的>使用"1“生成另一个列表,唯一的对。

  • 类型在AC1中的“第三阶段找到唯一”

输入“有多少独特?”在AG1中

在FinalLstWithNoDuplicate中键入“AI1”

AK1中的"L“类型

AL1中的"M“类型

然后:

代码语言:javascript
运行
复制
=Z2&"-"&AA2 in AD2 and drag until AD30
=COUNTIF($AD$2:AD2,AD2) in AE2 and drag until AE30
=IF(AE2=1,AF1+1,AF1) in AF2 and drag until AF30
=COUNTIF(AE:AE,1) in AG2
=IF(AJ1<$AG$2,AJ1+1,"") in AJ2 and drag until AJ30
=IFERROR(INDEX(Z:Z,MATCH(AJ2,AF:AF,0)),"") in AK2 and drag until AK30
=IFERROR(INDEX(AA:AA,MATCH(AJ2,AF:AF,0)),"") in AL2 and drag until AL30

列AK&AL应该是您想要的结果。(:

注意:因为你得到了公式/方法的逻辑。那么你现在就知道了,取决于输入表的大小。所有给出的公式都是可调的。

希望能帮上忙。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62311242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档