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

Werte per Makro sortieren

Werte per Makro sortieren
01.05.2007 06:29:09
PWN

Hallo Gurus,
ich habe das Problem, daß ich Werte in Spalten geliefert bekomme, diese aber nur in Zeilen weiterverarbeiten kann. Ich habe dazu eine Datei geladen, die Ihr Euch unter https://www.herber.de/bbs/user/42155.xls anschauen könnt.
In der Tabelle "IST" stehen die Daten so, wie ich sie geliefert bekomme, in "SOLL" stehen diese sortiert, wie ich sie weiterverarbeiten kann.
Gibt es eine Möglichkeit, die Werte (IST) aus den Spalten in Zeilen eines neuen Tabellenblatts zu transponieren, ohne die Abhängigkeit der Werte 01 bis 07 von der führenden Nummer (Spalte A) zu verlieren?
Die Anzahl der Werte variiert von Datei zu Datei, ebenso die Anzahl der Datensätze.
Über jede Hilfestellung freue ich mich, vielen Dank
PWN

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

Betreff
Datum
Anwender
Anzeige
AW: Werte per Makro sortieren
01.05.2007 11:29:17
Oberschlumpf
Hi ??? (oder heißte wirklich PWIN??..fiese Eltern, die ihr Kind so taufen!)
Versuch mal so:
https://www.herber.de/bbs/user/42160.xls
Bin aber nicht sicher, ob das Makro auch bei viieeeel mehr Zeilen funzt.
Starten über Extras/Makro/Makros
Konnte ich helfen?
Ciao
Thorsten

AW: Werte per Makro sortieren
01.05.2007 17:39:43
PWN
Hi Thorsten,
nein, eigentlich heiße ich Paul-Werner, ist auch nicht viel besser, daher die einfachere Abkürzung "PWN"
Besten Dank für Deine Hilfe. Funktioniert tatsächlich so, wie ich mir das vorstelle. Ich werde das demnächst in einer Datei mit ca. 5000 Einträgen ausprobieren. Ich melde mich dann wieder.
Ciao, PWN :))

Anzeige
AW: Werte per Makro sortieren
01.05.2007 11:46:14
Erich G.
Hallo PWN (?????),
probier mal


Option Explicit
Sub Uebertragen()
Dim lngQ As Long, lngZ As Long, zz As Long, intZ As Integer
Dim lngA As Long, intM As Integer
Sheets("IST").Select
lngQ = Cells(Rows.Count, 1).End(xlUp).Row
lngZ = 1
With Sheets("SOLL")
.Range(.Cells(1, 1), .Cells(1, 8)) = Range(Cells(1, 1), Cells(1, 8)).Value
For zz = 2 To lngQ
If lngA <> Cells(zz, 1) Then
lngA = Cells(zz, 1)
lngZ = lngZ + 1
.Cells(lngZ, 1) = lngA
intZ = 2
Else
intZ = intZ + 7
If intM < intZ Then intM = intZ
End If
.Range(.Cells(lngZ, intZ), .Cells(lngZ, intZ + 6)) = _
Range(Cells(zz, 2), Cells(zz, 8)).Value
Next zz
For intZ = 9 To intM Step 7
.Range(.Cells(1, intZ), .Cells(1, intZ + 6)) = _
Range(Cells(1, 2), Cells(1, 8)).Value
Next intZ
.Select
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Werte per Makro sortieren
01.05.2007 18:55:16
PWN
Hallo Erich,
ich heiße eigentlich Paul-Werner, ist aber auch nicht wirklich prickelnd, also Paul oder eben PWN...
Ich bekomme Dein Makro leider nicht zum Laufen. Fehler: Typen unverträglich. Da cih nun aber absolut ein VBA-Greenhorn bin, suche ich den Fehler eher bei mir. Was habe ich hier falsch gemacht:
https://www.herber.de/bbs/user/42172.xls
Besten Dank für die Unterstützung
Paul (PWN)

AW: Werte per Makro sortieren
02.05.2007 00:53:48
Erich G.
Hallo Paul,
zwischen den beiden Mappen, die du hochgeladen hast, gibt es einige heftige Unterschiede:
In der ersten Mappe (42155.xls) stehen in Spalte A Zahlen, ohne leere Zellen,
dafür mit mehrfach untereinander stehenden identischen Werten, z. B.
1000111
1000111
1100234
1100234
Für Tabellen mit dieser Struktur laufen die beiden von mir vorgeschlagenen Prozeduren.
Hast du sie in der von dir als 42155.xls hochgeladenen Mappe denn überhaupt getestet???
In der zweiten Mappe (42172.xls) stehen in Spalte A Texte, mit leeren Zellen,
ohne mehrfach untereinander stehende identische Werte, z. B.
13_1
(leer)
14_1
(leer)
(leer)
15_1
Das bedeutet wohl, dass alle Zeilen mit leerer Spalte A zur jeweils letzten
in Spalte A stehenden "Nummer" gehören sollen.
Außerdem enthält die zweite Mappe Gruppen mit so vielen IST-Zeilen, dass sie in SOLL nicht in eine Zeile passen.
Es gibt eben (vor Excel-Version 2007) nur 256 Spalten...
In diesem Fall muss eine Gruppe in mehreren SOLL-Zeilen wiedergegeben werden.
Das sind die Gruppen mit 11_1, 40_2 und 51_1 in Spalte A.
Für die zweite Datei habe ich die Prozedur abgewandelt zu


Sub Uebertragen3()
Dim zZ As Long, zQ As Long, sZ As Integer, strA As String, intM As Integer
Sheets("IST").Select
zZ = 1
With Sheets("SOLL")
.Cells.ClearContents
.Cells(1, 1).Resize(, 8) = Cells(1, 1).Resize(, 8).Value
For zQ = 2 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(zQ, 1) > "" Or sZ >= 247 Then
If Cells(zQ, 1) > "" Then strA = Cells(zQ, 1)
zZ = zZ + 1:            .Cells(zZ, 1) = strA
sZ = 2
Else
sZ = sZ + 7:            If intM < sZ Then intM = sZ
End If
.Cells(zZ, sZ).Resize(, 7) = Cells(zQ, 2).Resize(, 7).Value
Next zQ
For sZ = 9 To intM Step 7
.Cells(1, sZ).Resize(, 7) = Cells(1, 2).Resize(, 7).Value
Next sZ
.Select
End With
End Sub

Noch eine Bemerkung: Spaltenüberschriften sollten in Zeile 1 über allen benutzten Spalten stehen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Werte per Makro sortieren
02.05.2007 03:27:14
PWN
Hallo Erich,
vielen Dank für die Änderung. Ich dachte nicht, daß diese Unterschiede so gravierend sind - ich bin eben wirklich blutiger VBA-Laie!
Natürlich habe ich Deine ersten beiden Vorschläge ausprobiert, allerdings die Makros nicht zum Laufen gebracht.
Das jetzige funktioniert, allerdings noch nicht so, wie es sollte.
Dein jetziger Vorschlag sieht aber echt gut aus, hat aber noch diesen Schönheitsfehler. Es werden nur die Spalten B bis H übertragen, und nicht, wie in Tabelle "IST" vorgegeben, bis Spalte Q. Kann man diese Einstellung dynmaisch machen? Es gibt eben auch Dateien, die wirklich nur bis G oder J gehen.
Es ist übrigens durchaus akzeptabel, wenn nach 256 Spalten einfach abgeschnitten wird.
Du hast Excel 2007 erwähnt, wieviele Spalten gibt es denn hier? Wird wohl Zeit für mich zu wechseln.
Nochmals vielen Dank für Deine wertvolle Hilfe, ich hänge Dir die Datei mit dem Makro nochamls an.
https://www.herber.de/bbs/user/42175.zip
Viele Grüße
Paul

Anzeige
AW: Werte per Makro sortieren
02.05.2007 11:48:52
Erich G.
Hallo Paul,
sicher, das kann man auch mit variabel vielen Spalten machen.
Aber es stellt sich heftig die Frage: Ist das überhaupt sinnvoll?
Wie verarbeitest du die SOLL-Tabelle weiter?
Du hast hanz oben geschrieben: "daß ich Werte in Spalten geliefert bekomme,
diese aber nur in Zeilen weiterverarbeiten kann."
Da nun doch häufig mehr als eine Zeile pro Gruppe benötigt wird,
musst du auch bei SOLL mehrere Zeilen pro Gruppe verarbeiten können.
Die Struktur vin IST ist doch für die meisten Folgearbeiten viel sinnvoller:
Gleichartige Daten stehen untereinander in einer und nicht mehreren Spalte,
können leicht summiert, per Pivottabelle oder Diagramm ausgewertet oder auch nur gedruckt werden.
Mit SOLL ist das alles komplizierter oder gar nicht machbar.
Auch eine Weiterverarbeitung per Makro ist mit IST leichter zu realisieren als mit SOLL.
Wenn's aber unbedingt SOLL sein soll, dann vielleicht damit:


Option Explicit
Sub Uebertragen4()
Dim zZ As Long, zQ As Long, sZ As Integer, strA As String, intM As Integer
Dim intC As Integer
Sheets("IST").Select
intC = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Column - 1
zZ = 1
With Sheets("SOLL")
.Cells.ClearContents
.Cells(1, 1).Resize(, intC + 1) = Cells(1, 1).Resize(, intC + 1).Value
For zQ = 2 To Cells(Rows.Count, 2).End(xlUp).Row
If Cells(zQ, 1) > "" Or sZ >= 256 - 2 * intC Then
If Cells(zQ, 1) > "" Then strA = Cells(zQ, 1)
zZ = zZ + 1:            .Cells(zZ, 1) = strA
sZ = 2
Else
sZ = sZ + intC:           If intM < sZ Then intM = sZ
End If
.Cells(zZ, sZ).Resize(, intC) = Cells(zQ, 2).Resize(, intC).Value
Next zQ
For sZ = intC + 2 To intM Step intC
.Cells(1, sZ).Resize(, intC) = Cells(1, 2).Resize(, intC).Value
Next sZ
.Select
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Werte per Makro sortieren
02.05.2007 18:45:06
PWN
Hallo Ehrich,
phantastisch, exakt, das, was ich gesucht habe!
Ich glaube, ich muss mich etwas mehr mit VBA beschäftigen!
Diese Daten werden jetzt in eine andere Excel-Datei übertragen und über ein weiteres Makro zu einer txt-Datei verarbeitet. Diese wird über Batch-Input in eine Datenbank geladen. Dieses weitere Makro liest eben nur zeilenweise, daher der Aufwand, die spaltenweise vorliegenden Daten zu transponieren. Und da es immer wieder andere Datensätze mit anderen Informationen sind, benötigte ich die variable Anzahl von Spalten.
Nochmals vielen Dank, Du hast mir damit eine Menge Arbeit abgenommen.
Viele Grüße
Paul

Anzeige
Danke für Rückmeldung - Gerne! (oT)
02.05.2007 21:21:23
Erich G.

AW: Werte per Makro sortieren
01.05.2007 12:25:32
Erich G.
Hallo PWN (?),
noch etwas kürzer:


Option Explicit
Sub Uebertragen2()
Dim zZ As Long, zQ As Long, sZ As Integer, lngA As Long, intM As Integer
Sheets("IST").Select
zZ = 1
With Sheets("SOLL")
.Cells.ClearContents
.Cells(1, 1).Resize(, 8) = Cells(1, 1).Resize(, 8).Value
For zQ = 2 To Cells(Rows.Count, 1).End(xlUp).Row
If lngA <> Cells(zQ, 1) Then
lngA = Cells(zQ, 1)
zZ = zZ + 1:            .Cells(zZ, 1) = lngA
sZ = 2
Else
sZ = sZ + 7:            If intM < sZ Then intM = sZ
End If
.Cells(zZ, sZ).Resize(, 7) = Cells(zQ, 2).Resize(, 7).Value
Next zQ
For sZ = 9 To intM Step 7
.Cells(1, sZ).Resize(, 7) = Cells(1, 2).Resize(, 7).Value
Next sZ
.Select
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige