daniel-ratlos
Goto Top

MS Excel - Zeilen zusammenfassen, wie?

Hallo zusammen, da ich hier schon sehr viele Infos und auch Hilfe erhalten habe versuche ich es mal wieder:

Also hier eine kurze Schilderung meines Problemes:

In MS-Excel eine Tabelle in dieser Form:

A B C D
1 Name X Y Z
2 Hein Blöd x
3 Hein Blöd x
4 Hein Blöd x
.
.
.


Meine Zielverstellung in Excel:

A B C D
1 Name X Y Z
2 Hein Blöd x x x
.
.
.

Hat jemand eine Idee????

Hier noch ein Bild von der Tabelle, da wird das Problem so glaube ich etwas deutlicher!

decf9c82becd2491fb8c790aaaa1212d


Schon mal vielen Dank und viele Grüße

Content-ID: 151169

Url: https://administrator.de/contentid/151169

Ausgedruckt am: 05.11.2024 um 14:11 Uhr

zapatista
zapatista 16.09.2010 um 14:20:18 Uhr
Goto Top
Moin Herr Ratlos,

kannst du die Zeilen nicht einfach mit gedrückter Umschalttaste markieren und dann mit rechter Maustaste draufklicken. Im Kontext-Menü hast du dann die Möglichkeit Zeilen zu verbinden.

Oder wie meinst du das?

Die Office-Version wäre hilfreich.
Daniel-Ratlos
Daniel-Ratlos 16.09.2010 um 14:50:15 Uhr
Goto Top
Moin Moin,

also so einfach geht es leider nicht.

Excel Version ist 2003.

Es sind Namen und Systeme in den Zeilen.

Nun möchte ich nur noch jeweils eine Zeile in der alle Systeme stehen, bislang gibt es für jedes System eine Zeile, also jeden Namen x fach!

Ich hoffe das hilft weiter.
76109
76109 16.09.2010 um 20:40:21 Uhr
Goto Top
Hallo Daniel-Ratlos!

Quellcode in ein Modul einfügen und über <Extras><Makro><Makros><Zusammenfassung> starten und/oder per Optionen mit einer Tasenkombination verknüpfen:
Option Explicit
Option Compare Text

Const Quelle = "Tabelle1"       'Tabelle Quelldaten  
Const Ziel = "Tabelle2"         'Tabelle Zieldaten  

Const StartZeile = 2            'Erste Zeile mit Daten  

Sub Zusammenfassen()
    Dim WksQ As Worksheet, Found As Object, Felder As Variant, i As Long
    Dim Spalte As Long, Zeile As Long, CopySpalte As Long, CopyZeile As Long
    
    Set WksQ = Sheets(Quelle)
    
    Application.ScreenUpdating = False
    
    With Sheets(Ziel)
        Felder = .Rows(1).Value
    
       .Cells.ClearContents
        
       .Rows(1).Value = Felder
        
        Zeile = StartZeile
        
        For i = StartZeile To WksQ.Cells(WksQ.Rows.Count, "A").End(xlUp).Row  
            If Not IsEmpty(WksQ.Cells(i, "A")) Then  
                Set Found = .Columns("A").Find(WksQ.Cells(i, "A"), LookIn:=xlValues, LookAt:=xlWhole)  
                
                If Found Is Nothing Then
                    Range(WksQ.Cells(i, "A"), WksQ.Cells(i, "B")).Copy .Cells(Zeile, "A")  
                    CopyZeile = Zeile:  Zeile = Zeile + 1
                Else
                    CopyZeile = Found.Row
                End If
                
                CopySpalte = WksQ.Cells(i, WksQ.Columns.Count).End(xlToLeft).Column
                
                WksQ.Cells(i, CopySpalte).Copy .Cells(CopyZeile, CopySpalte)
            End If
        Next
    End With
    
    Application.ScreenUpdating = True
    
    MsgBox "Fertig!", vbInformation, "Meldung"  
End Sub
Die Konstanten (Const) entsprechend anpassen.

Du brauchst 2 Tabellen. Eine Tabelle mit Deinen Quelldaten und eine 2. Tabelle für die Zieldaten

In der Ziel-Tabelle musst Du einmalig die Überschriftzeile beschriften, formatieren...

Ablauf:
Beim starten des Makros, wird in der Ziel-Tabelle die Überschriftzeile gesichert, der Tabellen-Inhalt gelöscht und die Überschriftzeile wieder eingefügt. Im Anschluss wird in der Quell-Tabelle die Spalte A Zeile für Zeile durchlaufen und in der Ziel-Tabelle geprüft, ob der Name schon eingetragen ist. Wenn der Name noch nicht existiert, dann werden die Quell-Spalten A:B nach Ziel-Spalte A:B kopiert. Wenn der Name bereits existiert, wird der Wert ab Quell-Spalte C mit Inhalt nach Ziel-Spalte kopiert. Die Spalten ab C sind beliebig erweiterbar.

Gruß Dieter

[edit] Code geändert [/edit]
Daniel-Ratlos
Daniel-Ratlos 17.09.2010 um 07:40:18 Uhr
Goto Top
Hallo und vielen Dank für den Quellcode!

Leider hat das nicht zu der Lösung geführt, die ich brauche!

Ich hab in dem Post oben noch ein Bild zur Verdeutlichung des Problems hinzugefügt.

Wenn es sich nur um 6 Datensätze handels würde, dann könnte ich das händisch lösen, aber da es sich
um ca. 6500 Datensätze handelt wäre eine Software Lösung schon besser face-wink

Ich hoffe das hier noch jemand eine Lösung kennt.

Einen schönen Tag euch Allen.
76109
76109 17.09.2010 um 09:42:02 Uhr
Goto Top
Hallo Daniel-Ratlos!

Zitat von @Daniel-Ratlos:
Ich hab in dem Post oben noch ein Bild zur Verdeutlichung des Problems hinzugefügt.
Das war eine gute Idee. Um aus der vorangegangen Text-Erklärung auf so eine Tabellenansicht zu schließen, muss man aber schon ungewöhnlich viel Phantasie haben. Bis auf den Namen haben die beide aber auch nix gemeinsamface-smile

Mit dem oben geänderten Code sollte es nun funktionierenface-wink

Gruß Dieter
Daniel-Ratlos
Daniel-Ratlos 17.09.2010 um 10:23:08 Uhr
Goto Top
Hallo didi1954,

Danke für den Code!

In der Beispieltabelle wie im Bild klappt es zu 100%, super.

In der "echten" Tabelle sortiert das "Programm" noch nicht, ich glaube es liegt an der Datenherkunft, SAP!!!

Ich werde die Daten wohl noch einmal etwas aufbereiten, und dann weiter testen.

Trotzdem vielen Dank noch einmal.
76109
76109 17.09.2010 um 11:26:31 Uhr
Goto Top
Hallo Daniel-Ratlos!

Um die Ziel-Tabelle vernünftig sortieren zu können, müsste der Name auf zwei Spalten Vorname und Nachname gesplittet werden. Dann könnte die Tabelle erst nach Nachname und anschließend auf Vorname sortiert werdenface-wink

Gruß Dieter