我有一个包含两列的excel文件。第一栏(A)有父母,第二栏有孩子(B)。一行有信息,孩子的父母是什么。
Parent | Child
1 | 2
1 | 4
1 | 6
2 | 3
4 | 2
4 | 3
3 | 5
我现在想要构建一个具有i树结构的多级数组。 我想要实现的是,我后来想给一个家长(例如2)并收到一个关卡和孩子及其等级的列表。 全球目标应该是:我想知道,如果我移动两个顶级父母,他们是否有类似的孩子?这应该可以从任何级别进行。
答案 0 :(得分:0)
您没有提供足够的有关您的要求的信息,无法给出明确的答案,所以这里有一些想法。
我对结构的第一次尝试是:
| Parents | Children |
1 | 2 | 2 4 6 |
2 | 1 2 4 | 1 2 3 |
3 | 2 4 | 5 |
4 | 1 | 2 3 |
5 | 3 | |
6 | 1 | |
也就是说,对于每个项目,我都会有一个父母列表和一个孩子列表。我会考虑创建这个结构的努力,并考虑我可以轻松地从这个结构中回答所需的问题。这不是一个难以手动构建的结构,因此不应该是构建宏的困难结构。您想知道两个项目是否具有相同的子项。这可以通过检查这两个项目的子项列表来快速确定。
您需要对此结构的计划用途进行全面审核。但是,目前这种结构看起来令人满意。
在您的表格中,项目的标识符是数字1到6,没有间隙。如果这是真实数据的代表,我可能会定义一个用户类型并将数据保存为数组:
Type utItem
Parents() As Long
Children() as Long
End Type
Dim Items() as utItem
如果真正的标识符是字符串或分散的数字,我相信我会去字典。对于每个条目,密钥将是标识符,项目将是一对数组:一个用于父项,一个用于子项。
提案2
附加信息表明这样的结构是您所需要的:
Prnt | D?| Children
ABC | | BBC BBD FGI FGJ KLM
STU | D | BBC BBD FGI FGJ KLM
GHI | D | BBC BBD FGI FGJ KLM
ABD | | BBC FGJ
FGH | D | BBC FGI FGJ KLM
ABE | | BBC FGI FGJ KLM
三个字母标识符代表文件名。真正的文件名会更长,但这无关紧要。
对于每个父母,孩子都按字母顺序列出。然后按照父母序列不重要的孩子的标识符对列表进行排序。例如,STU和GHI有相同的孩子。如果列表按子节点排序,那么父节点,GHI行将首先出现。如果GHI行首先是重要的,那么您需要添加此要求。
第二列中的D表示该行与前一行具有相同的子项。
此列表中没有任何内容表明ABC,例如ABC是否有自己的父母或父母。这些信息在构建此列表时可能会有所帮助,但一旦列表完成就不需要它。
您希望将此数据加载到PDM系统。您可以将项目ABC及其子项添加到PDM系统,但不能添加STU,因为它具有相同的子项。我不明白。你不能只忽略项目STU,因为它可能有父母会引用它。
将数据加载到PDM系统将是一次性练习。创建上述结构不可能非常慢,但不一定要快速闪电。例如,五分钟可能是美妙的,四十五分钟是可以接受的,但二十小时是不可接受的。