Meine Benutzer Design Ordnerstruktur in diesem Format zu transformieren:
Wie spezifischen hiearchy Baum Standard hiearchy Baum
würde ich diesen Ordner hiearchy wie Transformation auf "Windows" Format, wie folgt aus:
- Root \ Ordner1 \ Folder11
- Root \ Ordner1 \ Folder12
- Root \ Ordner1 \ Folder13 .... 012.351.
Also habe ich in VBA:
Sub GenerateTree()
Dim Level1 As String
Dim Level2 As String
Dim Level3 As String
Dim i As Integer
Dim num_line As Integer
Dim Result() As String
ReDim Result(i)
'Init
Level1 = ActiveSheet.Range("A2").Value
'For each value For num_line = 2 To 11
If Len(ActiveSheet.Range("B" & num_line).Value) > 0 Then 'If cell Bx contains something
Level2 = ActiveSheet.Range("B" & num_line).Value 'Update Level2
End If
Level3 = ActiveSheet.Range("C" & num_line).Value
'Result(num_line - 2) = Level1 & "/" & Level2 & "/" & Level3
ActiveSheet.Range("F" & num_line) = Level1 & "/" & Level2 & "/" & Level3
Next num_line
Aber mein Ergebnis nicht gut ist.
Ich habe mehrere Probleme, in meinem Ergebnis:
- Für
Root/Folder2/
, ich habe/an diesem Ende. Ich möchteRoot/Folder2
- Ich denke, haben, ich brauche eine Funktion hinzuzufügen, um das Maximum von
num_line
ich Ihre Hilfe
Lösung wissen müssen:
Sub GenerateTree()
Dim Level1 As String
Dim Level2 As String
Dim Level3 As String
Dim num_line_max As Integer
Dim num_line As Integer
Dim Result() As String
ReDim Result(i)
'Init
Level1 = ActiveSheet.Range("A2").Value
max_line_B = ActiveSheet.Cells(ActiveSheet.Rows.Count, "B").End(xlUp).Row
max_line_C = ActiveSheet.Cells(ActiveSheet.Rows.Count, "C").End(xlUp).Row
If max_line_B > max_line_C Then
num_line_max = max_line_B
Else
num_line_max = max_line_C
End If
'For each value
For num_line = 2 To num_line_max
If Len(ActiveSheet.Range("B" & num_line).Value) > 0 Then 'If cell Bx contains something
Level2 = ActiveSheet.Range("B" & num_line).Value 'Update Level2
End If
Level3 = ActiveSheet.Range("C" & num_line).Value
If Level3 <> "" Then
ActiveSheet.Range("F" & num_line) = Level1 & "/" & Level2 & "/" & Level3
Else
ActiveSheet.Range("F" & num_line) = Level1 & "/" & Level2
End If
Next num_line
End Sub
Verwenden Sie nicht IsNull, um zu überprüfen, ob eine Zelle Inhalt hat - etwas wie Len (ActiveSheet.Range ("B" & num_line) .Wert)> 0' funktioniert –
Vielen Dank, ich werde meinen Code in meinem Beitrag – AAzeeze