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

Schleifen verschachteln

Schleifen verschachteln
frank
hallo zusammen,
untenstehndes makro wurde hier im Forum geboren - nochmals dank an Tino.
Da es sich um einträge in einem kalender handelt benötige ich dies nun 12 mal. Habe es untereinander geschrieben variablen angepasst - funktioniert. ist aber irgendwie unübersichtlich. Suche seit heute morgen einen Weg die schleifen zu verschachteln.
Das soll so ablaufen.
Äußere Schleife alles muss 12 mal durchlaufen werden beginne in Zeile 1 nach jedem durchlauf weiter in Zeile 50 - 100 - 150... bis letzter Durchlauf Zeile 450 erreicht ist.
Mein Problem ist noch, das die variable vrow auch geändert werden muß und zwar um den faktor 3. Beginnt bei vrow =6 und beim letzten die 39.
Komme hier irgendwie durcheinander. Vielleicht kann jemand mal drüber schauen.
Sub App_Match()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim k As Long, vRow As Variant, i As Long
Set ws1 = Sheets("Frank")
Set ws2 = Sheets("caro")
For k = 1 To 7
If Cells(k, 1) = "" Then
ActiveCell.Value = ""
Else
vRow = Application.Match(ws1.Cells(k, 1).Value, ws2.Range("zeit").Columns(1), 0)
If IsNumeric(vRow) Then
ws1.Cells(k, 5).Value = ws2.Range("zeit").Cells(vRow, 6)
Else
ws1.Cells(k, 5).Value = ""
End If
End If
Next k
End Sub

AW: Schleifen verschachteln
07.03.2010 16:35:04
Daniel
HI
du kannst die äußere Schleife so basteln:
For Ze = 0 to 550 Step 50 (das wären dann 12 umläufe)
if Ze = 0 then Ze =1
...
...
Next
das erhöhen von vrow geht dann so:
vrow = vrow + 3
Gruß, Daniel
AW: Schleifen verschachteln
07.03.2010 16:59:00
frank
danke für die schnelle antwort stelle mich aber wahrscheinlich nicht gerade clever an. Habe es mal eingebaut aber die Zellen ab Zeile 50 bleiben leer. Habe vrow mal nicht hochzählen lassen - müssten ja in zeile 50 die selben Zellinhalte drinstehen wie in Zeile 1 alles leer.
Wo ist denn mein Denkfehler?
Sub App_Match()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim k As Long, vRow As Variant, i As Long, l As Long, ze As Long
Set ws1 = Sheets("Frank")
Set ws2 = Sheets("caro")
For ze = 0 To 550 Step 50
If ze = 0 Then ze = 1
For k = 1 To 7
If Cells(k, 1) = "" Then
ActiveCell.Value = ""
Else
vRow = Application.Match(ws1.Cells(k, 1).Value, ws2.Range("zeit").Columns(1), 0)
If IsNumeric(vRow) Then
ws1.Cells(k, 5).Value = ws2.Range("zeit").Cells(vRow, 6)
Else
ws1.Cells(k, 5).Value = ""
End If
End If
Next k
vRow = vRow + 3
Next
End Sub

