Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zeilen mit partiell gleichem inhalt zusammenfassen

Zeilen mit partiell gleichem inhalt zusammenfassen
17.09.2005 16:23:25
Kolja
Hy
Ich hab ein Problem das ich nicht ganz zu fassen bekomme. Folgende Ausgangsstellung:
Ich habe ein Liste von Kunden, die bei verschiedenen anlässen eintrag in meine Liste gefunden haben. Nun sind einige Kunden mehrfach darin vertreten, ich habe allerdings eine Spalte "Anlaß" in der genau steht warum er den drin steht. Jetzt möchte ich gerne jeden Kunden nur einmal in der liste stehen haben, dafür aber eine reihe von Spalten mit Überschriften gleich den Anlässen und einem X als eintrag für jeden Anlaß der für den Kunden zutrifft. Ich hätte also dann z.B. 20 Spalten mehr pro Kunde aber ihn eben nur einmal. Das mit den Spalten und den X-einträgen war mit einer einfachen Formel (=$A1=Überschrift;"X";"") schnell geregelt und mittels Inhalte einfügen auch gleich in feste Inhalte umtransformiert. Dann habe ich die Anlaß-Spalte gelöscht, so daß nunmehr 12-15 spalten pro kunde gleiche inhalte aufweisen. Nur die Anlaß-Spalten am ende sind nun noch unterschiedlich. Nun fehlt mir noch ein weg, wie ich die einzelnen Zeilen pro Kunde auf eine reduzieren kann, in der dann alle Xe aus den anderen Zeilen in den richtigen Spalten übernommen wurden.
Falls mir da jemand ausser dem seeeeeeehr arbeitsreichen Weg "von Hand" nennen kann wäre ich extrem dankbar!!!
Danke im Voraus
Kolja
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen mit partiell gleichem inhalt zusammenfassen
17.09.2005 17:18:36
Aton
Hi
Datenbank mit X von Peter mein Beispieldatei an.
Gruß Aton
AW: Zeilen mit partiell gleichem inhalt zusammenfa
17.09.2005 17:23:23
Matthias
Hallo Kolja,
teste dies mal:
Sub Transform() Const eZ = 2 ' erste Zeile mit Daten im _Quellblatt Const SpAnlass = 2 Dim QTab As Worksheet 'Quelltabelle Dim ZTab As Worksheet 'Zieltabelle Dim lZ As Long, i As Long Dim s As Integer Dim temp As Long 'Variablen zuweisen: Set QTab = Sheets("Tabelle1") Set ZTab = Sheets("Tabelle2") lZ = QTab.Range("A65536").End(xlUp).Row ZTab.Cells.ClearContents 'Namen ohne Duplikat in Zeilen übertragen: temp = 2 'erst Zeile = 2 For i = eZ To lZ If WorksheetFunction.CountIf(ZTab.Range("A2:A" & temp), QTab.Cells(i, 1)) = 0 Then ZTab.Cells(temp, 1) = QTab.Cells(i, 1) temp = temp + 1 End If Next i 'Anlässe ohne Duplikat in Spalten übertragen: temp = 2 'erste Spalte = 2 For i = eZ To lZ If WorksheetFunction.CountIf(ZTab.Range(ZTab.Cells(1, 2), ZTab.Cells(1, temp)), QTab.Cells(i, 2)) = 0 Then ZTab.Cells(1, temp) = QTab.Cells(i, 2) temp = temp + 1 End If Next i 'Werte eintragen: temp = 2 Dim kunde As String, anlass As String Dim z_f As Long, s_f As Integer For i = eZ To lZ kunde = QTab.Cells(i, 1) anlass = QTab.Cells(i, 2) z_f = ZTab.Range("A:A").Find(what:=kunde).Row s_f = ZTab.Range("1:1").Find(what:=anlass).Column ZTab.Cells(z_f, s_f) = "X" Next i End Sub
Voraussetzung ist eine Tabellenstruktur wie die hier:
 
 AB
