我有以下问题。谢谢你的帮助
有一棵从下到上都有定向根的树。如何使用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抄下来呢?(它不应该有空白或重复连接)
谢谢你的帮助。
发布于 2020-06-11 09:04:50
大图片: Stage1 :列出每一列的所有可能对,Stage2 :组合成对&删除重复的Stage3 :以所需的格式放置结果(L &M列表.)
[第1阶段]
思想:使用listA C加载原始的index# >为L&M B> load L&M值生成index#
假设数据准确地位于工作表中的table1中。用Sheet2做所有这些..。
创建模板
在D1中键入"list :“
在A7中键入“多少项:”
在A9中键入“多少可能的配对:”
放:
=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是“加载原始列表”的一部分。
然后:
=COUNT(E1:E5) in D7
=COMBIN(D7,2) in D9
现在,开始B部分:“为L&M生成index#”
然后:
在A13中键入"#“
A13中的1型
K13中的"L“类型
L13中的"M“类型
加入这些公式:
=IF(A14<$D$9,A14+1,"") in A15 and drag until A24
然后:
=D7 in C13
=C13-1 in C14
=IF(COUNTIF($C$14:C14,C14)=C14,C14-1,C14) in C15 and drag until C24
然后:
=$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#”。
最后..。
=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是“清理”版本
完成了模板的创建。为了更好的理解..。做这些..。
在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并执行以下操作。
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“类型
=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“生成另一个列表,唯一的对。
输入“有多少独特?”在AG1中
在FinalLstWithNoDuplicate中键入“AI1”
AK1中的"L“类型
AL1中的"M“类型
然后:
=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应该是您想要的结果。(:
注意:因为你得到了公式/方法的逻辑。那么你现在就知道了,取决于输入表的大小。所有给出的公式都是可调的。
希望能帮上忙。
https://stackoverflow.com/questions/62311242
复制相似问题