2017-01-02 10 views
0

正在運行的Excel 2013和Windows 10也有類似的結構圖1所示:如何生成Excel中的數字輪廓

tree

由於gserg這個answer,我可以跟蹤深度變化從一行到下一,如示於下面圖2:

tree with depth indicator

如何使用該信息,或類似的計算,以產生一nume

tree with depth indicator and manual numeric outline

的溶液需要時深度爲27個水平行是1,000+

回答

2

這是基於你的7例的工作:如圖J列下面圖3的RIC輪廓列,但是通過將數組大小和列變量更改爲27(或您擁有的許多列),它很容易擴展。讓我知道它是否過度簡化 - 我意識到您的示例數據可能就是這樣,而您的實際數據比這更復雜。

Sub Outline(ws As Worksheet, columns As Integer, offset As Integer) 
    Dim row, lastRow As Long 
    Dim index, col As Integer 
    Dim level As String 

    Dim values(1 To 255) As Integer 
    values(1) = 0 

    lastRow = ws.UsedRange.Rows.Count 

    For row = 1 To lastRow 
    For index = 1 To columns 
     If ws.Cells(row, index).Value <> "" Then 
     values(index) = values(index) + 1 
     level = values(1) 

     If index > 1 Then 
      For col = 2 To index 
      level = level & "." & values(col) 
      Next col 
     End If 

     ws.Cells(row, columns + offset).NumberFormat = "@" 
     ws.Cells(row, columns + offset).Value = level 

     For col = index + 1 To columns 
      values(col) = 0 
     Next col 

     Exit For 
     End If 
    Next index 
    Next row 
End Sub 

enter image description here

+0

這是一個美麗的東西!我在13x11000陣列上測試過,效果很好。我有一個小問題。我嘗試將所有宏保留在單個工作簿中,然後在需要從該宏庫運行宏時加載該工作簿。由於「特定於標籤」的標識符,我無法使用該策略來運行您的宏。用「工作簿 - 選項卡」標識符更新解決方案很容易,以便我可以將宏觀外部化?如果沒有,目前的解決方案'做的工作',我會按原樣使用它。 –

+0

此外,您可能希望以打開/關閉陳述來更新您對非熟練宏用戶的答案,例如 '子綱要() '由Hambone ' http://stackoverflow.com/questions/41432134/how-to-generate-a-numeric-outline-in-excel 昏暗WS作爲工作表 ... Sub ' 作爲其他用戶的文檔,該解決方案在定義的數組之後的第一列中生成。 –

+0

感謝您的反饋...我很高興它的工作。它快嗎?我將代碼封裝在一個函數包裝器中,並將所有參數製作成工作表,列數和偏移量(輸出所在的位置,相對於最後一列)。我希望這是你的想法。現在,在上面的例子中,您可以將其稱爲「Outline Sheets(」Sheet1「),7,1」,或者將其縮放爲不同數量的列等。同樣,感謝您的反饋。 – Hambone