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

...diesmal konkretes Problem

...diesmal konkretes Problem
21.07.2005 17:13:26
Ramon
Hallo zusammen,
nachdem mein letztes Problem wohl zugegebenermassen etwas kompliziert formuliert war habe ich diesmal ein konkretes Problem...in meinem Makro beschreibe ich einige Zellen mehrfach (mit verschiedenen Werten).Also zum Beispiel Zelle a mit den Werten 1,2,3...Zelle b mit 4,5 und Zelle c mit 0.5, 6 und 8.5...schön...diese Zellen a,b,c lasse ich dann einlesen...alle kombiniert ergibt dies dann 3*2*3=18 verschiedene Möglichkeiten...schön...Problem ist jetzt folgendes...man nehme an zunächst werden die Zellen a =1, b=4 und c=0.5 eingelesen.Dann springt Zelle a auf 2-die anderen beiden bleiben gleich. Dann a=3...danach springt b auf 5 und wiederum wird a mit 1,2,3 beschrieben...dann sollte um dem Algorithmus zu folgen c auf 5 springen und a und b wie beschrieben erneut bechrieben werden...c springt auch auf 5, jedoch erst nachdem die steps 1,1.5,2,2.5,u.s.w. bis 5 durchlaufen wurden...diese werden zwar nicht angezeigt jedoch kann man durch mitzaehlen der erneuten Durchläufe der Zellen a und b erahnen das dem so ist...das kostet viel Zeit...Ziel ist also, das Zelle c nach dem Durchlauf von c=0.5 direkt auf c=5 umspringt.
Die Syntax habe ich wie folgt definiert:
For a = 1 to 3
Cells("ohne Relevanz")=a
For b = 4 to 5
Cells("ohne Relevanz")=b
For c = 0.5 to 8 step 0.5
select case c
case 0.5, 5, 8
Cells("ohne Relevanz")=c
End select
Das Problem ist also der 0.5er step...glaube ich...kann man das denn noch irgendwie anders geschickter formulieren um dieses Problem zu beheben?
Wäre nett wenn mir jemand sagen könnte wie...Danke vielmals, Gruss Ramon

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
poste bitte mal den ganzen Code und...
24.07.2005 14:54:35
Reinhard
Hi Ramon,
...versuchs nochmal mit anderen Worten mir zu beschreiben was du eigentlich möchtest.
Gruß
Reinhard
AW: poste bitte mal den ganzen Code und...
27.07.2005 09:22:56
Ramon
Hi Reinhard,
dann versuch ich dir nochmal das ganze anders zu erklären...also, wie gesagt werden 3 verschiedene Zellen mehrfach mit verschiedenen Werten beschrieben. Diese Zellen sind Bestandteil der Einlesezeile...eine Zeile die wenn sie eingelesen wurde mit den Zeilen einer Tabelle verglichen wird bis die richtige gefunden wurde. Soll jetzt diese Einlesezeile aus den drei erwähnten Zellen bestehen, und werden diese mehrfach beschrieben (Zelle a mit 1, 2 und 3...Zelle b mit 4 und 5 und Zelle c mit 0.5 , 5 und 8) dann ergeben sich 3*2*3=18 verschiedene mögliche Kombinationen für diese Einlesezeile. Das Problem ist, dass die Zelle c anscheinend auch mit den Zwischenwerten beschrieben wird..also 1, 1.5, 2..etc, und nicht nur mit 0.5, 5 und 8 wie eigentlich vorgesehen...(wie erwähnt werden diese Zwischenwerte in der Zelle c zwar nicht angezeigt, aber man kann es erahnen, da z.B. bis in Zelle c der Wert von 0.5 auf 5 springt genau 9 mal (0.5 bis 5 im step 0.5) die Zellen a und b mit den oben erwähnten Werten beschrieben werden,und nicht nur einmal wie eigentlich gedacht. Ich komme zwar zum Ziel, jedoch nur durch lange Makro-Laufzeiten...ich habe dir unten mal den gesamten, sehr wahrscheinlich auch sonst umständlichen Code angehangen...die bisher verwendeten Zellen a,b,c sind im Code die Variablen j,z,k,c,f (in Wirklichkeit besteht die Einlesezeile aus 5 Werten, was aber an dem Problem nichts ändert, das bei den Variablen mit Step, wie beschrieben, alle Steps durchlaufen werden)...vielleicht hast du ja eine Idee..ist glaube ich ein kleines Problem, nur schwer zu erklären...vielen Dank für deine Mühe...Gruss Ramon

Sub Total()
Dim l As Integer
Dim j As Integer
Dim z As Integer
Dim x As Integer
Dim Var
For j = 1 To 5
Sheets("Input").Cells(16, 10) = j
For z = 1 To 6
Select Case z
Case 1, 2, 3, 6
Sheets("Input").Cells(18, 10) = z
End Select
For k = 0.5 To 8 Step 0.5
Select Case k
Case 0.5, 5, 8
Sheets("Input").Cells(18, 5) = k
End Select
For c = 0.5 To 4.5 Step 4
Sheets("Input").Cells(18, 6) = c
For f = 235 To 355 Step 40
Select Case f
Case 235, 275, 355
Sheets("Input").Cells(18, 2) = f
End Select
For x = 1 To 8
If Sheets("Input").Cells(8, 10) < Sheets("Pf_Steel").Cells(47 + x * 9, 3) Then Exit For
Var = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Sheets("Pf_Steel").Range(Sheets("Pf_Steel").Cells(46 + x * 9, 3), Sheets("Pf_Steel").Cells(46 + x * 9, 9)))), "#")
If j = 1 Then
datensatzanfang = 5
datensatzgroesse = 2951
End If
If j = 2 Then
datensatzanfang = 2957
datensatzgroesse = 2951
End If
If j = 3 Then
datensatzanfang = 5909
datensatzgroesse = 2087
End If
If j = 4 Then
datensatzanfang = 7997
datensatzgroesse = 2087
End If
If j = 5 Then
datensatzanfang = 10085
datensatzgroesse = 2087
End If
For suchzeile = datensatzanfang To datensatzanfang + datensatzgroesse
If Var = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Range(Cells(suchzeile, 3), Cells(suchzeile, 9)))), "#") Then
If f = 235 Then
If c = 0.5 Then
If k = 0.5 Then
'If z <> 6 Then l = z
If z = 1 Then l = 1
If z = 2 Then l = 2
If z = 3 Then l = 3
If z = 6 Then l = 4
End If
If k = 5 Then....usw...
If f = 275 then....hier hab ich das ganze mal abgekürzt, da das nix zur Sache tut
Sheets("Tot_L5").Cells((13 * (5 * l - (5 - j)) - 8), 14 - (9 - x)) = Sheets("Pf_IC-IF").Cells(suchzeile, 6)
Sheets("Tot_L5").Cells((13 * (5 * l - (5 - j)) - 9), 14 - (9 - x)) = suchzeile - 4
Exit For
End If
Next suchzeile
Next x
Next f
Next c
Next k
Next z
Next j
End Sub

Anzeige
AW: poste bitte mal den ganzen Code und...
27.07.2005 09:23:11
Ramon
Hi Reinhard,
dann versuch ich dir nochmal das ganze anders zu erklären...also, wie gesagt werden 3 verschiedene Zellen mehrfach mit verschiedenen Werten beschrieben. Diese Zellen sind Bestandteil der Einlesezeile...eine Zeile die wenn sie eingelesen wurde mit den Zeilen einer Tabelle verglichen wird bis die richtige gefunden wurde. Soll jetzt diese Einlesezeile aus den drei erwähnten Zellen bestehen, und werden diese mehrfach beschrieben (Zelle a mit 1, 2 und 3...Zelle b mit 4 und 5 und Zelle c mit 0.5 , 5 und 8) dann ergeben sich 3*2*3=18 verschiedene mögliche Kombinationen für diese Einlesezeile. Das Problem ist, dass die Zelle c anscheinend auch mit den Zwischenwerten beschrieben wird..also 1, 1.5, 2..etc, und nicht nur mit 0.5, 5 und 8 wie eigentlich vorgesehen...(wie erwähnt werden diese Zwischenwerte in der Zelle c zwar nicht angezeigt, aber man kann es erahnen, da z.B. bis in Zelle c der Wert von 0.5 auf 5 springt genau 9 mal (0.5 bis 5 im step 0.5) die Zellen a und b mit den oben erwähnten Werten beschrieben werden,und nicht nur einmal wie eigentlich gedacht. Ich komme zwar zum Ziel, jedoch nur durch lange Makro-Laufzeiten...ich habe dir unten mal den gesamten, sehr wahrscheinlich auch sonst umständlichen Code angehangen...die bisher verwendeten Zellen a,b,c sind im Code die Variablen j,z,k,c,f (in Wirklichkeit besteht die Einlesezeile aus 5 Werten, was aber an dem Problem nichts ändert, das bei den Variablen mit Step, wie beschrieben, alle Steps durchlaufen werden)...vielleicht hast du ja eine Idee..ist glaube ich ein kleines Problem, nur schwer zu erklären...vielen Dank für deine Mühe...Gruss Ramon

Sub Total()
Dim l As Integer
Dim j As Integer
Dim z As Integer
Dim x As Integer
Dim Var
For j = 1 To 5
Sheets("Input").Cells(16, 10) = j
For z = 1 To 6
Select Case z
Case 1, 2, 3, 6
Sheets("Input").Cells(18, 10) = z
End Select
For k = 0.5 To 8 Step 0.5
Select Case k
Case 0.5, 5, 8
Sheets("Input").Cells(18, 5) = k
End Select
For c = 0.5 To 4.5 Step 4
Sheets("Input").Cells(18, 6) = c
For f = 235 To 355 Step 40
Select Case f
Case 235, 275, 355
Sheets("Input").Cells(18, 2) = f
End Select
For x = 1 To 8
If Sheets("Input").Cells(8, 10) < Sheets("Pf_Steel").Cells(47 + x * 9, 3) Then Exit For
Var = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Sheets("Pf_Steel").Range(Sheets("Pf_Steel").Cells(46 + x * 9, 3), Sheets("Pf_Steel").Cells(46 + x * 9, 9)))), "#")
If j = 1 Then
datensatzanfang = 5
datensatzgroesse = 2951
End If
If j = 2 Then
datensatzanfang = 2957
datensatzgroesse = 2951
End If
If j = 3 Then
datensatzanfang = 5909
datensatzgroesse = 2087
End If
If j = 4 Then
datensatzanfang = 7997
datensatzgroesse = 2087
End If
If j = 5 Then
datensatzanfang = 10085
datensatzgroesse = 2087
End If
For suchzeile = datensatzanfang To datensatzanfang + datensatzgroesse
If Var = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Range(Cells(suchzeile, 3), Cells(suchzeile, 9)))), "#") Then
If f = 235 Then
If c = 0.5 Then
If k = 0.5 Then
'If z <> 6 Then l = z
If z = 1 Then l = 1
If z = 2 Then l = 2
If z = 3 Then l = 3
If z = 6 Then l = 4
End If
If k = 5 Then....usw...
If f = 275 then....hier hab ich das ganze mal abgekürzt, da das nix zur Sache tut
Sheets("Tot_L5").Cells((13 * (5 * l - (5 - j)) - 8), 14 - (9 - x)) = Sheets("Pf_IC-IF").Cells(suchzeile, 6)
Sheets("Tot_L5").Cells((13 * (5 * l - (5 - j)) - 9), 14 - (9 - x)) = suchzeile - 4
Exit For
End If
Next suchzeile
Next x
Next f
Next c
Next k
Next z
Next j
End Sub

Anzeige
AW: poste bitte mal den ganzen Code und...
27.07.2005 09:24:27
Ramon
Hi Reinhard,
dann versuch ich dir nochmal das ganze anders zu erklären...also, wie gesagt werden 3 verschiedene Zellen mehrfach mit verschiedenen Werten beschrieben. Diese Zellen sind Bestandteil der Einlesezeile...eine Zeile die wenn sie eingelesen wurde mit den Zeilen einer Tabelle verglichen wird bis die richtige gefunden wurde. Soll jetzt diese Einlesezeile aus den drei erwähnten Zellen bestehen, und werden diese mehrfach beschrieben (Zelle a mit 1, 2 und 3...Zelle b mit 4 und 5 und Zelle c mit 0.5 , 5 und 8) dann ergeben sich 3*2*3=18 verschiedene mögliche Kombinationen für diese Einlesezeile. Das Problem ist, dass die Zelle c anscheinend auch mit den Zwischenwerten beschrieben wird..also 1, 1.5, 2..etc, und nicht nur mit 0.5, 5 und 8 wie eigentlich vorgesehen...(wie erwähnt werden diese Zwischenwerte in der Zelle c zwar nicht angezeigt, aber man kann es erahnen, da z.B. bis in Zelle c der Wert von 0.5 auf 5 springt genau 9 mal (0.5 bis 5 im step 0.5) die Zellen a und b mit den oben erwähnten Werten beschrieben werden,und nicht nur einmal wie eigentlich gedacht. Ich komme zwar zum Ziel, jedoch nur durch lange Makro-Laufzeiten...ich habe dir unten mal den gesamten, sehr wahrscheinlich auch sonst umständlichen Code angehangen...die bisher verwendeten Zellen a,b,c sind im Code die Variablen j,z,k,c,f (in Wirklichkeit besteht die Einlesezeile aus 5 Werten, was aber an dem Problem nichts ändert, das bei den Variablen mit Step, wie beschrieben, alle Steps durchlaufen werden)...vielleicht hast du ja eine Idee..ist glaube ich ein kleines Problem, nur schwer zu erklären...vielen Dank für deine Mühe...Gruss Ramon

Sub Total()
Dim l As Integer
Dim j As Integer
Dim z As Integer
Dim x As Integer
Dim Var
For j = 1 To 5
Sheets("Input").Cells(16, 10) = j
For z = 1 To 6
Select Case z
Case 1, 2, 3, 6
Sheets("Input").Cells(18, 10) = z
End Select
For k = 0.5 To 8 Step 0.5
Select Case k
Case 0.5, 5, 8
Sheets("Input").Cells(18, 5) = k
End Select
For c = 0.5 To 4.5 Step 4
Sheets("Input").Cells(18, 6) = c
For f = 235 To 355 Step 40
Select Case f
Case 235, 275, 355
Sheets("Input").Cells(18, 2) = f
End Select
For x = 1 To 8
If Sheets("Input").Cells(8, 10) < Sheets("Pf_Steel").Cells(47 + x * 9, 3) Then Exit For
Var = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Sheets("Pf_Steel").Range(Sheets("Pf_Steel").Cells(46 + x * 9, 3), Sheets("Pf_Steel").Cells(46 + x * 9, 9)))), "#")
datensatzanfang = 5
datensatzgroesse = 12083
For suchzeile = datensatzanfang To datensatzanfang + datensatzgroesse
If Var = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Range(Cells(suchzeile, 3), Cells(suchzeile, 9)))), "#") Then
If f = 235 Then
If c = 0.5 Then
If k = 0.5 Then
'If z <> 6 Then l = z
If z = 1 Then l = 1
If z = 2 Then l = 2
If z = 3 Then l = 3
If z = 6 Then l = 4
End If
If k = 5 Then....usw...
If f = 275 then....hier hab ich das ganze mal abgekürzt, da das nix zur Sache tut
Sheets("Tot_L5").Cells((13 * (5 * l - (5 - j)) - 8), 14 - (9 - x)) = Sheets("Pf_IC-IF").Cells(suchzeile, 6)
Sheets("Tot_L5").Cells((13 * (5 * l - (5 - j)) - 9), 14 - (9 - x)) = suchzeile - 4
Exit For
End If
Next suchzeile
Next x
Next f
Next c
Next k
Next z
Next j
End Sub

Anzeige
AW: poste bitte mal den ganzen Code und...
27.07.2005 11:15:40
Ramon
Hi Reinhard,
dann versuch ich dir nochmal das ganze anders zu erklären...also, wie gesagt werden 3 verschiedene Zellen mehrfach mit verschiedenen Werten beschrieben. Diese Zellen sind Bestandteil der Einlesezeile...eine Zeile die wenn sie eingelesen wurde mit den Zeilen einer Tabelle verglichen wird bis die richtige gefunden wurde. Soll jetzt diese Einlesezeile aus den drei erwähnten Zellen bestehen, und werden diese mehrfach beschrieben (Zelle a mit 1, 2 und 3...Zelle b mit 4 und 5 und Zelle c mit 0.5 , 5 und 8) dann ergeben sich 3*2*3=18 verschiedene mögliche Kombinationen für diese Einlesezeile. Das Problem ist, dass die Zelle c anscheinend auch mit den Zwischenwerten beschrieben wird..also 1, 1.5, 2..etc, und nicht nur mit 0.5, 5 und 8 wie eigentlich vorgesehen...(wie erwähnt werden diese Zwischenwerte in der Zelle c zwar nicht angezeigt, aber man kann es erahnen, da z.B. bis in Zelle c der Wert von 0.5 auf 5 springt genau 9 mal (0.5 bis 5 im step 0.5) die Zellen a und b mit den oben erwähnten Werten beschrieben werden,und nicht nur einmal wie eigentlich gedacht. Ich komme zwar zum Ziel, jedoch nur durch lange Makro-Laufzeiten...ich habe dir unten mal den gesamten, sehr wahrscheinlich auch sonst umständlichen Code angehangen...die bisher verwendeten Zellen a,b,c sind im Code die Variablen j,z,k,c,f (in Wirklichkeit besteht die Einlesezeile aus 5 Werten, was aber an dem Problem nichts ändert, das bei den Variablen mit Step, wie beschrieben, alle Steps durchlaufen werden)...vielleicht hast du ja eine Idee..ist glaube ich ein kleines Problem, nur schwer zu erklären...vielen Dank für deine Mühe...Gruss Ramon

Sub Total()
Dim l As Integer
Dim j As Integer
Dim z As Integer
Dim x As Integer
Dim Var
For j = 1 To 5
Sheets("Input").Cells(16, 10) = j
For z = 1 To 6
Select Case z
Case 1, 2, 3, 6
Sheets("Input").Cells(18, 10) = z
End Select
For k = 0.5 To 8 Step 0.5
Select Case k
Case 0.5, 5, 8
Sheets("Input").Cells(18, 5) = k
End Select
For c = 0.5 To 4.5 Step 4
Sheets("Input").Cells(18, 6) = c
For f = 235 To 355 Step 40
Select Case f
Case 235, 275, 355
Sheets("Input").Cells(18, 2) = f
End Select
For x = 1 To 8
If Sheets("Input").Cells(8, 10) < Sheets("Pf_Steel").Cells(47 + x * 9, 3) Then Exit For
Var = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Sheets("Pf_Steel").Range(Sheets("Pf_Steel").Cells(46 + x * 9, 3), Sheets("Pf_Steel").Cells(46 + x * 9, 9)))), "#")
datensatzanfang = 5
datensatzgroesse = 12083
For suchzeile = datensatzanfang To datensatzanfang + datensatzgroesse
If Var = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(Range(Cells(suchzeile, 3), Cells(suchzeile, 9)))), "#") Then
If f = 235 Then
If c = 0.5 Then
If k = 0.5 Then
'If z <> 6 Then l = z
If z = 1 Then l = 1
If z = 2 Then l = 2
If z = 3 Then l = 3
If z = 6 Then l = 4
End If
If k = 5 Then....usw...
If f = 275 then....hier hab ich das ganze mal abgekürzt, da das nix zur Sache tut
Sheets("Tot_L5").Cells((13 * (5 * l - (5 - j)) - 8), 14 - (9 - x)) = Sheets("Pf_IC-IF").Cells(suchzeile, 6)
Sheets("Tot_L5").Cells((13 * (5 * l - (5 - j)) - 9), 14 - (9 - x)) = suchzeile - 4
Exit For
End If
Next suchzeile
Next x
Next f
Next c
Next k
Next z
Next j
End Sub

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige