/ / Excelの定義済みレベル(式またはVBA)に基づいて階層を作成する-Excel、VBA、式、階層

Excel(フォーミュラまたはVBA)で事前定義されたレベルに基づいて階層を作成する - Excel、VBA、数式、階層

以下は、現在のExcelの表です。

ここに画像の説明を入力

3列目を自動的に生成したいすべてのアクティビティの階層ビューとして黄色で。この課題を数式で解決しようとしましたが、それが最善の方法であるかどうかはわかりません。

誰かが既にExcelでこの要件に直面して解決していますか?私を導くアドバイス/提案はありますか?

これからもよろしくお願いします!

回答:

回答№1は0

このマクロを貼り付けることができます ワークシートのコードモジュール そこから実行します:

Sub CalculateHierarchy()

Dim rLevels As Range, rLevel As Range
Dim level As Integer, maxLevels As Integer, cur As Integer, i As Integer
Dim h As String, counts() As Integer

Set rLevels = Range("A2:A" & Range("A1").End(xlDown).Row)
maxLevels = WorksheetFunction.Max(rLevels)
ReDim counts(1 To maxLevels)

cur = 1
For Each rLevel In rLevels
level = rLevel.Value
If level > cur + 1 Then
rLevel.Activate
MsgBox "error at row " & rLevel.Row & " level increase by more than 1"
Exit Sub
End If

h = ""
counts(level) = counts(level) + 1
For i = 1 To level
h = h & "." & counts(i)
Next
h = Mid(h, 2)
For i = level + 1 To UBound(counts)
counts(i) = 0
Next
rLevel.Offset(, 2).Value = h
cur = level
Next
rLevel.Offset(0, 2).Interior.ColorIndex = 6
End Sub