Condividi:        

[Excel] uso della macro con risolutore

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] uso della macro con risolutore

Postdi macio66 » 06/12/13 18:21

Ciao
Avrei bisogno del vostro aiuto per migliorare una macro creando se possibile un ciclo.
In un foglio excel ho inserito nei campi da C19 a N28 dei valori in mV, nei campi da Q35 a AB44 i fattori di errore per il calcolo con il risolutore, mentre nei campi da C35 a N44 ci sono i valori che dovranno essere calcolati dalla macro in °C.
La macro creata è cosi composta:
If Range("C19").Value = "-" Then
Range("C35") = "-"
Else
SolverOk SetCell:="Q35", MaxMinVal:=3, ValueOf:="0", ByChange:="$C$35"
SolverOptions MaxTime:=10000, Iterations:=10000, Precision:=0.00000000001, _
AssumeLinear:=False, StepThru:=False, Estimates:=1, Derivatives:=1, _
SearchOption:=1, IntTolerance:=0.000001, Scaling:=False, Convergence:=0.0001, _
AssumeNonNeg:=False
SolverOk SetCell:="Q35", MaxMinVal:=3, ValueOf:="0", ByChange:="$C$35"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If

If Range("C20").Value = "-" Then
Range("C36") = "-"
Else
SolverOk SetCell:="Q36", MaxMinVal:=3, ValueOf:="0", ByChange:="$C$36"
SolverOptions MaxTime:=10000, Iterations:=10000, Precision:=0.00000000001, _
AssumeLinear:=False, StepThru:=False, Estimates:=1, Derivatives:=1, _
SearchOption:=1, IntTolerance:=0.000001, Scaling:=False, Convergence:=0.0001, _
AssumeNonNeg:=False
SolverOk SetCell:="Q36", MaxMinVal:=3, ValueOf:="0", ByChange:="$C$36"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If

cosi fino all'ultima parte che è:

If Range("N28").Value = "-" Then
Range("N44") = "-"
Else
SolverOk SetCell:="AB44", MaxMinVal:=3, ValueOf:="0", ByChange:="$N$44"
SolverOptions MaxTime:=10000, Iterations:=10000, Precision:=0.00000000001, _
AssumeLinear:=False, StepThru:=False, Estimates:=1, Derivatives:=1, _
SearchOption:=1, IntTolerance:=0.000001, Scaling:=False, Convergence:=0.0001, _
AssumeNonNeg:=False
SolverOk SetCell:="AB44", MaxMinVal:=3, ValueOf:="0", ByChange:="$N$44"
SolverSolve UserFinish:=True
SolverFinish KeepFinal:=1
End If

Praticamente una interminabile secuenza di if.
Volevo sapere da voi se è possibile creare un ciclo per ripetere il comando in tutte le celle da C35 a N44 perchè io non ci sono riuscito.
Grazie
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59

Sponsor
 

Re: [Excel] uso della macro con risolutore

Postdi Anthony47 » 07/12/13 01:33

Se ho capito bene il tuo "cosi fino all'ultima parte" potrebbe funzionare questo ciclo:
Codice: Seleziona tutto
For I = 0 To 11
    For J = 0 To 9
        If Range("C20").Offset(J, I).Value = "-" Then
            Range("C36").Offset(J, I) = "-"
        Else
            SolverOk SetCell:=Range("Q36").Offset(J, I).Address, MaxMinVal:=3, ValueOf:="0", ByChange:=Range("$C$36").Offset(J, I).Address
            SolverOptions MaxTime:=10000, Iterations:=10000, Precision:=0.00000000001, _
            AssumeLinear:=False, StepThru:=False, Estimates:=1, Derivatives:=1, _
            SearchOption:=1, IntTolerance:=0.000001, Scaling:=False, Convergence:=0.0001, _
            AssumeNonNeg:=False
            SolverOk SetCell:=Range("Q36").Offset(J, I).Address, MaxMinVal:=3, ValueOf:="0", ByChange:=Range("$C$36").Offset(J, I).Address
            SolverSolve UserFinish:=True
            SolverFinish KeepFinal:=1
        End If
    Next J
Next I

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [Excel] uso della macro con risolutore

Postdi macio66 » 07/12/13 13:08

Perfetto funziona in modo corretto, ti ringrazio.
Ciao
macio66
Utente Senior
 
Post: 147
Iscritto il: 13/06/13 14:59


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] uso della macro con risolutore":


Chi c’è in linea

Visitano il forum: raimea e 92 ospiti