如何使用 Excel 查找树的方向根?
How to find directional roots of a tree using Excel?
我有以下问题。感谢您的帮助
有一棵树,有向根从下到上。
如何使用 Excel 找到所有连接(成对)?
例如对于列E->对于child12; 12-9、12-6、12-3 和 12-1,用于 child 9; 9-6、9-3 和 9-1,为 child 6; 6-3和6-1,对于child3,3-1是连线。
L2和M2写什么抄下来? (它不应该有空白或重复连接)
感谢您的帮助。
大图:第 1 阶段:列出每一列的所有可能对 | Stage2:组合成对并删除重复项 |阶段 3:将结果放入所需格式(L & M 列表..)
[[第 1 阶段]]
想法:加载原始列表[A] > 为 L & M 生成索引号 [B] > 使用索引号加载 L & M 值 [C]
假设数据完全按照 table1 中的 Sheet 定位。在 Sheet2..
中完成所有这些
[创建模板]
在 A1
中输入 "choose"
在 D1
中输入 "list :"
在 A7
中输入 "how many item :"
在 A9 中输入 "how many possible pairs :"
输入:
=IF(LEN(OFFSET(Sheet1!$A,ROW()-1,$B-1))=0,"",OFFSET(Sheet1!$A,ROW()-1,$B-1)) in E1 and drag until E5
table E1 是 "load the original list" [A] 部分。
然后:
=COUNT(E1:E5) in D7
=COMBIN(D7,2) in D9
现在,开始第 [B] 部分:"generate index# for L & M"
然后:
在 A11
中输入 "generate list"
在 A13 中输入“#”
在 A13 中输入 1
在 K13
中键入 "L"
在 L13
中输入 "M"
输入这些公式:
=IF(A14<$D,A14+1,"") in A15 and drag until A24
然后:
=D7 in C13
=C13-1 in C14
=IF(COUNTIF($C:C14,C14)=C14,C14-1,C14) in C15 and drag until C24
然后 :
=$C-C14 in D14 and drag until D24
=INDEX($E:$E,D14) in E14 and drag until E24
=IF(E14<>E13,G13+1,G13) in G14 and drag until G24
=COUNTIF($G:G14,G14)+G14 in H14 and drag until H24
=INDEX($E:$E,H14) in I14 and drag until I24
[B] 部分结束,"generating the index#"。
最后..
=IF(A14="","",E14) in K14 and drag until K24
=IF(A14="","",I14) in L14 and drag until L24
列 I&E 是 [C] 部分,"load L & M value using index#"。
其中 K&L 列是 'cleaned' 版本
完成创建模板..为了更好的理解..做这些..
在 C26
中输入 "use " 要生成多少项“值 "index #"”
在 K26
中键入 "sort the output list as per wanted format"
在 D27
中输入 "generate index #"
在 E28
中输入 "get L value from list using index #"
在 G30
中输入 "get item count from value list"
在 H31
中键入 "use "要生成 "index #" 的项目计数“值”
在 I32 中输入 "get M value from list using index #"
[使用模板]
要使用,在单元格B1中输入1-10的列号,结果在K13中table..
[备注]
这是为 1 列生成对列表。您可以通过在 sheet3 中执行相同的操作来将其扩展到另一列。将 sheet3 中的 B1(select 列)值更改为 see/manipulate K13 table.
中的 result/list
一直做到完成&试着理解公式的每一部分..,问你是否卡住了/(^_^)
一些参考:
https://exceljet.net/index-and-match
https://exceljet.net/excel-functions/excel-combin-function
[[第 2 阶段]]
想法:为每个生成地址 sheet > 使用 indirect() 加载列表作为组合列表
步骤:将以上内容复制到 sheet3 并选择第 2 列(Sheet2 中的第 1 列).. 然后重复.. Sheet4 > 第 5.. Sheet6 > 第 5 列 .. 直到 Sheet10.. 现在创建 Sheet11 并执行这些操作..
在 A1
中输入 "Sheet[x]"
在 A2 中输入“2”
在 B1
中输入 "Column#"
在 B2 中输入“1”
在 C1
中输入 "SheetAddrs"
在 E1
中输入 "AddrsOfColmnK"
在 F1
中输入 "AddrsOfColmnK"
在 H1
中输入 "how many pairs listed per column"
在 J1
中输入 "from"
在 J2 中输入“1”
在 K1 中输入 "to"
然后:
=A3中的A2+1一直拖到A10
=B2+1 在 B3 中拖动直到 B10
="Sheet"&A2&"!"在 C2 中拖动直到 C10
=C2&"K:K" 在 E2 中拖动直到 E10
=C2&"L:L" 在 F2 中拖动直到 F10
=COUNT(INDIRECT(E2,TRUE)) 在 H2 中拖动直到 H10
=J2+H2-1 在K2 拖到K10
=K2+1 在 J3 中拖动直到 J10
使用上面的作为输入..现在为每一列中的每一对生成准确的地址并加载它..
在 M1
中输入 "CombineColumnPairList"
在 P1
中输入 "Column#"
在 Q1 中输入 "pair#"
在 S1
中输入 "Gnerate-L-Addrs"
在 V1
中输入 "Gnerate-M-Addrs"
在 Y1
中输入 "FinalLstWithDuplicate"
在 Z1
中输入 "L"
在 AA1
中输入 "M"
=IF(N1<SUM(H:H),N1+1,"") in N2 and drag until N60
=IF(N2="","",MATCH(N2,$J:$J,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
中输入“[第 3 阶段] 查找唯一”
在 AG1
中输入 "howmany unique?"
在 AI1
中输入 "FinalLstWithNoDuplicate"
在 AK1
中输入 "L"
在 AL1 中输入 "M"
然后:
=Z2&"-"&AA2 in AD2 and drag until AD30
=COUNTIF($AD: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,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 列应该是您想要的结果..(:
注意:既然你已经得到了 formula/method 的逻辑..那么你现在知道根据输入 table 大小..所有给定的公式都是 adjustable..
希望对您有所帮助。
我有以下问题。感谢您的帮助
有一棵树,有向根从下到上。 如何使用 Excel 找到所有连接(成对)?
例如对于列E->对于child12; 12-9、12-6、12-3 和 12-1,用于 child 9; 9-6、9-3 和 9-1,为 child 6; 6-3和6-1,对于child3,3-1是连线。
L2和M2写什么抄下来? (它不应该有空白或重复连接)
感谢您的帮助。
大图:第 1 阶段:列出每一列的所有可能对 | Stage2:组合成对并删除重复项 |阶段 3:将结果放入所需格式(L & M 列表..)
[[第 1 阶段]]
想法:加载原始列表[A] > 为 L & M 生成索引号 [B] > 使用索引号加载 L & M 值 [C]
假设数据完全按照 table1 中的 Sheet 定位。在 Sheet2..
中完成所有这些[创建模板]
在 A1
中输入 "choose"在 D1
中输入 "list :"在 A7
中输入 "how many item :"在 A9 中输入 "how many possible pairs :"
输入:
=IF(LEN(OFFSET(Sheet1!$A,ROW()-1,$B-1))=0,"",OFFSET(Sheet1!$A,ROW()-1,$B-1)) in E1 and drag until E5
table E1 是 "load the original list" [A] 部分。
然后:
=COUNT(E1:E5) in D7
=COMBIN(D7,2) in D9
现在,开始第 [B] 部分:"generate index# for L & M"
然后:
在 A11
中输入 "generate list"在 A13 中输入“#”
在 A13 中输入 1
在 K13
中键入 "L"在 L13
中输入 "M"
输入这些公式:
=IF(A14<$D,A14+1,"") in A15 and drag until A24
然后:
=D7 in C13
=C13-1 in C14
=IF(COUNTIF($C:C14,C14)=C14,C14-1,C14) in C15 and drag until C24
然后 :
=$C-C14 in D14 and drag until D24
=INDEX($E:$E,D14) in E14 and drag until E24
=IF(E14<>E13,G13+1,G13) in G14 and drag until G24
=COUNTIF($G:G14,G14)+G14 in H14 and drag until H24
=INDEX($E:$E,H14) in I14 and drag until I24
[B] 部分结束,"generating the index#"。
最后..
=IF(A14="","",E14) in K14 and drag until K24
=IF(A14="","",I14) in L14 and drag until L24
列 I&E 是 [C] 部分,"load L & M value using index#"。 其中 K&L 列是 'cleaned' 版本
完成创建模板..为了更好的理解..做这些..
在 C26
中输入 "use " 要生成多少项“值 "index #"”在 K26
中键入 "sort the output list as per wanted format"在 D27
中输入 "generate index #"在 E28
中输入 "get L value from list using index #"在 G30
中输入 "get item count from value list"在 H31
中键入 "use "要生成 "index #" 的项目计数“值”在 I32 中输入 "get M value from list using index #"
[使用模板]
要使用,在单元格B1中输入1-10的列号,结果在K13中table..
[备注]
这是为 1 列生成对列表。您可以通过在 sheet3 中执行相同的操作来将其扩展到另一列。将 sheet3 中的 B1(select 列)值更改为 see/manipulate K13 table.
中的 result/list一直做到完成&试着理解公式的每一部分..,问你是否卡住了/(^_^)
一些参考:
https://exceljet.net/index-and-match
https://exceljet.net/excel-functions/excel-combin-function
[[第 2 阶段]]
想法:为每个生成地址 sheet > 使用 indirect() 加载列表作为组合列表
步骤:将以上内容复制到 sheet3 并选择第 2 列(Sheet2 中的第 1 列).. 然后重复.. Sheet4 > 第 5.. Sheet6 > 第 5 列 .. 直到 Sheet10.. 现在创建 Sheet11 并执行这些操作..
在 A1
中输入 "Sheet[x]"在 A2 中输入“2”
在 B1
中输入 "Column#"在 B2 中输入“1”
在 C1
中输入 "SheetAddrs"在 E1
中输入 "AddrsOfColmnK"在 F1
中输入 "AddrsOfColmnK"在 H1
中输入 "how many pairs listed per column"在 J1
中输入 "from"在 J2 中输入“1”
在 K1 中输入 "to"
然后:
=A3中的A2+1一直拖到A10 =B2+1 在 B3 中拖动直到 B10 ="Sheet"&A2&"!"在 C2 中拖动直到 C10 =C2&"K:K" 在 E2 中拖动直到 E10 =C2&"L:L" 在 F2 中拖动直到 F10 =COUNT(INDIRECT(E2,TRUE)) 在 H2 中拖动直到 H10 =J2+H2-1 在K2 拖到K10 =K2+1 在 J3 中拖动直到 J10
使用上面的作为输入..现在为每一列中的每一对生成准确的地址并加载它..
在 M1
中输入 "CombineColumnPairList"在 P1
中输入 "Column#"在 Q1 中输入 "pair#"
在 S1
中输入 "Gnerate-L-Addrs"在 V1
中输入 "Gnerate-M-Addrs"在 Y1
中输入 "FinalLstWithDuplicate"在 Z1
中输入 "L"在 AA1
中输入 "M"=IF(N1<SUM(H:H),N1+1,"") in N2 and drag until N60
=IF(N2="","",MATCH(N2,$J:$J,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
中输入“[第 3 阶段] 查找唯一”在 AG1
中输入 "howmany unique?"在 AI1
中输入 "FinalLstWithNoDuplicate"在 AK1
中输入 "L"在 AL1 中输入 "M"
然后:
=Z2&"-"&AA2 in AD2 and drag until AD30
=COUNTIF($AD: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,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 列应该是您想要的结果..(:
注意:既然你已经得到了 formula/method 的逻辑..那么你现在知道根据输入 table 大小..所有给定的公式都是 adjustable..
希望对您有所帮助。