1KundeAnlass
2MeierAustritt
3MüllerEintritt
4MüllerÄnderung
5MeierEintritt
6HuberEintritt
7SchmidtAustritt
8MeierUmzug
9SchröderUmzug
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Das Makro macht dann im Zielblatt dies hier:
 
 ABCDE
1 AustrittEintrittÄnderungUmzug
2MeierXX X
3Müller XX 
4Huber X  
5SchmidtX   
6Schröder   X
 
Diagramm - Grafik - Excel Tabellen einfach im Web darstellen    Excel Jeanie HTML  3.0    Download  
Viel Erfolg,
Matthias
Anzeige
AW: Zeilen mit partiell gleichem inhalt zusammenfa
17.09.2005 18:30:36
Kolja
Hallo Matthias!!
Schon suuuper großen Dank zu diesem Makro!! Ist spitze geworden, hat aber noch ein paar kleine schönheitsfehler:
1. kann man das so programieren, das es das erste tabellen blatt unabhängig vom namen als qtab nutzt?
2. ich hab ausser den 2 spalten pro Kunde ja noch ein paar mehr (11 um genau zu sein)kann man die auch gleich mitkopieren? Am liebsten wäre es mir, wenn dann die Anläße am ende kommen würden, also Name|[11 Spalten]|Anläße.
3. ich trau mich fast nicht zu fragen: die Spaltenüberschriften wären auch ne spitzen ergänzung..*schäm* (obwohl... vielleicht würde ich das sogar noch selbst hinbekommen wo ich so halbwegs drüber nachdenke... ach ich weiß nich....:) )
Danke nochmals!!!!
Kolja
Anzeige
AW: Zeilen mit partiell gleichem inhalt zusammenfa
17.09.2005 18:54:47
Kolja
Hab da doch noch eine erschwernis gefunden. Könntest du mir das makro so umschreiben, das es statt des X einen Wert aus Spalte I übernimmt. Soll heißen in I steht ein wert, der soll jeweils am ende in der Auswertung statt des "X" in der einzelnen Zeile stehen. Wäre das möglich?
Danke (ich weiß gar nicht wie ich das wieder gut machen soll...8/ )
Kolja
Anzeige
AW: Zeilen mit partiell gleichem inhalt zusammenfa
18.09.2005 00:15:20
Kolja
Hy Matthias!
Man glaubt es kaum, aber ich habs selbst rausgekriegt!!! Bin total happy ob dieses Erfolgs und hab mich gleich ins nächste Problem verrant, aber da versuch ich mit meinem Dickkopf erstmal selber durch zu kommen ;-D
Danke auf jeden fall für das sehr lehrreiche Codekunststück!!!
Kolja
Anzeige
AW: Zeilen mit partiell gleichem inhalt zusammenfa
18.09.2005 01:21:09
Matthias
Hallo Kolja,
Danke für die nette Rückmeldung! :-)
Gruß Matthias
AW: Zeilen mit partiell gleichem inhalt zusammenfa
18.09.2005 10:09:01
Kolja
Hy Matthias,
doch zu früh gefreut.
Also ich fang dann mal mit erklären an. Es handelt sich nicht um eine Kundenliste(war einfach einfacher zu Umschreiben) sonder um eine Fraktionsliste für das Battletech-Tabletop spiel. Sozusagen das Mechwarrior Computerspiel als Brettspiel. Ich habe eine solche Liste unter http://www.cs.wisc.edu/~lacasse/factionlist/ heruntergeladen und wollte nun eine Liste, bei der ich pro Fahrzeug nur ein Zeile habe, und so mit einem Blick sehen kann, wer dieses Fahrzeug alles einsetzten darf. Hat mit deinem Makro und meinen Erweiterungen auch super geklappt. (Die bezogen sich darauf, das ich das X durch das Datum der Zeitschiene ab der das Fahrzeug eingesetzt werden darf ersetzt habe und auch alle anderen Daten für das Fahrzeug mit in Tab2 rüberkopiert habe) Nun habe ich als letzte Spalte die Formel =38-Zählewenn(L2:AY2;"") eingefügt, um die Fahrzeuge rausfiltern zu können, die wirklich nur von einer Fraktion eingesetzt werden dürfen. Und da fiel mir doch gleich auf, das im Dropdown menü des Autofilters auch der Eintrag "0" existiert, was per se nicht sein darf, da die Spalte mit den Daten keine leeren Zellen beeinhaltet. Ich habe dann die Fahrzeuge die laut tab2 zu keiner Fraktion gehören in der Urliste gesucht, und siehe da sie haben eine Datum drinstehen... was nu? Ich konnte die Tabelle leider nicht ul, da sie mit 1,5mb zu groß ist, aber ich hab sie auf einen Webspace geladen damit du sie dir da anschauen kannst http://www.edv-devil.net/down/factionlist.zip
Danke schon mal im Voraus!!
Kolja
Anzeige
AW: Zeilen mit partiell gleichem inhalt zusammenfa
18.09.2005 10:56:09
Matthias
Hallo Kolja,
der Fehler lag an der Find-Methode. Ohne LookAt:=xlWhole sucht er nach Teilstrings in den Zellen und Findet so z.B. den Wert "Griffin IIC" auch in der Zelle mit "Griffin IIC 2".
Abhilfe:
z_f = ZTab.Range("A:A").Find(what:=Na, LookAt:=xlWhole).Row s_f = ZTab.Range("1:1").Find(what:=Fraktion, LookAt:=xlWhole).Column
Gruß Matthias
Anzeige
Spiiiitzzzeeee!!!!
18.09.2005 12:56:26
Kolja
mehr brauch ich glaube ich nicht zu sagen!! :))))
hab auch gleich noch ein bischen mehr gelernt, da ich die Fraktionsspalten am ende sortieren wollte und 2 spalten aus der qtab löschen. hat prima geklappt..:) Jetzt muß ich den Autor der Liste nur noch über seine verfehlungen aufklären, den er hat ne ganze menge daten vergessen :) Hab ich aber auch nur dank deiner Hilfe rausfinden können...
Hast du übrigens etwas dagegen, wenn ich das Makro dem Autor zur Veröffentlichung übergebe? Wenn du mir Name und ggf. email-adresse sendest, kann ich dich auch als Autoren im quelltext verewigen... Tausende von BT-Spielern werden dir vor Dank zu Füßen liegen :)))
Kolja
Anzeige
AW: Spiiiitzzzeeee!!!!
18.09.2005 13:03:01
Matthias
Hallo Kolja,
Tausende von BT-Spielern werden dir vor Dank zu Füßen liegen :)))
Meinst du wirklich?
Du findest meine mail unter "Profile":
https://www.herber.de/cgi-bin/profil_d.pl?value=0
Grüße,
Matthias
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilen mit partiell gleichem Inhalt in Excel zusammenfassen


Schritt-für-Schritt-Anleitung

Um in Excel Zeilen mit gleichem Inhalt zusammenzufassen, kannst du ein VBA-Makro verwenden. Hier ist eine einfache Anleitung:

  1. Öffne Excel und erstelle eine neue Arbeitsmappe oder öffne die bestehende Datei, die du bearbeiten möchtest.
  2. Öffne den VBA-Editor mit ALT + F11.
  3. Füge ein neues Modul hinzu:
    • Klicke im Menü auf Einfügen -> Modul.
  4. Kopiere den folgenden Code in das Modul:
Sub Transform()
    Const eZ = 2 ' erste Zeile mit Daten im Quellblatt
    Dim QTab As Worksheet ' Quelltabelle
    Dim ZTab As Worksheet ' Zieltabelle
    Dim lZ As Long, i As Long
    Dim temp As Long
    ' Variablen zuweisen:
    Set QTab = Sheets(1) ' Erstes Tabellenblatt verwenden
    Set ZTab = Sheets.Add ' Neues Blatt für die Zusammenfassung erstellen
    lZ = QTab.Range("A65536").End(xlUp).Row
    ZTab.Cells.ClearContents

    ' Namen ohne Duplikat in Zeilen übertragen:
    temp = 2 ' erst Zeile = 2
    For i = eZ To lZ
        If WorksheetFunction.CountIf(ZTab.Range("A2:A" & temp), QTab.Cells(i, 1)) = 0 Then
            ZTab.Cells(temp, 1) = QTab.Cells(i, 1)
            temp = temp + 1
        End If
    Next i

    ' Anlässe ohne Duplikat in Spalten übertragen:
    temp = 2 ' erste Spalte = 2
    For i = eZ To lZ
        If WorksheetFunction.CountIf(ZTab.Range(ZTab.Cells(1, 2), ZTab.Cells(1, temp)), QTab.Cells(i, 2)) = 0 Then
            ZTab.Cells(1, temp) = QTab.Cells(i, 2)
            temp = temp + 1
        End If
    Next i

    ' Werte eintragen:
    temp = 2
    Dim kunde As String, anlass As String
    Dim z_f As Long, s_f As Integer
    For i = eZ To lZ
        kunde = QTab.Cells(i, 1)
        anlass = QTab.Cells(i, 2)
        z_f = ZTab.Range("A:A").Find(what:=kunde, LookAt:=xlWhole).Row
        s_f = ZTab.Range("1:1").Find(what:=anlass, LookAt:=xlWhole).Column
        ZTab.Cells(z_f, s_f) = "X"
    Next i
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu Excel.
  2. Führe das Makro aus:
    • Drücke ALT + F8, wähle Transform und klicke auf Ausführen.

Das Makro erstellt ein neues Blatt mit den Kunden in den Zeilen und den Anlässen in den Spalten, wobei "X" die entsprechenden Anlässe markiert.


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 1004: Anwendung oder Objektdefiniertem Fehler". Lösung: Überprüfe, ob die Quelltabelle den richtigen Namen hat oder ob die Spalten und Zeilen korrekt referenziert sind.

  • Fehler: X wird nicht korrekt gesetzt. Lösung: Stelle sicher, dass die Daten in der Quelltabelle korrekt formatiert sind und keine Leerzeichen enthalten.


Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch die Funktion PivotTable nutzen:

  1. Markiere deine Daten.
  2. Gehe zu Einfügen -> PivotTable.
  3. Wähle die Felder "Kunde" als Zeilenfeld und "Anlass" als Spaltenfeld.
  4. Ziehe das Feld "Anlass" in den Wertebereich und stelle sicher, dass die Aggregatfunktion auf "Anzahl" gesetzt ist.

Diese Methode ermöglicht es dir, die Daten ohne Programmierung zusammenzufassen.


Praktische Beispiele

Angenommen, du hast folgende Daten:

Kunde Anlass
Meier Eintritt
Müller Eintritt
Müller Änderung
Meier Austritt

Nach Ausführung des Makros oder der PivotTable erhältst du:

Kunde Eintritt Änderung Austritt
Meier X X
Müller X X

Diese Übersicht erleichtert die Analyse und die weiteren Schritte.


Tipps für Profis

  • Verwende Filter: Nutze die Filteroptionen, um nur die relevanten Daten anzuzeigen.
  • Datenvalidierung: Stelle sicher, dass die Daten konsistent sind, um Probleme beim Zusammenfassen zu vermeiden.
  • Makros speichern: Speichere dein Excel-Dokument als .xlsm, um die Makros für zukünftige Benutzungen zu erhalten.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um zusätzliche Spalten zu kopieren?
Du kannst die Zeile mit ZTab.Cells(temp, 1) = QTab.Cells(i, 1) anpassen, um auch andere Daten zu kopieren.

2. Kann ich das Makro auch für andere Daten verwenden?
Ja, das Makro kann für jede Art von Daten angepasst werden, solange die Struktur ähnlich bleibt.

3. Funktioniert das auch in Excel 365?
Ja, das Makro und die beschriebenen Methoden funktionieren in Excel 365 sowie in anderen Versionen von Excel.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige