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

For-next-Schleife

For-next-Schleife
27.12.2002 14:57:36
Kai P
Ich bin am Verzweifeln (oder nur blöd!?). Ich will Daten innerhalb einer Zeile (12 Zeilen in Folge als Datensatz) sortieren, indem ich sie reihenweise in ein neu erstelltes Datenblatt kopiere und dann dort sortiere und wieder einfüge. Problem 1: Es sind 12 -15 Datensätze a 12 Zellen pro Spalte. Problem 2: Es werden wohl ca. 2000 bis 2500 Datensätze (Zeilen). Mein ANsatz des meckerneden Makros ist darunter. Immer am Ende der Zeile meckert er, obwohl rein rechnerisch noch Platz sein müsste! Danke

Sub Sort2()
Sheets("Alle mit cw doppler").Select
'Auswahl erste U-Reihe
Range("L4").Select
Range(ActiveCell(), ActiveCell.offset(0, 11)).Select
Selection.Copy
'Datenblatt hinzufügen
Sheets.Add
ActiveSheet.Select
ActiveSheet.Name = "Daten"
Range("A1").Select
ActiveSheet.Paste
'Zeilenwechsel Daten
'Beginn schleife
ActiveCell.offset(1, 0).Range("A1").Select
'2.U-Reihe
Dim i As Byte
For i = 1 To 11
Sheets("Alle mit cw doppler").Select
ActiveCell.offset(0, 12).Select
Range(ActiveCell(), ActiveCell.offset(0, 11)).Select
Selection.Copy
Sheets("Daten").Select
ActiveSheet.Paste
ActiveCell.offset(1, 0).Range("A1").Select
Sheets("Alle mit cw doppler").Select
ActiveCell.offset(0, 12).Select
Next
If i = 11 Then
Range(ActiveCell(), ActiveCell.offset(0, 11)).Select
Else
Range(ActiveCell(), ActiveCell.offset(0, 11)).Select
Selection.Copy
Sheets("Daten").Select
ActiveSheet.Paste
End If
'U-Daten sortieren
If i = 11 Then
Columns("A:L").Select
Application.CutCopyMode = False
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If
End Sub

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Re: For-next-Schleife
27.12.2002 15:58:29
Nepumuk
Hallo Kai,
ich werde aus deiner Schleife nicht schlau. Von Spalte L - W kopieren, dann von X - AI kopieren. Dann von AJ - AU nicht kopieren, dann von AV - BG wieder kopieren. Bei deinem 11. Schleifendurchlauf stehst du in Spalte IR (=252) und willst 12 Spalten nach rechts. Da sind aber nur noch 5 Spalten.
Gruß
Nepumuk
Re: For-next-Schleife
27.12.2002 16:22:29
Das ist es wohl, aber...
Das ist das Problem. Es soll aber ab "L4" 12 mal 12 Zeilen nach rechts wandern und jeweils kopieren und anderweitig einfügen. Warum macht der dann diesen Mist. Ich sehe momentan den Wald vor lauter Bäumen nicht... Gibst du mir einen Tipp, wo die Lücke ist oder die Mehrfachwiderholung? Irgendwo scheinen sich die 12 ja zu potenzieren...


Danke

Kai

Anzeige
Re: For-next-Schleife
27.12.2002 16:37:18
Hajo_ZI
Hallo Kai

vielleicht solltest Du in Deinem Code auf Select verzichten. Ich habe mal versucht das Makro mir klar zu machen, bin aber nicht klar gekommen.

Vielleicht solltest Du mal in Worten mit Zellbezügen schreiben was Du erreichen willst.

Gruß Hajo

Re: For-next-Schleife
27.12.2002 16:46:25
Kai P.
Ich möcjhte in einer Zeile befindliche Datensätze (L4:W4;X4:AI4 usw.)kopieren und in einem anderen Tabellenblatt nach Datum (steht jeweils in der ersten dieser Zeilen) sortieren und anschl. wieder einsetzen. Pro Zeile sind das max. 12-15 solcher Sätze. Insgesamt ca. 2000 Zeilen. Das sollte ein Lösungsansatz werden, bei dem aber schon die erste Schleife meine begrenzten Kenntnisse übersteigt.

Ich hoffe, das war einigermaßen verständlich.


Danke


Kai

Anzeige
Re: For-next-Schleife
27.12.2002 16:52:18
Hajo_zi
Hallo Kai

das habe ich in Deinem Code nicht gesehen.

Es wurde eine neue Tabelle angelegt und von eine Datum habe ich nichts gesehen???

Von dem Zurückkopieren nach Sortieren auch nicht??
Zwei Bereiche kopieren auch nicht???
200 Zeilen auch nicht?? ich sehe nur eine schleife von 1 bis 11??

Versuche es nochmal für einen außenstehenden zu Beschreiben. Du mußt immer bedenken die Helfer bauen nach Deinen Angeben die Tabelle nach (ich jedenfalls)

Jetzt ist erstmal für ca. 2 Stunden Pause.

Gruß Hajo

Re: For-next-Schleife
27.12.2002 17:02:37
Nepumuk
Hallo Kai,
das Programm für den ersten Teil siht so aus:

Aber wie gehts jetzt weiter?
Gruß
Nepumuk
Anzeige
Re: For-next-Schleife
27.12.2002 18:50:00
L.Vira
So ist es korrekt:
Tabelle.Columns("A:L").Sort Key1:=Tabelle.Range("A1")
Re: For-next-Schleife
27.12.2002 19:19:16
Kai P.
Toll!!!!!!!
Klasse Lösung in erheblich weniger Zeilen! Wie wechsle ich jetzt in die nächste Zeile, um das ca. 2500 mal durchlaufen zu lassen und die sortierten Werte dann zeilenweise wieder einzufügen?! Hätte nie geglaubt, dass es hier solche Profis gibt, die dann auch noch so schnell antworten. Nochmals danke!


ein fast glücklicher Kai

Re: For-next-Schleife
27.12.2002 19:50:04
Nepumuk
Hallo Kai,
sieht dann so aus:

Gruß
Nepumuk
Re: For-next-Schleife
28.12.2002 12:49:00
Kai P.
Zuerst einmal DANKE! Echt toll, was man mit 37 Zeilen Makro so anstellen kann. Jetzt ist aber alles durcheinander. Habe ich wohl blöd erklärt. Ich versuche es nochmal:

Ich habe eine Tabelle mit ca. 2000 Namen. Hinter jedem Namen stehen Daten (ab Spalte L) mit zugehörigen Werten. Einige Personen haben mehrere Daten (hier von Datum abgeleitet) mit Werten, andere keine. Ich will jetzt die Datenreihen (also ein Datum in z.B. L4 mit zugehörigen Werten M4:W4) nach den Daten in Spalte L; nächsten Satz ab Spalte X nach den Daten (Datum) in Spalte L, X etc. sortieren, aber so, dass nur die Daten der Zeile, also zur Person gehörig, sortiert werden. Nach deinem Makro stehen aber Daten anderer Personen in der Zeile, die zuvor leer war usw. Verwirrend? Ich weiß. :-(
Da meine Makro-Schreiberei nicht zum Durchschauen und Ändern deines tollen Makros reicht, bitte ich nochmals um Hilfe. Bei Verständnisfragen: gern auch per Email. puschke@aol.com

Danke


Kai

Anzeige
Re: For-next-Schleife
28.12.2002 12:55:27
Kai P.
Ich glaube ich weiß.... Das Makro liest alle Daten aus, sortiert, fügt ein. Richtig wäre: Auslesen, vor Wechsel in die nächste Zeile sortieren und einfügen. Nächste Zeile und göeiches wieder, so bleiben die Daten den Personen zugeordnet... Hilft das???


THX


Kai

Re: For-next-Schleife
28.12.2002 17:08:09
Nepumuk
Hallo Kai,

das hilft natürlich. Dann geht's sogar noch ein Stück kürzer.


Option Explicit
Sub Sort2()
Dim Tabelle As Worksheet, gefunden As Boolean, spalte As Integer, zeile As Long, dzeile As Long
Application.ScreenUpdating = False
For Each Tabelle In ThisWorkbook.Worksheets
If Tabelle.Name = "Daten" Then gefunden = True
Next Tabelle
If Not gefunden Then
Sheets.Add
ActiveSheet.Name = "Daten"
End If
Set Tabelle = Sheets("Daten")
With Sheets("Alle mit cw doppler")
For zeile = 4 To .UsedRange.Rows.Count
Tabelle.Cells.Clear
For spalte = 12 To 144 Step 12
.Range(.Cells(zeile, spalte), .Cells(zeile, spalte + 11)).Copy Tabelle.Range("A65536").End(xlUp).Offset(1, 0)
Next spalte
Tabelle.Columns("A:L").Sort Key1:=Tabelle.Range("A1")
dzeile = 0
For spalte = 12 To 144 Step 12
dzeile = dzeile + 1
Tabelle.Range("A" & CStr(dzeile) & ":L" & CStr(dzeile)).Copy .Range(.Cells(zeile, spalte), .Cells(zeile, spalte + 11))
Next spalte
Next zeile
End With
Set Tabelle = Nothing
Application.DisplayAlerts = False
Sheets("Daten").Delete
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub


Gruß
Nepumuk

Anzeige
Re: For-next-Schleife
28.12.2002 17:40:25
Kai P.
DANKE MEIN HELD! Du hast mir gerade "lebenslänglich" am PC erlassen! Eine allerletzte Frage Nepumuk, wie stelle ich jetzt noch ein, dass nur Werte eingefügt werden? Linien und Farben sollen nicht geändert werden!

Danke, danke, danke

Du wirst in mein Nachtgebet aufgenommen...


Kai

P.S. Ich hätte das in 32 Jahren gelöst und mit nur 80000 Zeilen, wenn meine For-Next-Schleife nicht hätte laufen wollen...


Kai

Re: For-next-Schleife
28.12.2002 20:40:45
Nepumuk
Hallo Kai,
deswegen wird man beim Metzger gefragt: "Darf's a bisserl mehr sein?".

Option Explicit
Sub Sort2()
Dim Tabelle As Worksheet, gefunden As Boolean, spalte As Integer, zeile As Long, dzeile As Long
Application.ScreenUpdating = False
For Each Tabelle In ThisWorkbook.Worksheets
If Tabelle.Name = "Daten" Then gefunden = True
Next Tabelle
If Not gefunden Then
Sheets.Add
ActiveSheet.Name = "Daten"
End If
Set Tabelle = Sheets("Daten")
With Sheets("Alle mit cw doppler")
For zeile = 4 To .UsedRange.Rows.Count
Tabelle.Cells.Clear
For spalte = 12 To 144 Step 12
.Range(.Cells(zeile, spalte), .Cells(zeile, spalte + 11)).Copy Tabelle.Range("A65536").End(xlUp).Offset(1, 0)
Next spalte
Tabelle.Columns("A:L").Sort Key1:=Tabelle.Range("A1")
dzeile = 0
For spalte = 12 To 144 Step 12
dzeile = dzeile + 1
Tabelle.Range("A" & CStr(dzeile) & ":L" & CStr(dzeile)).Copy
.Range(.Cells(zeile, spalte), .Cells(zeile, spalte + 11)).PasteSpecial Paste:=xlPasteValues
Next spalte
Next zeile
End With
Set Tabelle = Nothing
Application.DisplayAlerts = False
Sheets("Daten").Delete
With Application
.DisplayAlerts = True
.ScreenUpdating = True
End With
End Sub

Gruß
Nepumuk

Anzeige
D A N K E
29.12.2002 12:52:12
Kai P.
Danke Danke Danke Danke Danke Danke! Mein Held! Dieses BForum werde ich im Auge behalten!

Einen guten Rutsch ins neue Jahr!


Kai (zufrieden und glücklich!)

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige