2017-01-20 2 views
0

を階層を作成します。私の現在のExcelの表である:私は、自動的にすべての階層ビューとして黄色で3番目の列を生成したいは、Excelで事前定義されたレベル(式またはVBA)に基づいて以下に

enter image description here

活動。私は数式でこの問題を解決しようとしましたが、それを行う最良の方法であるかどうかはわかりません。

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

多くのありがとうございます。

+2

あなたは階層がフォローしたいロジックを説明した場合には有用であろう。 – Zerk

+0

私はこのロジックに従ってください:レベル1、次に1.Xレベル2、次にレベル1.1.3。 –

+0

ロジックはまだ完全に定義されていません。たとえば、行8( 'Activity 7')を考えてみましょう。たとえば、1.1.1.5ではなく' 1.2 'になるはずです。 16行目の「Activity 15」も同じです... –

答えて

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 
+0

ありがとうA.S.H.私はこのマクロを試し、あなたにすぐにフィードバックを与えます。 –

+0

"Me.Activate:rLevel.Activate": "Meキーワードの無効な使用"というメッセージが表示されました。 Excelで特定のアドオンが必要ですか? –

+0

私の答えと同じように、コードをワークシートのコードモジュールに貼り付けなかったからです。 –

関連する問題