Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[vba] calcoli vba

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

[vba] calcoli vba

Postdi ramset64 » 15/06/09 16:59

Vorrei porre un quesito, è possibile utilizzare esclusivamente vba per effettuare una serie di calcoli? Voglio dire, partendo da una serie di dati su un foglio, dovrei simulare con vba alcune colonne (in pratica ricostruire un piccolo foglio excel) che faccia i calcoli senza l'ausilio del foglio per fare i calcoli (questo perchè devo fare molti calcoli che impiegerebbero ore con l'utilizzo dei fogli). E' possibile?
Grazie saluti a tutti
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [vba] calcoli vba

Postdi ramset64 » 15/06/09 17:07

Dimenticavo... se è possibile sarebbe gradito un piccolo esempio, basterebbero solo un paio di colonne di esempio. Grazie :)
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] calcoli vba

Postdi ricky53 » 15/06/09 17:17

Caio,
dal mio punto di vista dovresti essere tu a fare degli esempi per far capire a noi del forum che calcoli devi fare.

Curiosità mia: ma che calcoli devi fare se, per eseguirli, excel impiega (a tuo dire) ore???
Ma quanti sono questi calcoli???

Fino ad oggi non ho mai avuto tempi più lunghi di 2-3 minuti (ATTENZONE sono tempi enormi: prova a stare 2 minuti trattenendo il respiro) per elaborare 60.000 con 150 colonne e molte (tante o meglio troppe) funzioni tra cui cerca.vert (che già da sola non è leggera).

Ciao da Ricky53
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: [vba] calcoli vba

Postdi ramset64 » 15/06/09 18:06

ricky53 ha scritto:Caio,
dal mio punto di vista dovresti essere tu a fare degli esempi per far capire a noi del forum che calcoli devi fare.


Ciao Ricky53 ho provato a mettere un esempio ma ho avuto problemi con l'allegato, adesso ci riprovo, ad ogni buon conto mi basta un esempio con 2 colonne qualsiasi (che effettuano calcoli).
ricky53 ha scritto:Curiosità mia: ma che calcoli devi fare se, per eseguirli, excel impiega (a tuo dire) ore???
Ma quanti sono questi calcoli???

Quel "(a tuo dire)" è davvero brutto... in ogni caso sono stato ottimista, servono centinaia di ore in realtà!
ricky53 ha scritto:Fino ad oggi non ho mai avuto tempi più lunghi di 2-3 minuti (ATTENZONE sono tempi enormi: prova a stare 2 minuti trattenendo il respiro) per elaborare 60.000 con 150 colonne e molte (tante o meglio troppe) funzioni tra cui cerca.vert (che già da sola non è leggera).

Bè tu stai parlando di un foglio che contiene sempre gli stessi dati... prova a pensare ad un file che ti da un attesa di soli 10 secondi, poi fai girare su quel file dati diversi ed aspetti altri 10 secondi, poi ricambia i dati etc.... sono centinaia di ore, provato sulla mia pelle.
Il codice che ho in testa ( a livello logico ) mi farebbe risparmiare un mare di tempo, ma devo capire come far incolonnare dei calcoli a vba.
Grazie, saluti
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] calcoli vba

Postdi ricky53 » 15/06/09 18:33

Ciao,
il
("a tuo dire")

che ho scritto era perché lo avevi scritto tuo e non per altro motivo.

Comunque intendiamoci (sempre in senso buono):
tu fai non calcoli ma varie operazioni su una struttura dati (di base con varie formule) modificando i dati stessi e rielaborando.
questo è un'altra cosa (così ho capito anche se si potrebbe dire "tu hai" scritto ma senza offesa solo come modi di dire sia ben chiaro.)
Le operazioni di modifica dei dati come avvengono ???
quanti dati modifichi ???
Con un import o .... ???

Per poter pensare ad una soluzione occorre capire bene cosa devi fare.
Come spesso scrivo: semplificando per fare un esempio si rischia (che scrivi per trovare una soluzione) di non far capire a chi legge (che vuole aiutare a trovare la soluzione) l'effettiva necessità.