Anzeige
AW: Schleifen verschachteln
07.03.2010 17:29:24
Daniel
Hi
so richtig plan von dem was du da veranstaltest, hast du aber nicht.
1. was bringt es dir, vRow hochzuzählen, wenn du den Wert eh über eine Variable zuweist.
2. wenn du die äußerer Schleife drumrumbaust, musst du den Schleifenzähler ze auch in irgendeiner Form im Code verwenden, sonst macht das ganze ja keinen Sinn
leider sehe ich deine Datei nicht dahinter und habe auch ansonten zu wenig Informationen, um zu verstehen, was dein Code bezwecken soll.
Daher kann ich dir auch nicht mehr als nur ein paar allgemeine Hinweise geben, aber keine fertigen Codebeispiele erstellen.
Gruß, Daniel
Anzeige
AW: Schleifen verschachteln
08.03.2010 08:34:52
frank
Hallo Daniel,
es gibt immer einen Plan, womöglich aber umständlich ausgedrückt.
Ursprünglich stehen in dem Sheet Frank in der Spalte E -- 480 Sverweisfunktionen untereinander welche sich die Werte aus dem Sheet Caro holen.
Beispiel - in Sheet Frank Spalte 1 Zeile 1 beginnend stehen 40 Namen welche in Spalte E über Sverweis Werte eingelesen bekommen die in Sheet Caro Spalte F stehen.
Ab Zeile 50 stehen in Sheet Frank Spalte 1 dieselben Namen - bekommen diesmal in Spalte E die werte aus Caro Spalte I und das weitere 10mal entsprechend den Monaten.
Dies wollte ich mit VBA lösen. Untenstehender Code zeigt wie ich es mit vlookup für jan bis mar getätigt habe. Passt - bin mehr als zufrieden - wollte die Geschichte verfeinern und bin an meine Grenzen gestoßen!
Application.Match mit vRow wurde mir empfohlen wie ich es eleganter anstellen könnte. Habe die Schleife aber nicht hinbekommen wie ich 50 zeilen + vRow hochzählen sollte. Zeile 1 + 50 =51... dort kam ich nicht klar.
Ich wollte es nur übersichtlicher gestalten - will keinen fertigen Code. Bin genauso am lernen wie viele andere, bloß mit Häppchen Step 3 oder habs ausprobiert bei mir gehts ....
Ist garantiert Super gemeint, hilft uns Fachidioten aber nicht viel weiter.
Frank
Sub suchen()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim o, k, s As Integer
Set ws1 = Sheets("Frank")
Set ws2 = Sheets("Caro")
On Error Resume Next
k = 1
For o = 1 To 40
If Cells(k, 1) = "" Then
ActiveCell.Value = ""
Else
ws1.Cells(k, 5).Value = WorksheetFunction.vlookup(ws1.Cells(k, 1).Value, ws2.Range("zeit"), 6,  _
0)
End If
k = k + 1
Next o
k = 50
For o = 1 To 40
If Cells(k, 1) = "" Then
ActiveCell.Value = ""
Else
ws1.Cells(k, 5).Value = WorksheetFunction.vlookup(ws1.Cells(k, 1).Value, ws2.Range("zeit"), 9,  _
0)
End If
k = k + 1
Next o
k = 100
For o = 1 To 40
If Cells(k, 1) = "" Then
ActiveCell.Value = ""
Else
ws1.Cells(k, 5).Value = WorksheetFunction.vlookup(ws1.Cells(k, 1).Value, ws2.Range("zeit"), 12,  _
0)
End If
k = k + 1
Next o
End Sub

Anzeige
Dafür gibt's Step 3... Gruß owT
07.03.2010 16:35:27
Luc:-?
:-?
AW: Dafür gibt's Step 3... Gruß owT
07.03.2010 17:09:47
frank
? wass issn Step 3?
hab Daniels vorschlag eingebaut aber bestimmt an der falschen stelle.
AW: Dafür gibt's Step 3... Gruß owT
07.03.2010 17:25:59
Reinhard
Hallo Frank,
du hast doch grade Step 50 in den Code eingebaut.
Gruß
Reinhard
Weißt du, Frank, das Ganze kommt mir vor...
07.03.2010 19:36:24
Luc:-?
…wie die Geschichte von dem Mann, der in der Kirche dafür betet, im Lotto zu gewinnen…
Eines Tages ertönt eine Stimme aus himmlischer Höhe… Gib mir eine Chance, kaufe ein Los!
In deinem Fall…
Wenn man etwas pgmieren will, sollte man schon Ahnung von den wichtigsten Regeln und Elementen haben und sich nicht darauf verlassen, dass das alles irgendwie wie von Geisterhand zueinander passt und findet! Ein Pgm ist keine magische Formel, keine Esoterik, auch wenn es manchem so vorkommen mag, sondern knallharte Mathematik, Sparte Algorithmik! Hier gilt das Prinzip von Ursache und Wirkung und das allgemeine Bewegungsgesetz der Informatik: Putting shit in equals getting shit out!
Also, wenn du dich waschen willst, musst du dich auch nass machen — willst du pgmieren, musst du etwas darüber lernen, so einfach ist das! Da fragt man nicht dümmlich Hä, Step?, sondern schaut einfach mal in der VBE-Hilfe unter For… nach. Soviel Eigeninitiative sollte schon zu spüren sein, wenn du dir helfen lassen willst! Viel anders haben wir das einst auch nicht gelernt…
Gruß Luc :-?
Anzeige
AW: Schleifen verschachteln
07.03.2010 19:56:22
Gerd
Hallo Frank!
Habe es untereinander geschrieben variablen angepasst - funktioniert.
Wenn Du da eine durchgängige Systematik in den Tabellen hast, dann zeige den
ersten, zweiten und zwölften Code, damit dir Luc das anpassen kann.
Gruß Gerd
...wenn er dazu noch Lust hat... ;-) orT
07.03.2010 20:45:52
Luc:-?
…wohl eher nicht! Aber viell der Andere…?
Gruß Luc :-?
AW: ...wenn er dazu noch Lust hat... ;-) orT
07.03.2010 21:01:30
Frank
Hallo Luc,
jetzt wirst Du aber unsachlich! Es gibt nämlich noch Leute die am Sonntagabend 18:00Uhr ihren Schichtdienst antreten um alkoholisierte Idioten von der Fahrbahn zu kratzen, garantiert auch andere die bei Feuerwehr oder Notdienst arbeiten.
Ich konnte mit Step3 nichts anfangen da ich mir die Prozedur aller 50 Zeilen vorstellte - und nun?
Gruß Frank
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige