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

Beiträge aus den Excel-Beispielen zum Thema " Zellen per VBA Lösung transponieren"