Spiegato mi sono ???

Per allegare un file lo devi fare compresso "Zip", poi devi rinominare l'estensione in "TXT" e selezionare "Invia allegato".

A ritrovarci, forza che ne usciamo ma passo passo.

Ciao da Ricky53
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: [vba] calcoli vba

Postdi ramset64 » 15/06/09 19:22

Ricky nessn problema.... comunque io ho ben chiaro cosa devo fare per il momento, poi magari tra qualche giorno avrò bisogno di qualche consiglio, ma per il momento vorrei solo capire come fare dei calcoli incolonnati su vba (senza excel).

Niente da fare non mi permette di allegare file in nessun modo nemmeno rinominandolo.

Comuque supponiamo in un foglio 2 colonne con dei numeri..... poi 2 colonne qualsiasi che facciano calcoli (qualsiasi) ed infine un risultato finale (ES. la somma delle 2 colonne che fanno i calcoli) nella quinta colonna.

Io vorrei lo stesso risultato avendo però sul foglio solo le prime 2 colonne dati, e, dopo l'esecuzione del codice la quinta colonna con il risultato (senza però fare alcun calcolo sul foglio).

Spero di essermi spiegato, purtroppo non riesco ad allegare.

Grazie
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] calcoli vba

Postdi ricky53 » 16/06/09 00:08

Ciao,
utilizza un servizo di file hosting free:

http://www.myfreefilehosting.com/
oppure
http://www.filedropper.com/

Comunqe per iniziare:
con un ciclo for/next che scorre le due tue colonne, fa dei calcoli (moltiplicazione di celle) ed il risultato lo scrive in un' terza colonna può essere un modo di iniziare.
Devi solo determinare l'utlima riga piena di una colonna:

Esempio:
UR = Range("A" & Rows.Count).End(xlUp).Row
for I=1 to UR
cells(I, 3 )= cells( I , 1) * cells(I , 2)
next I

Tanto per gradire.

Avendo il file si far fare i tuoi veri calcoli ad una macro un bel po' più pesante.

Ciao da Ricky53
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: [vba] calcoli vba

Postdi Flash30005 » 16/06/09 00:18

Ciao Ramset,

prova questa macro
calcola il numero di righe esistenti (UR) e
fa la moltiplicazione del valore contenuto in C per (*) il valore della cella in D e inserisce il prodotto nella cella E
(Ci sono due comandi Application.etc che "fermandoli" prima dell'avvio del For next rendono più veloce la macro)

Codice: Seleziona tutto
Sub Calcolo()
Application.ScreenUpdating = False  '<<< non aggiorna le schermate serve per non avere fastidio di eventuali variazione schermo e per velocizzare la macro (non occorre per l'esempio riportato)
Application.Calculation = xlManual  '<<< disabilita il calcolo automatico (velocizza la macro)
UR = Worksheets("foglio1").Range("A" & Rows.Count).End(xlUp).Row   '<<< conta le righe nella colonna A
For I = 1 To UR
Worksheets("foglio1").Range("E" & I).Value = Worksheets("foglio1").Range("C" & I).Value * Worksheets("foglio1").Range("D" & I).Value
Next
Application.ScreenUpdating = True   '<<< ripristina l'aggiornamento schermate
Application.Calculation = xlCalculationAutomatic    '<<< ripristina il calcolo automatico
End Sub

Fai sapere
Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] calcoli vba

Postdi ricky53 » 16/06/09 00:22

Ciao Flash,
sempre più scriviamo la stessa proposta.
Tu, inoltre, l'hai scritta con due istruzioni necessarie per velocizzare il calcolo.

In un'altra vita siamo stati gemelli omozigoti ???

Ciao da Ricky53
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: [vba] calcoli vba

Postdi Flash30005 » 16/06/09 00:31

ricky53 ha scritto:Ciao Flash,
sempre più scriviamo la stessa proposta.
Tu, inoltre, l'hai scritta con due istruzioni necessarie per velocizzare il calcolo.

In un'altra vita siamo stati gemelli omozigoti ???

Ciao da Ricky53


Ciao Richy
Ho il maledetto vizio di leggere il post-domanda e faccio la macro (semplice) poi apro il post in risposta e la incollo, infine aggiungo, miglioramenti e i commenti, quando invio sono passati diversi minuti e mi capita di trovarmi risposte già fatte nel frattempo :cry:
Una volta usciva un messaggio che c'era stata una risposta ma da un po' di tempo non questo messaggio non c'è più :roll:

comunque Melius abundare quam deficere

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] calcoli vba

Postdi ricky53 » 16/06/09 00:36

Ciao,

faccio anch'io come te e mi capita la stessa cosa.

Risposte sempre simili: si pensa nello stesso modo.

A presto.
Ciao da Ricky53
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: [vba] calcoli vba

Postdi Anthony47 » 16/06/09 01:59

Ramset ha purtroppo ragione sul problema degli allegati: oggi non si riesce ad allegare niente, ma temo che non sia un problema che "domani" scomparira'. In alternativa si puo' usare un servizio pubblico di filesharing per inviare allegati, ad esempio quello suggerito da Ricky o http://www.rapidshare.de/

Venendo al quesito, aggiungo la mia.
Premesso che quando devo fare un lavoro pesante cerco di fare molto sul foglio di lavoro, usando possibilmente funzioni non volatili (evitando cioe' quelle che si ricalcolano "sempre", non solo quando cambiano i diretti "precedenti"); per questo mi faccio un "modello vuoto", a cui poi sottopongo i dati e da cui prelevo il risultato.
Ad esempio in questo post viewtopic.php?f=26&t=75398 al foglio excel sottopongo i possibili 4005 ambo e il foglio mi restituisce, dato un elenco storico di estrazioni, la storia della singola coppia (ritardo attuale e ritardi su tutte le estrazioni in archivio).
In verita' quale lavoro non fu poi adottato dal "committente", ma torno' poi utile a qualcun altro, vedi viewtopic.php?f=26&t=80296.

Comunque e' possibile che in certe situazioni ricorrere al vba possa risultare conveniente, e questo lo puo' valutare solo ramset.
Ora, non mi e' chiaro quale difficolta' in particolare incontra ramset, quindi dico delle cose a caso, sperando che ci sia qualche spunto utile...
-se devi leggere dei dati in una cella per portarla in una variabile vba o usarla direttamente in un calcolo, userai le possibili notazioni quali Range("A1").value, Cells(I,J), Range("A1").offset(I,J).value, e altre complicazioni / variazioni simili, nella forma (es Var1=Range("A1").Value).
-se devi fare le operazioni in vba tra variabili, la sintassi dipende dall' istruzione che usi; es Var2=Var1 MOD 10, Var2=INT(Var2)
-se devi caricare il contenuto di una variabile in una cella userai le forme di step 1 ma a ordine invertito, es Range("A1").Value=Var2
-Se devi simulare in vba un array di celle, puoi definire una matrice di dati bidimensionale che poi accedi quasi come usando Cells; es
Dim MatrUno(20,20) as String
Var2=MatrUno(I,J)
-per i loop puoi usare i cicli For /Next (For I=1 to LastR /Next I), For Each elemento-singolo In Insieme-di-elementi /Next elemento singolo [es For Each Cella In Range("A1:A100")], Do While, Do Until

Spero che qualche spunto utile ci sia...
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: 13891
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] calcoli vba

Postdi ramset64 » 16/06/09 15:28

Ragazzi intanto un grazie a tutti, per i suggerimenti.... cerco di spiegare meglio ciò che devo fare e qual è il mio problema.

Ho una serie lunghissima di dati da analizzare, questi dati li ho trasferiti un un unico file, su questo file ho un foglio di calcolo (l'unico) su cui devo processare (ovvero far girare) tutti i dati e copiare qualche dato che il foglio di calcolo mi restituisce.
E' evidente che dovendo ogni volta copiare-incollare i dati sul foglio di calcolo, aspettare il calcolo, ricopiare i dati che mi servono è un lavoro lunghinssimo quindi la mia intenzione è sostituire nel file il foglio di calcolo con un codice vba che ne faccia il lavoro, il quale non avendo necessità di fare calcoli sul foglio dovrebbe diventare molto più veloce.
Allego un file di esempio per rendere meglio l'idea....

Il file contiene 7 colonne, le prime 3 sono di dati, le altre contengono calcoli (calcoli semplici solo per spiegare, fingendo che sia il mio foglio di calcolo).
Quello che la macro dovrebbe fare è sostituirsi alle colonne D-E-F-G e restituirmi il risultato che ora ho sulla colonna G senza effettuare nessun calcolo con excel.

Ciò che devo fare è molto più complesso ma se qualcuno avesse voglia di scrivere questo codice, potrei capire come fare.

Un sincero ringraziamento a tutti.
Saluti

http://rapidshare.de/files/47555552/Esempio.rar.html
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] calcoli vba

Postdi Flash30005 » 16/06/09 17:44

Vedi se ti va bene questo file (è il tuo con macro)
http://rapidshare.com/files/245239572/EsempioM.rar.html

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] calcoli vba

Postdi ramset64 » 16/06/09 17:53

fhash ti ringrazio per il codice ma non è quello che mi serve.... il tuo codice necessità che le formule presenti nelle colonne d-e-f siano presenti.
A me serve un codice che mi permetta di eliminare qualsiasi formula presente nel foglio.
Grazie, saluti
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] calcoli vba

Postdi Flash30005 » 16/06/09 19:20

Ok, avevo interpretato male
vedi se così va bene
http://rapidshare.com/files/245271411/E ... 2.rar.html

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] calcoli vba

Postdi ramset64 » 16/06/09 19:49

Si questo mi rende l'idea di come posso fare!!! :)
Grazie Flash !!!
Ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] calcoli vba

Postdi Flash30005 » 16/06/09 20:32

Ok,
ma... per evitare di far prendere l'abitudine di passarsi file e lavori completi senza discussione e ragionamento sul tipo di soluzione scelta o anche per sola informazione, penso sia utile pubblicare la macro per "rendere l'idea" anche ad altri utenti, altrimenti lo scopo del forum viene meno
Codice: Seleziona tutto
Sub Calcolo()
Application.ScreenUpdating = False
Application.Calculation = xlManual
UR = Worksheets("foglio1").Range("A" & Rows.Count).End(xlUp).Row
Totale = 0
For I = 2 To UR
Yeld1 = (Worksheets("foglio1").Cells(I, 2).Value / Worksheets("foglio1").Cells(I, 1).Value - 1) * 100
Yeld2 = (Worksheets("foglio1").Cells(I, 3).Value / Worksheets("foglio1").Cells(I, 2).Value - 1) * 100
risp = 0
If Yeld1 > Yeld2 Then risp = 1
Totale = Totale + risp
Worksheets("foglio1").Range("G" & I).Value = Totale
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] calcoli vba

Postdi ricky53 » 16/06/09 23:28

Ciao,

tu avevi queste tre esigenze
...E' evidente che dovendo ogni volta
copiare-incollare i dati sul foglio di calcolo,
aspettare il calcolo,
ricopiare i dati che mi servono
è un lavoro lunghinssimo ...


una della tre attività (la seconda) si riesce, con quanto suggerito da Flash ed opportunamente adattato da te, ad eseguire automaticamente.
Dovresti cercare di automatizzare anche le altre due attività così guadagneresti tantissimo tempo e saresti sicuro di non commettere errori con le attività manuali.

Ciao da Rciky53
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: [vba] calcoli vba

Postdi ramset64 » 17/06/09 17:54

Ciao Ricky grazie del suggerimento ma quelle due attività le considero già fatte, ovvero sono capace di automatizzarle, mentre per la seconda attività avevo le idee un pò confuse ma l'esempio di flash dovrebbe avermele chiarite. Spero di non tornare a chiedervi suggerimenti.
Grazie a tutti
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino


Torna a Applicazioni Office Windows


Topic correlati a "[vba] calcoli vba":


Chi c’è in linea

Visitano il forum: Nessuno e 11 ospiti