Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Excel Vba trasformare stringa in operatore matematico

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 Vba trasformare stringa in operatore matematico

Postdi Francesco53 » 04/02/14 16:07

Buongiorno a tutto il Forum,
ho la seguente difficoltà con il Vba, in una cella ho un valore, in un'altra un altro valore,
in una cella digito l'operatore + per la somma oppure - per sottrarre, oppure * o /.
Nel codice che allego non riesco a far fare le operazioni matematiche in base all'operatore
digitato, ho provato diverse volte ma non riesco.

Codice: Seleziona tutto
Sub Calcola()
Dim E1 As Byte
Dim E2 As Byte
Dim operatore As String
Dim risultato As Byte
E1 = Cells(4, 12) '1° valore
operatore = Cells(4, 19)  'Operatore matematico
E2 = Cells(6, 12) '2° valore
'risultato = Cells(4, 12) & operatore & Cells(6, 12) 'Formula Calcolo
risultato = Cells(4, 12) & "operatore" & Cells(6, 12) 'Formula Calcolo
Cells(8, 23) = risultato
End Sub


Ringrazio chi può aiutarmi a superare la difficoltà.
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Sponsor
 

Re: Excel Vba trasformare stringa in operatore matematico

Postdi ricky53 » 04/02/14 16:47

Ciao,
prova in questo modo:
Codice: Seleziona tutto
Sub Calcola()
    Cells(8, 23).Formula = "=" & (Cells(4, 12) & Cells(4, 19) & Cells(6, 12))
End Sub



Non occorrono le variabili basta operare con le celle
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel Vba trasformare stringa in operatore matematico

Postdi Francesco53 » 04/02/14 17:01

Ciao Ricky,
ti ringrazio per il tuo intervento, su una cella funziona benissimo, solo che io volevo
memorizzare direttamente nella variabile risultato il valore ottenuto, in quanto poi deve
essere utilizzato per altri calcoli, perchè fà parte di un ciclo for...next di ricerca e quindi
in base all'operatore che inserisco ogni volta mi deve fare il calcolo e poi effettuare tutta
una serie di calcoli, pertanto ad ogni ciclo, dovrebbe ricalcolare il risultato ed utilizzarlo
per il ciclo successivo. Vorrei se è possibile evitare di appoggiarmi a una cella.
grazie
francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: Excel Vba trasformare stringa in operatore matematico

Postdi ricky53 » 04/02/14 17:15

Ciao,
invia il codice che utilizzi e vediamo come procedere.

In attesa prova con
Codice: Seleziona tutto
Risultato = Application.Evaluate("=" & (Cells(4, 12) & Cells(4, 19) & Cells(6, 12)))
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel Vba trasformare stringa in operatore matematico

Postdi Francesco53 » 04/02/14 18:21

Ciao Ricky purtroppo mi scrive la stringa unita dei due numeri ma non il risultato.
Posto la sintesi del codice della macro:

Codice: Seleziona tutto
Sub Calcola()
Dim E1 As Byte
Dim E2 As Byte
Dim risultato As Byte
Dim operatore As String
Dim n As Integer
Dim m As Byte
Sheets("Foglio1").Select
E1 = Cells(4, 12)
operatore = Cells(4, 19)  'Operatore matematico + - * /
E2 = Cells(6, 12)
Sheets("Foglio2").Select
For n = 1 To 300 step 6
    risultato = Cells(n, E1) & operatore & Cells(n, E2) 'Formula Calcolo
    For m = 1 To 6
        If Cells(n + m, E1) = risultato Then casi = casi + 1
        If Cells(n + m, E2) = risultato Then casi = casi + 1
    Next m
Next n
Sheets("Foglio1").Select
Cells(8, 23) = risultato
End Sub


Il risultato elaborato viene poi ricercato nelle righe successive, io ho bisogno
di fare l'operazione matematica e poi andare a ricercare se è presente nel ciclo
successivo di dati il risultato.
grazie
francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: Excel Vba trasformare stringa in operatore matematico

Postdi ricky53 » 04/02/14 18:43

Ciao,
ma a cosa servono le due variabili E1 e E2 che oltre tutto le hai definite Byte?
Inoltre le hai messe come colonne, di due celle, nella formula di calcolo del risultato !!1

Non mi torna quello che hai scritto.

Dovevi inviare il codice nel quale avevi applicato la mia proposta!
Come lo hai utilizzato nel tuo codice?



Sarebbe meglio se tu descrivessi cosa vuoi ottenere con il codice piuttosto che farci ...
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Excel Vba trasformare stringa in operatore matematico

Postdi Francesco53 » 04/02/14 20:13

Ciao Ricky, ho digitato direttamente il codice qui sul post, ho scritto E1 e E2 per errore,
possiamo pure scrivere dato1 e dato2
poi correggere questa parte:
Codice: Seleziona tutto
Sheets("Foglio1").Select
Cells(8, 23) = risultato

da correggere in
Codice: Seleziona tutto
Cells(8, 23) = casi

dato1 e dato2 sono le colonne scelte su cui andare prima a fare l'operazione matematica
e sono come valore dato1 = Cells(4, 12) e dato2 = Cells(6, 12)
l'operatore lo digito in operatore = Cells(4, 19) 'Operatore matematico + - * /
Codice: Seleziona tutto
risultato = Cells(n, dato1) & operatore & Cells(n, dato2) 'Formula Calcolo


se Cells(n, dato1) è = 2 e cells(n, dato2) è = 3 il risulatato è = 5 per l'operatore +
poi andare alle 6 righe successive e cercare se il valore è uguale al risultato

If Cells(1 + 1, dato1) = risultato Then casi = casi + 1
sino a m = 6
poi per n = 7
troverà altri due valori in Cells(n, dato1) e in cells(n, dato2) per cui cambierà il risultato
ed è qui che ho la difficoltà di realizzare il calcolo
che andrà poi a verificare nelle successive 6 righe sempre nelle colonne dato1 e dato2.
Spero di essere riuscito a far capire la mia necessità.
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: Excel Vba trasformare stringa in operatore matematico

Postdi Anthony47 » 04/02/14 23:07

Non ho seguito la discussione, e faccio fatica a inserirmi; comunque non devi usare
risultato = Cells(n, dato1) & operatore & Cells(n, dato2) 'Formula Calcolo
ma la versione "Evaluate" che aveva suggerito Ricky:
Codice: Seleziona tutto
risultato = Application.Evaluate("=" & (Cells(4, 12) & Cells(4, 19) & Cells(6, 12)))

Nella variabile "risultato" sara' inserito il risultato della formula valutata.

Ho lasciato i vecchi riferimenti a riga (4 e 6) e colonne (L ed S) perche' non ho capito come sono variati.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Excel Vba trasformare stringa in operatore matematico

Postdi Francesco53 » 04/02/14 23:11

Ringrazio Richy per la sua seconda soluzione, poi confermata anche da Anthony,
purtroppo per colpa mia in un primo momento non ha funzionato, poi rivedendo
attentamente ho trovato l'errore che commettevo, adesso è tutto perfetto.
Grazie
Francesco
S.O. Vista e Office 2007
Francesco53
Utente Senior
 
Post: 647
Iscritto il: 20/02/10 18:45

Re: Excel Vba trasformare stringa in operatore matematico

Postdi ricky53 » 05/02/14 00:59

Ciao,
in tutta amicizia: mi ha fatto sudare ed è stata dura uscirne ... grazie ad Anthony.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia


Torna a Applicazioni Office Windows


Topic correlati a "Excel Vba trasformare stringa in operatore matematico":


Chi c’è in linea

Visitano il forum: patel e 8 ospiti