Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1876to1880
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
Inhaltsverzeichnis

Frage an Yal

Frage an Yal
23.03.2022 09:48:19
Matthias
Lieber Yal,
Du hattes mir vor einiger Zeit ein Makro (s.u.) zukommen lassen, mit dem ich 3 Spalten in 6-er Blöcken umsortieren kann.
Nun will es mir nicht gelingen das makro so abzuändern, dass jeweils 5 Zeilen umsortiert werden.
Vielleicht könntest Du mir ja nochmal auf die Sprünge helfen.
Danke schon mal,
Matthias

Sub Transformiere()
Dim Z As Range
Dim R As Long 'Row-Ziel
Dim C As Long 'Column-Ziel
With Worksheets("Eingabe")
For Each Z In .Range(.Range("A1"), .Range("A1").End(xlDown)).Cells
R = (Z.Row - 1) Mod 6 + 1
C = Int(Z.Row / 6) * 3 + 5
.Cells(R, C).Resize(1, 3) = Z.Resize(1, 3).Value
Next
End With
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage an Yal
23.03.2022 09:58:23
Yal
Hallo Matthias,
Klar, ich war der Übeltäter, es konnte aber jeden an dem gesunden Brainfuck beteiligen ;-)
Ich frage mich auch, ob ich sofort eine Antwort geben soll, oder zuerst warten...
Na ja: komplet blind und wahrscheinlich teilweise falsch (nicht getestet):
(@ALLEN: anschauen und korrigieren, da nicht gestest. Danke.
@Matthias: dafür ein Beispieldatei bereitstellen, sonst kriegste keine Hilfe)

Sub Transformieren()
Dim Z As Range
Dim R As Long 'Row-Ziel
Dim C As Long 'Column-Ziel
Const Anz_Ze = 5
Const Anz_Sp = 3
With Worksheets("Eingabe")
For Each Z In .Range(.Range("A1"), .Range("A1").End(xlDown)).Cells
R = (Z.Row - 1) Mod Anz_Ze + 1
C = Int(Z.Row / Anz_Ze) * Anz_Sp + Anz_Ze - 1
.Cells(R, C).Resize(1, Anz_Sp) = Z.Resize(1, Anz_Sp).Value
Next
End With
End Sub
VG
Yal
Anzeige
AW: Frage an Yal
23.03.2022 13:03:02
Matthias
Hallo Yal, oder wer sich sonst angesprochen fühlt,
vielen Dank erst mal, aber so funktioniert das noch nicht richtig.
Im Anhang (https://www.herber.de/bbs/user/151983.xlsm) ist ein abgekürztes Beispiel: die Ursprungsdaten stehen in den Spalten A-C, das Resultat des Makros in den Spalten D-AD.
Ich bin sicher das lässt sich lösen.
Wie immer schon mal vielen Dank,
Matthias
eine kleine Bitte bezüglich des Links
23.03.2022 13:06:16
Daniel
Hi
schreibe bitte den Link in eine eigene Zeile oder lass davor und danach ein Leerzeichen.
nur dann macht der Editor einen Link daraus den man einfach anklicken kann um die Datei zu öffnen.
Gruß Daniel
Anzeige
AW: Frage an Yal
23.03.2022 14:05:01
Yal
Hallo Matthias,
irgendwie habe ich an dem Tag unnötig kompliziert gedacht.

Sub Transformieren()
Dim Z As Range
Dim R As Long 'Row-Ziel
Dim C As Long 'Column-Ziel
Const Anz_Ze = 5
Const Anz_Sp = 3
With Worksheets("Eingabe")
R = 1
C = 1 + Anz_Sp
i = 1
Do While .Cells(i, 1)  ""
.Cells(R, C).Resize(1, Anz_Sp) = .Cells(i, 1).Resize(1, Anz_Sp).Value
i = i + 1
R = R + 1
If R > Anz_Ze Then R = 1: C = C + Anz_Sp
Loop
End With
End Sub
Zum Testzweck ist es sinnvoll, die Zahlen 1 bis 40 in der Spalte A zu haben. So kann man schneller kontrollieren, dass alles übertragen worden ist.
VG
Yal
Anzeige
AW: Frage an Yal
23.03.2022 14:13:30
Matthias
toll, danke!
AW: Frage an Yal
23.03.2022 16:19:54
Daniel
Hi
hier noch eine Möglichkeit, die Umsortierung zu realisieren.
ist vielleicht etwas einfacher zu verstehehn.

Sub Transformieren()
Dim rngA As Range 'quellblock
Dim rngB As Range 'zielblock
Set rngA = Cells(1, 1).Resize(5, 3) 'startposition und größe
Set rngB = rngA.Offset(0, rngA.Columns.Count)
Do
rngB.Value = rngA.Value
Set rngA = rngA.Offset(rngA.Rows.Count, 0)
Set rngB = rngB.Offset(0, rngB.Columns.Count)
Loop Until rngA(1) = ""
End Sub
Gruß Daniel
Daniel, der Punkt geht heute an Dich!
23.03.2022 16:53:06
Yal
so einfach kann eine Lösung sein! Gefällt mir.
VG
Yal
Anzeige
AW: Daniel, der Punkt geht heute an Dich!
24.03.2022 08:16:49
Matthias
Bin wie immer dankbar und beeindruckt von der schnellen, unkomplizierten Hilfe.
Gruß,
Matthias

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige