2016-11-23 63 views
1

我有一個兩列的excel文件。第一欄(A)有父母,第二欄有孩子(B)。行有信息,孩子的父母是什麼。從單個關係表構建多級數組

Parent | Child 
1  | 2 
1  | 4 
1  | 6 
2  | 3 
4  | 2 
4  | 3 
3  | 5 

我現在想要構建一個具有i樹結構的多級數組。 我想要實現的是,我後來想給一個家長(例如2),並收到一個關卡和兒童及其級別的列表。 全球目標應該是:我想知道,如果我移動兩個頂級父母,他們是否有相似的孩子?這應該可能從任何級別。

+0

項目1有項目2作爲一個孩子。第2項作爲孩子有第1項。第2項本身就是一個孩子,這不是一個樹狀結構。 –

+0

順便說一句:兒童的複數是兒童。如果英文拼寫一致,我們將如何使它難以學習。什麼:「我想知道,如果我移動兩個頂級父母,他們是否有相似的孩子?這應該是可能的,從任何級別。」?移動與擁有類似孩子有什麼關係?你如何調和「頂級」和「任何級別」? –

+1

同意@TonyDallimore。無法理解你想要達到的目標。也許一個期望的結果的圖片將有所幫助。 – CMArg

回答

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是否具有其自己的父代或父代。這些信息在建立這份清單時可能會有所幫助,但一旦清單完成後就不需要了。

您想將此數據加載到PDM系統。您可以將項目ABC及其子項添加到PDM系統,但不能添加STU,因爲它具有相同的子項。我不明白。你不能忽略項目STU,因爲它可能有父母引用它。

將數據加載到PDM系統將是一次性練習。創建上述結構不可能非常慢,但不一定要閃電般快。例如,五分鐘可能是美妙的,四十五分鐘可以接受,但二十小時是不可接受的。

+0

嘿,真正的標識符是字符串(文件名),列表是337.000行的列表,結果字典/數組/列表最多可以有15個級別。 – PhilHar

+0

你的幫助是驚人的。我需要更具體地解釋「平等的孩子」:如果ABC有KLM作爲孩子(4級),FGH有KLM作爲孩子(3級),他們有平等的孩子,不能進口。結構不需要是相同的。如果至少有一個孩子是平等的,那麼兩個程序集不能同時被導入。要理解原因:如果您同時導入兩個相同的文件,哪一個是正確的?導入過程崩潰。一個應該先導入,另一個應該從PDM系統重用作爲單一的事實來源。 – PhilHar

+0

如果我想了解您的需求並提供建設性意見,您將不得不在問題中包含更多信息。在你的例子中,數據1是2的孩子,2是1和2的孩子。1和2代表什麼樣的真實世界項目? 2是1,2和4的孩子。如果您只能導入2作爲組件,那麼您會導入1,2和4中的哪一個?另外兩個父母會發生什麼?導入1作爲最終的父母似乎是明智的,但如果你不能導入兩個孩子,那怎麼可能? –