Anzeige
Archiv - Navigation
312to316
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
312to316
312to316
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Zellen per VBA Lösung transponieren

Zellen per VBA Lösung transponieren
26.09.2003 14:32:39
Ingrid Maier
Hallo miteinander,

bin noch ratlos........

Habe eine Datei mit ca. 50.000 Datensätze (Zeilen) in 6 Spalten,
manche Datensätze kommen mehrfach vor. Die mehrfachen Datensätze muss ich jeweils in die 7. Spalte in die Zeile des ersten mehrfachen Datensatzes transponieren.

Bis jetzt habe ich es mit der Teilsumme, Anzahl, gelöst, d.h. ich habe in die neu erstellte Teilsummenzeile die Daten mit der Formel ....=A2, =B2, =B3, =B4, =B5, =B6, =A3, =B3 usw. "kopiert", dann die Gruppierung geschlossen und alle sichtbaren Zeilen und in eine neue Datei kopiert. Ging eigentlich recht flott, leider habe aufgrund der Dateigröße vergessen, ein paar Formeln einzufügen und habe somit einige Datensätze nicht mitkopiert...

Die Suche nach diesen Zellen ist einfach unwürdig, gehts auch anders???

Gruß Ingrid

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

Betreff
Datum
Anwender
Anzeige
AW: Zellen per VBA Lösung transponieren
26.09.2003 15:36:05
Marc
Hallo Ingrid,

bei dieser Anzahl (50.000) ist die Frage, ob Datensätze entweder komplett gleich sind oder sich auch nur in einer Zelle unterscheiden können.

Das würde ich wohl eher "zu Fuss" lösen .
Wenn du bereits ne Indizierung hast (falls die Reihenfolge wichtig ist), gut, wenn nicht, würde ich vorne ne Spalte einfügen und die Datensätze durchnummerieren (mittels Autoausfüllen schnell erledigt)

Danach die komplette Matrix markieren und nach den ersten drei (ohne Indizierung) Spalten sortieren lassen, dann das Ganze einmal durchscrollen die doppelten nach rechts rauskopieren, die Matrix wieder nach den Indizes sortieren lassen und die (evtl. eingefügte) Indexspalte wieder rauslöschen.

Dürfte das schnellste sein.

Gruss,
Marc
Anzeige
AW: Zellen per VBA Lösung transponieren
26.09.2003 17:38:27
Ingrid
Hallo Mark,

erst einmal Danke für Deine Antwort, kann aber mit der Sortiererei nix anfangen
Tabelle sieht so aus:

https://www.herber.de/bbs/user/1178.xls

Gibts vielleicht doch ein klitzekleines Makro?

Gruß Ingrid
Zwei Fragen noch...
26.09.2003 17:45:54
Marc
Hallo Ingrid,

ist Spalte A tatsächlich so vorsortiert ? (dann wäre es rel. einfach zu realisieren, denke ich)
Und existiert die Spalte B so ? Wenn ja, was enthält die, oder sind die fortlaufenden Werte von Dir nur zur Markierung eingetragen ?

Grüsse,
Marc
AW: Zwei Fragen noch...
26.09.2003 18:20:53
Ingrid
Hallo Marc,

die Datei stammt aus SAP und ist bereits von SAP sortiert.
Auch sind die mehrfach vorhandenen Datensätze bereits durchnummeriert!

Gibts Hoffnung für mich?
Gruß Ingrid
Anzeige
So müsste es gehen ...
27.09.2003 12:30:38
Marc
Hallo Ingrid,

mit foldendem Code müsste es gehen, funktioniert zumindestens mit deiner Beispieldatei.
Als Anmerkung für alle Profis hier, ich bin noch relativer Anfänger, was VBA angeht, d.h. der Code kann sicherlich noch optimiert werden, aber er läuft...


Sub Umsortieren()
Dim i
Dim ende As Boolean
ende = False
Range("B2").Select                      'Wenn die Tabelle keine Überschrift hat, auf B1 setzen
Do While ende = False                   'Die erste leere Zelle in Spalte B führt zum Abbruch
If ActiveCell.Value <> "" Then
If ActiveCell.Value > 1 Then          'Überprüfung, ob doppelt (an der Nummerierung)
i = (ActiveCell.Value) * 5
Debug.Print i
ActiveCell.Range("A1:E1").Select                        'Kopieren
Selection.Copy
ActiveCell.Offset(-1, (i - 5)).Range("A1").Select       'Aufsuchen der richtigen Zelle mittels des Eintrages in B
ActiveSheet.Paste                                       'Einfügen
ActiveCell.Offset(1, 0).Rows("1:1").EntireRow.Select    ' &
Application.CutCopyMode = False
Selection.Delete Shift:=xlUp                            ' Löschen
ActiveCell.Offset(0, 1).Range("A1").Select
Else
ActiveCell.Offset(1, 0).Activate
End If
Else
ende = True
End If
Loop
End Sub


Anhand des Wertes in der Zelle B wird errechnet, wieviele Zellen nach rechts gegangen werden muss, um die Zwellen an die richtige Stelle einzufügen.

Bei Fragen stehe ich ab Montag wieder zur Verfügung.
Viel Erfolg !

Grüsse,
Marc
Anzeige
AW: So müsste es gehen ...
29.09.2003 11:38:51
Ingrid
Hallo Marc, vielen Dank, klappt fantastisch!!!

Gruß Ingrid
Das freut mich...
29.09.2003 11:48:20
Marc
... dass ich auch mal was zurückgeben kann hier !!!

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige