2014-07-10 142 views
0

我正在爲某些數字資產系統的關鍵字樹工作。基本上我有將其導入這種格式(強制):Excel:父子樹視圖:動態添加節點(父)號

1,0,Top Level A 
2,0,Top Level B 
3,0,Top Level C 
4,1,Sub Level A 
5,1,Sub Level B 
6,4,Deepest Level A 
7,5,Deepest Level B 
8,3,Sub Level from Top Level C 

這在我的情況是這樣的(這是一個摘錄,我添加了一些空格,以使其更具可讀性):

1,  0, Natural and Organic Cosmetic (NOC) 
2,  1, bodycare 
3,  1, facecare 
4,  1, babycare 
5,  1, pregnancy 
6,  1, lipcare 
7,  1, hair 
8,  1, teeth 
9,  1, wellness 
10,  1, mencare (specific) 
11,  0, Model 
12, 11, application without product 
13, 11, application with product 
14, 11, adult 
15, 14, man 
16, 14, woman 

但這個名單竟得到維護和定期更新,並且爲了緩解過程中,我創建了其中非常列定義級別深度像這樣的Excel文件:

1  0 Natural and Organic Cosmetic (NOC) 
2  1  bodycare 
3  1  facecare 
4  1  babycare 
5  1  pregnancy 
6  1  lipcare 
7  1  hair 
8  1  teeth 
9  1  wellness 
10  1  mencare (specific) 
11  0 Model 
12 11  application without product 
13 11  application with product 
14 11  adult 
15 14   man 
16 14   woman 

現在我proble m是我想在「身體護理」下添加更多的子級項目。因此,我不得不手動更新所有父母的身份證號碼,這些身份證號碼不幸在第一行的唯一標識符和順序標識符的基礎上放棄。

當我添加新行時,如何動態更新父節點ID號?

+0

看來,這個問題並沒有保持我的格式。這裏是爲了更好理解的excel文件。 [Excel文件](http://www.weleda-toolbox.com/files/Keyword-tree_v1.xls) –

回答

1

該解決方案只能在樹的固定深度下工作。所以,如果你想添加一個3級節點,你將不得不相應地擴展公式...

此外,當你插入一個新行時,你將不得不拖動/複製列A和B中的公式。除非您可以使用表格(Excel 2007和更新版本),否則公式將自動添加(如果它們與整列相同)。

好的。我們的想法是檢查我們所處的深度級別,並在父級別中找到第一個(向上看)的條目。不是很優雅,但它的作品。

在A列中,您只需使用公式=ROW()-1即可獲得「唯一連續節點號」。

對於柱B(父節點號碼),可以使用LOOKUP這樣的:

=IF(C2<>"",0,IF(D2<>"",LOOKUP(2,1/(C$2:C2<>""),A$2:A2),IF(E2<>"",LOOKUP(2,1/(D$2:D2<>""),A$2:A2)))) 

條件(C$2:C7<>"")將返回的數組像1的用於匹配和0以下爲不匹配:

{0;0;1;0;0;0;1;0} 

由陣列分割1將導致一個這樣的數組:

{#DIV/0!;#DIV/0!;1#DIV/0!;#DIV/0!;#DIV/0!;1#DIV/0!} 

如果您使用LOOKUP的查找值大於該範圍內的任何值,它將返回最後一個數值,在本例中爲最後一次匹配的最後一個1

+0

非常感謝您的解決方案。這實際上是更新ID號碼的最佳方式。拖動公式的手動過程可以在我的樹準備就緒時應用到最後,從而解決問題。也謝謝你的明確解釋。 –

相關問題