Excel - No logro hacer una segunda iteracion a partir de los valores de una primer iteracion

 
Vista:
sin imagen de perfil

No logro hacer una segunda iteracion a partir de los valores de una primer iteracion

Publicado por Andres (1 intervención) el 05/10/2015 08:45:03
Tengo el siguiente código que itera valores de x = 0.01 hasta 10 con paso de 0.01 para satisfacer que la ecuación de Mononobe donde debe ser mayor de 0° y menor o igual de 32° tal que 0° < Mononobe >= 32° , una vez satisfecha la condición imprime los valores para "x" y también el resultado que da con esa incógnita.

Bueno el problema es que dentro de este rango de valores puedo tener mas de 30 posibles valores para "x" (Depende de los datos de entrada - varia segun el caso - ) que satisfacen la ecuación y su limitante y después tengo que cumplir una segunda iteracion con esos 30 posibles valores e ir probando de nuevo uno por uno hasta satisfacer la segunda ecuación y su limitante.

He Intentado resolver esto asignando un rango a esos posibles 30 valores e ir probando mediante una estructura For Each .Pero el programa no logra hacer que pruebe todos y cada uno de los valores que resultan de la primer iteracion

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Private Sub CommandButton1_Click()
 
Const Pi = 3.14159265358979
 
Dim cociente As Double
Dim A As Range
 
On Error Resume Next ' Para evitar división entre cero
 
[A24] = 0
Kh = [B4]
 
Kv = 0.75 * [B4]
 
Phi = [B6]
Beta = [B7]
Teta = Phi + Beta
 
ResistWedge = Tan(Teta * (Pi / 180))
 
 For x = 0.01 To 10 Step 0.01
 
CoefHor = Kh / x ' Coeficiente Horizontal
 
CoefVert = 1 - (Kv / x) ' Coeficiente Vertical
 
cociente = CoefHor / CoefVert
 
Mononobe = ((1 / (Tan(cociente))) - Beta) * (180 / Pi) ' Ecuacion de Mononobe
 
 If 0 < Mononobe And Mononobe <= Phi Then
 
[A24] = [A24] + 1 ' Imprime el Num de Iteraciones que satisfacen la ecuación 
 
Range("A" & [A24] + 25) = x ' Imprime todos los valores que satisfacen la ecuacion para la condicion
Range("B" & [A24] + 25) = Mononobe ' Imprime todos los resultados de la ecuacion de mononobe que cumplen
 
[A25] = "x ="
[B25] = "Mononobe"
 
Limiting = (1 - (1 - (Kv / x))) * Tan(Teta * (Pi / 180))
 
[G8] = CoefHor
[I8] = Limiting
 
If [G8] <= Limiting Then
 
    [H8] = "<="
    [J8] = "Sí Cumple"
 
ElseIf [G8] > Limiting Then
 
Set A = Range("A" & [A24] + 24) ' -----> CREO QUE AQUI NO RECONOCE EL RANGO
 
    For Each numero In A      ' Para cada numero en el Rango de x = numero que cumple la condicion
 
CoefHor = Kh / numero
 
CoefVert = 1 - (Kv / numero)
 
cociente = CoefHor / CoefVert
 
Mononobe = ((1 / (Tan(cociente))) - Beta) * (180 / Pi)
 
Cumple = (1 - (1 - (Kv / numero))) * Tan(Teta * (Pi / 180))
 
    If [G8] <= Cumple Then
 
        [I8] = Cumple
 
        Exit For 'Se supone que si cumple para el bucle y sale peroo ..¿Como podria imprimir todos los valores que vuelven a cumplir si fuesen mas de 1
 
      End If
 
    Next
 
[F2] = x
'[F6] = CoefHor
'[F9] = CoefVert
'[F12] = cociente
'[F15] = 1 / Tan(cociente) * (180 / Pi)
'[F18] = Mononobe
[I7] = ResistWedge
[H7] = 1 - CoefVert
 
 
End If
 
End If
 
Next x
 
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder