Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
280to284
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
280to284
280to284
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Komprimieren einer Tabelle

Komprimieren einer Tabelle
17.07.2003 12:27:33
Thomas
Hi,
ich habe folgendes Problem:
Eine dynamische Tabelle, Daten kommen von einer Access-DB, hat ca. 9000 Zeilen (variabel) und 34 Spalten (fix). Aufgrund unterschiedlicher Merkmale (mehr als 300) werden bestimmte Zellen markiert. Im Prinzip sieht es wie folgt aus:
Land___Firma__Name__ID__Merk___Attr1___Attr2___Attr3
D_______x_____Hans___a___rot_____x
D_______x_____Hans___a___blau__________x
D_______x_____Hans___a___gelb________________x
D_______w_____Lisa___d___rot_____x
USA_____z_____Tom____b___blau__________x
USA_____z_____Tom____b___gelb________________x
USA_____y_____Beth___c___blau__________x
USA_____y_____Beth___c___rot_____x
Die Unterstriche dienen nur Formatierung!
Zuviel Information ist mehrfach vorhanden, deshalb soll eine neue Tabelle per Makro in einem neuem Arbeitsblatt entstehen, welche pro ID nur eine Zeile enthält, Spalte Merkmale entfällt dann.
Auf obiges Beispiel bezogen, würde es so aussehen:
Land___Firma__Name__ID__Attr1___Attr2___Attr3
D_______x_____Hans___a___x_______x_______x
D_______w_____Lisa___d___x
USA_____z_____Tom____b__________x_______x
USA_____y_____Beth___c___x_______x
Ich denke man muss jede einzelne ID als separaten Block betrachten und in ihm die Kreuze der Markierten Attribute in die erste Zeile des jeweiligen Blocks verschieben und danach alle anderen Zeilen des Blocks löschen. Dies ist für jede ID zu wiederholen.
Nur wie? Achtung bin Anfänger!
Über jede Hilfe bin ich sehr dankbar!
Hoffentlich hat es nicht die Formatierung versemmelt und die Mail ist für das Forum nicht zulang!
LG Thomas

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Komprimieren einer Tabelle
18.07.2003 11:28:15
Thomas
habe eine Lösung gefunden:
Die x zuerst durch 1 ersetzen.
Data/Subtotals (Daten/Teilsummen) aufrufen.
ID und Funktion "Sum" auswählen.
Alle Attribute als Subtotals auswählen.
Damit werden für die Attribute Teilsummen gebildet und das ganze ist nach ID sortiert.
Dann nur noch die Gliederungsebene zwei auswählen.
In einer gesonderten Tabelle nur mit den Spalten "Land/Firma/Name/ID" alle Doppeleinträge über "Data/Filter/Advanced Filter" das Kästchen "unique Records only" aktivieren.
Danach die beiden Ergebnisse (Subtotals und Unique Records) in einer Tabelle zusammenführen.
Diese Lösung hat nur den Haken, dass sie bei grossen Datenmengen versagt, da nicht genug Speicher vorhanden ist.
gruss Thomas

Anzeige
AW: Komprimieren einer Tabelle
17.07.2003 17:22:14
Nike
Hi,
mal an einer Kopie den folgenden Code ausprobieren:

Sub reduceDB()
Dim lngRow As Long
For lngRow = Cells(Rows.Count, 1).End(xlUp).Row To 1 Step -1
If Cells(lngRow, 1) = strLand And _
Cells(lngRow, 2) = strFirma And _
Cells(lngRow, 3) = strName And _
Cells(lngRow, 4) = strID Then
If Cells(lngRow, 6) <> "" Then
strAtt1 = Cells(lngRow, 6)
End If
If Cells(lngRow, 7) <> "" Then
strAtt2 = Cells(lngRow, 7)
End If
If Cells(lngRow, 8) <> "" Then
strAtt3 = Cells(lngRow, 8)
End If
Rows(lngRow + 1).Delete
Else
strLand = Cells(lngRow, 1)
strFirma = Cells(lngRow, 2)
strName = Cells(lngRow, 3)
strID = Cells(lngRow, 4)
If lngRow <> Cells(Rows.Count, 1).End(xlUp).Row Then
Cells(lngRow + 1, 6) = strAtt1
Cells(lngRow + 1, 7) = strAtt2
Cells(lngRow + 1, 8) = strAtt3
End If
If Cells(lngRow, 6) <> "" Then
strAtt1 = Cells(lngRow, 6)
End If
If Cells(lngRow, 7) <> "" Then
strAtt2 = Cells(lngRow, 7)
End If
If Cells(lngRow, 8) <> "" Then
strAtt3 = Cells(lngRow, 8)
End If
End If
Next
Cells(lngRow + 1, 6) = strAtt1
Cells(lngRow + 1, 7) = strAtt2
Cells(lngRow + 1, 8) = strAtt3
End Sub

Bye
Nike

Anzeige
AW: Komprimieren einer Tabelle
18.07.2003 15:56:43
Thomas
Hallo Nike,
danke für Deine Hilfe, bin leider noch nicht zum testen Deiner Lösung gekommen.
Gruss
Thomas

AW: Komprimieren einer Tabelle
19.07.2003 19:55:05
Nike
Hi,
melde dich, wenn's klappt und wie gesagt
nur an ner Kopie ausprobieren ;-)
Bye
Nike

AW: Komprimieren einer Tabelle
21.07.2003 15:19:49
Thomas
Hi Nike,
Makro lief durch, allerdings hat es beim zweiten User eine "1" zuviel hinzugefügt.
Sprich ein das Attribut1 markiert obwohl es ursprünglich unmarkiert war. Der Rest war korrekt.
Konnte den Fehler noch nicht finden.
bye
Thomas

AW: Komprimieren einer Tabelle
17.07.2003 12:39:07
Frederik Fuhrmann
Hallo Thomas!
Bilde zunächst einen Schlüssel, nacdem doppelte gefiltert werden können:
Spalte einfügen, zelle a1: =b1&c1&d1, runterkopieren
Daten, Filter, Spezialfilter, ohne doppelte..
Gruß
F.

Anzeige
AW: Komprimieren einer Tabelle
17.07.2003 13:37:42
Thomas
Hi Frederik,
das funktioniert leider nicht, es gehen dabei Daten verloren!
Da man vorher nicht weiß wieviel Attribute einer ID zugeordnet sind (von 1- 22 Attributen wäre möglich) und neue Einträge hinzukommen können oder auch wegfallen können.
Trotzdem Danke für Deine Mühe.
gruß
Thomas

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige