Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1620to1624
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Aufbereitung Daten

Aufbereitung Daten
24.04.2018 10:07:26
Marcus
Guten Morgen zusammen,
mir liegt eine dreispaltige Tabelle vor:
Spalte 1: Kostenstellen
Spalte 2: Bezeichnung (Irrelevant)
Spalte 3: Kostenstellen-Verantwortlicher
Die Daten sollen so aufbereitet werden, dass in Spalte 1 einer neuen Tabelle ein Kostenstellen-Verantwortlicher nur einmal aufgelistet ist und in Spalte 2 sämtliche zu ihm gehörenden Kostenstellen in der Form (KST1, KST2, KST3, ...) als Text stehen.
Da ich leider bisher nur an einer VBA Schulung teilgenommen habe, bin ich leider hiermit auf die schnelle weit überfordert und habe nicht die Zeit mehrere Stunden darüber nachzudenken. Bin für jede Hilfe sehr dankbar.
Viele Grüße
Marcus

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Aufbereitung Daten
24.04.2018 10:23:38
MCO
Moin!
Aber eine Beispielhafte Tabelle könntest du doch sicher zur Verfügung stellen, oder?
Gruß, MCO
Pivottabelle!
24.04.2018 11:27:36
EtoPHG
Hallo Marcus,
Excel gut?
Ganz einfach eine Pivottabelle aus der Tabelle erstelle. A1 - Menü - Einfügen - Pivottabelle
Zeilenbeschriftungen = Verantwortlicher, Konstenst.
Pivottable-Optionen |Anzeige| [x] Klassische Pivot-Table Layout
Gruess Hansueli
Anzeige
AW: Pivottabelle!
24.04.2018 11:45:56
Marcus
Hallo Hansueli,
ist ja immer die Frage in welchen Kreisen man sich bewegt; in diesem Forum kann oder sollte ich das Niveau eventuell geringer deklarieren :( Zunächst mal vielen Dank für deine Antwort, habe deinen Vorschlag mal ausprobiert, allerdings gelingt es mir so nicht, dass die Kostenstellen alle nacheinander in dem Format KST1, KST2, KST3 etc. aufgelistet werden. Habe mittlerweile die Lösung durch den VBA Vorschlag von UweD, aber falls du auch dennoch eine Idee hast, wie ich dieses Format über die PivotTabelle hinbekomme, wäre ich interessiert, da ich gerne dazulerne.
Danke und Gruß
Marcus
Anzeige
AW: Pivottabelle! keine konkatinierten Zellinhalte
24.04.2018 13:56:15
EtoPHG
Hallo Marcus,
Kannst du mir 1 vernüftigen Grund nennen, wieso alle KST in eine Zelle konkatiniert werden sollen. Verbundene Werte finde ich immer unvernünftig, weil damit Handstände bei der Weiterverarbeitung/Verwendung nötig werden. Mit Powerquery, siehe Günter's Vorschlag.
Gruess Hansueli
Das häuft sich in letzter Zeit, Eto ...
24.04.2018 19:38:04
lupo1
... ich vermute, das ist zum Handzettel-Drucken. Denn da sind (dann auch noch umbrechende) Concatenations platzsparender, als ordentliche Spaltenausgaben.
Erleichtert wird Concatenation übrigens durch die Universalformel TEXTVERKETTEN in xl365 (und LO, Docs und xl-Online).
AW: Pivottabelle! keine konkatinierten Zellinhalte
25.04.2018 14:00:34
Marcus
Hallo Hansueli,
habe deine Nachricht eben erst gesehen, und nachdem ich nun den Begriff kontakenieren gegoogelt habe, kann ich dir nun auch antworten :) Es geht hierbei um Anlagen und Gebäude, die anhand ihrer Kostenstellenzuordnung auf einem digitalen Lageplan eingefärbt werden sollen. Wenn ich aber nun für 10 Kostenstellen verantwortlich wäre, dann sollten diese dieselbe Einfärbung bekommen. Warum die hinter diesem digitalen Lageplan stehende Datenbank die Daten auf diese Weise benötigt kann ich dir allerdings nicht sagen.
Besten Gruß
Marcus
Anzeige
AW: Aufbereitung Daten
24.04.2018 11:30:04
UweD
Sub Makro3()
    Dim TB1, LR1 As Double, LR2 As Double, i As Double, j As Double
    Dim Trenner As String
    
    
    Set TB1 = Sheets("KST_04_2018")
    Trenner = ", "
    
    LR1 = TB1.Cells(TB1.Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte 
    
    ActiveWorkbook.Sheets.Add after:=Sheets(Sheets.Count)
    Application.ScreenUpdating = False
    
    With ActiveSheet
        TB1.Columns(3).Copy .Columns(1)
        .Cells(1, 2) = TB1.Cells(1, 1) 'Überschrift 
        .Columns(2).NumberFormat = "@" 'als Texte 
        
        .Columns(1).RemoveDuplicates Columns:=1, Header:=xlYes 'Doppelte raus 
        
        LR2 = .Cells(.Rows.Count, 1).End(xlUp).Row
        
        With .Sort 'sortieren 
            .SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
            .SetRange Columns(1)
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With

        For i = 2 To LR2 'Für alle Namen 
            For j = 2 To LR1 'alle Kostenstellen durchlaufen 
                If TB1.Cells(j, 3) = .Cells(i, 1) Then
                    .Cells(i, 2) = .Cells(i, 2) & TB1.Cells(j, 1) & Trenner
                End If
            Next j
            
            If Right(.Cells(i, 2), 2) = Trenner Then _
                .Cells(i, 2) = Left(.Cells(i, 2), Len(.Cells(i, 2)) - 2) 'letzten Trenner löschen 
            
        Next i

    End With
End Sub

LG UweD
Anzeige
AW: Aufbereitung Daten
24.04.2018 10:42:36
UweD
HAllo
so?
Sub Makro3()
    Dim TB1, TB2, LR1 As Double, LR2 As Double, i As Double, j As Double
    Dim Trenner As String
    
    
    Set TB1 = Sheets("Tabelle1")
    Set TB2 = Sheets("Tabelle2")
    Trenner = ", "
    
    With TB2
        .Cells.ClearContents 'reset 
        .Cells(1, 2) = TB1.Cells(1, 1) 'Überschrift 
        TB1.Columns(3).Copy .Columns(1)
        
        .Columns(1).RemoveDuplicates Columns:=1, Header:=xlYes
        
        LR1 = TB1.Cells(TB1.Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte 
        LR2 = .Cells(.Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte 

        For i = 2 To LR2
            For j = 2 To LR1
                If TB1.Cells(j, 3) = .Cells(i, 1) Then
                    .Cells(i, 2) = .Cells(i, 2) & TB1.Cells(j, 1) & Trenner
                End If
            Next j
            If Right(.Cells(i, 2), 2) = Trenner Then _
                .Cells(i, 2) = Left(.Cells(i, 2), Len(.Cells(i, 2)) - 2) 'letzten Trenner löschen 
            
        Next i

    End With
End Sub

je nach Datenaufkommen kann man das über Array noch beschleunigen.
LG UweD
Anzeige
AW: Aufbereitung Daten
24.04.2018 11:50:49
Marcus
Hallo UweD,
ich bin echt richtig begeistert. Wenn ich den Code irgendwann so hinbekomme, und das auch nur halb so schnell, würde mir das schon reichen. Bin den Code mal im Einzelschrittverfahren durchgegangen, um deine Gedanken nachzuvollziehen (Danke für die Kommentare) und daraus womöglich zu lernen.
Die zweite Zeile hinter dem "Next j" muss ich mir nochmal zu Gemüte führen, aber das Ergebnis stimmt.
Tausend Dank und besten Gruß
Marcus
Prima, danke für die Rückmeldung
24.04.2018 11:59:52
UweD
AW: Aufbereitung Daten
24.04.2018 13:30:53
Marcus
Hallo Günther,
vielen Dank für deine Rückmeldung. Dieses Add In war mir bisher nicht bekannt. Werde mir das mal genauer anschauen.
Gruß Marcus

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige