Microsoft Excel

Herbers Excel/VBA-Archiv

Zueinandergehörige Inhalte untereinander anordnen

Betrifft: Zueinandergehörige Inhalte untereinander anordnen von: Tom
Geschrieben am: 29.04.2014 16:34:21

Hallo zusammen,

Ich habe ein Layoutproblem.
Ich habe wie in der Datei gezeigt Rohdaten aus einem Active Directory gezogen.
In Bezug auf den Wert "OU" (Organization Unit) können unterschiedlich viele Spalten befüllt sein.

Wie ab Zeile 9 gezeigt möchte ich ab dem Eintrag DC=Gruppe und nachfolgend wieder alles untereinander haben.

Nachfolgend die Datei:
https://www.herber.de/bbs/user/90393.xlsx

Es müßte also die ganze Datei irgendwie durchsucht werden.
Dann müßte z.B. geschaut werden, was die "höchste" Spalte mit Inhalt "DC=Gruppe" ist. Und dann müssten alle Zeilen, die den Eintrag "DC=Gruppe" in einer Spalte weiter links haben mit den nachfolgenden Feldern nach Rechts geschoben werden, so dass ab dem Eintrag "DC=Gruppe" alles wieder bündig ist.

Weiß jemand Rat?
Danke, Tom

  

Betrifft: nachgefragt ... von: der neopa
Geschrieben am: 30.04.2014 17:03:47

Hallo Tom,

... es soll also anstelle des ersten Wertes nach "DC=net" der Wert nach "CN=" aus Spalte geleistet werden?
Wenn nicht tausende Zeilen auszuwerten sind (wieviel denn), wäre meinerseits eine reine Formellösung möglich. Diese dann meinerseits aber dann erst Morgen.

Gruß Werner
.. , - ...




  

Betrifft: AW: Zueinandergehörige Inhalte untereinander anordnen von: fcs
Geschrieben am: 30.04.2014 17:07:49

Hallo Tom,

hier ein entsprechendes Makro.

Gruß
Franz

Sub Move_DC_Gruppe()
  Dim SpalteMax As Long
  Dim strAdr1 As String, varFind As Variant
  Dim rng As Range
  Dim Zeile As Long
  Dim wks As Worksheet
  Set wks = ActiveSheet
  
  With wks
    varFind = "DC=GRUPPE"
    Set rng = .UsedRange.Find(What:=varFind, LookIn:=xlValues, lookat:=xlWhole)
    If Not rng Is Nothing Then
      strAdr1 = rng.Address
      Do
        If rng.Column > SpalteMax Then
          SpalteMax = rng.Column
        End If
        Set rng = .UsedRange.FindNext(after:=rng)
      Loop Until rng.Address = strAdr1
      Application.ScreenUpdating = False
      For Zeile = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
        Set rng = .Rows(Zeile).Find(What:=varFind, after:=.Cells(Zeile, 1), _
              LookIn:=xlValues, lookat:=xlWhole)
        If Not rng Is Nothing Then
          If rng.Column < SpalteMax Then
            .Range(rng, Cells(Zeile, SpalteMax - 1)).Insert shift:=xlShiftToRight
          End If
        End If
      Next
      Application.ScreenUpdating = True
    End If
  End With
End Sub



 

Beiträge aus den Excel-Beispielen zum Thema "Zueinandergehörige Inhalte untereinander anordnen"