Herbers Excel-Forum - das Archiv

Zellen per VBA Lösung transponieren

Bild

Betrifft: Zellen per VBA Lösung transponieren
von: Ingrid Maier
Geschrieben am: 26.09.2003 14:32:39
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

Bild

Betrifft: AW: Zellen per VBA Lösung transponieren
von: Marc
Geschrieben am: 26.09.2003 15:36:05
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
Bild

Betrifft: AW: Zellen per VBA Lösung transponieren
von: Ingrid
Geschrieben am: 26.09.2003 17:38:27
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
Bild

Betrifft: Zwei Fragen noch...
von: Marc
Geschrieben am: 26.09.2003 17:45:54
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
Bild

Betrifft: AW: Zwei Fragen noch...
von: Ingrid
Geschrieben am: 26.09.2003 18:20:53
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
Bild

Betrifft: So müsste es gehen ...
von: Marc
Geschrieben am: 27.09.2003 12:30:38
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
Bild

Betrifft: AW: So müsste es gehen ...
von: Ingrid
Geschrieben am: 29.09.2003 11:38:51
Hallo Marc, vielen Dank, klappt fantastisch!!!

Gruß Ingrid
Bild

Betrifft: Das freut mich...
von: Marc
Geschrieben am: 29.09.2003 11:48:20
... dass ich auch mal was zurückgeben kann hier !!!
 Bild
Excel-Beispiele zum Thema " Zellen per VBA Lösung transponieren"
Makros in Abhängigkeit vom Zellennamen aufrufen Zellen auf Kommentar überprüfen
Spalten bedingt summieren und Zellen formatieren Text aus Textbox in Zellen aufteilen
Zellen vergleichen und markieren Zählen formatierter Zellen
Daten aus Textdatei gezielt in Zellen übernehmen Zellen verbinden und trennen
Zellen bei Minuswerten schraffieren Zeilen oberhalb der markierten Zellen einfügen