Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1376to1380
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

Grenze von Schleife

Grenze von Schleife
03.09.2014 17:07:21
Schleife
Hi, ich habe mal wieder ein Problem mit vba und würd mich freunen wenn mir einer helfen kann: zur Veranschaulichung hier schonmal ein Beispielbild:
Userbild
Zughöriger Quellcode:
For i=1 To a ' a ist eine variable Grenze die in einer anderen Schleife bestimmt wird(ca. 4000)
For j=1 To a
For l=1 To x ' gilt das gleiche wie bei a, nur auf eine andere Spalte bezogen(ca. 200)
If Cells(2+i,3).Value=l And Cells(2+j,4).Value="1" Then
Cells(2+j,5). Copy Destination:= Cells(2+z,6)
z=z+1
End If
Next l
Next j
Next i
was mein Ziel ist: Wenn in Spalte C(laufvariable i) eine 1 steht und in Spalte D eine 1(Laufvariable j) steht, soll die Zelle daneben(Spalte D) kopiert werden und in Spalte F ausgegeben werden, geordnet nach Spalte B(also von 1 bis 500 oder so, laufvariable l). Enstsprechend sollen E3 und E9 kopiert und nach F3 und F4 kopiert werden. Fehlt solch ein passender Eintrag, wie bei C20/D20 so soll in F5 eine Zelle frei bleiben(das schafft z als zusätzliche Laufvariable leider nicht).
Für Zelle C ist die Anzahl gleicher Einträge(1,2 usw.) nicht immer die selbe Anzahl von Zellen, sodass ich bisher keine Möglichkeit gefunden habe außer alle Spalten durchsuchen zu lassen. Das wäre aus meiner Sicht auch eine Möglichkeit, durch eine variable obere und untere Grenze von j das einzugrenzen. Eine andere Möglichkeit wäre vllt noch, sobald er ein Erg. gefunden hat die Schleife abzubrechen.
Mit dem oben beschriebenen Quelltext sucht er mir zwar alle Werte richtig raus, lässt aber da wo kein Wert ist auch keine Zelle frei...
ich hoffe ich hab mich mehr oder weniger Verständlich ausgedrückt und irgendjemand kann mir helfen.
Viele Grüße, Toni

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Grenze von Schleife
04.09.2014 11:34:13
Schleife
Hallo Toni,
die Spalte C ist ja aufsteigend sortiert, deshalb kann man den Startwert der Schleife dynamisch anpassen.
Durch eine Anpassung der Prüfungen kann man den Startwert der inneren Schleife am aktuelen Wert der äußeren Schleife starten. Die inere Schleife kann man verlassen, wenn eine Übereinstimmung gefunden wurde oder wenn sich der Wert in Spalte C nicht mehr übereinstimmt.
So erreicht man, dass bei den Schleifen durchläufen immer nur wenige Zeilen verglichen werden müssen.
Die Reihenfolge der Schleifen muss geändert werden, damit die Reihenfolge im kopierten Bereich stimmt.
Gruß
Franz
Sub bbTest()
Dim i, j, L, a, x, z, iStart
Dim bolGefunden As Boolean
a = 32                                            'Testzeile
x = Application.WorksheetFunction.Max(Columns(3)) 'Testzeile
'Makrobremsen lösen
With Application
StatusCalc = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
.EnableEvents = False
End With
iStart = 1
For L = 1 To x ' gilt das gleiche wie bei a, nur auf eine andere Spalte bezogen(ca. 200)
bolGefunden = False
For i = iStart To a ' a ist eine variable Grenze die in einer anderen Schleife bestimmt  _
wird(ca. 4000)
If Cells(2 + i, 3).Value = L Then
iStart = i
For j = i To a
If Cells(2 + j, 3).Value = L And Cells(2 + j, 4).Value = "1" Then
Cells(2 + j, 5).Copy Destination:=Cells(2 + z, 6)
z = z + 1
bolGefunden = True
Exit For
ElseIf Cells(2 + i, 3).Value  L Then
Exit For
End If
Next j
If j 

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige