Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

calcolo tra fogli diversi

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

calcolo tra fogli diversi

Postdi miko » 20/02/13 20:56

buona sera, un cordiale saluto a tutti gli utenti del forum;
dopo mesi di assenza ritorno a disturbarvi;
il mio excel è ormai ossidato dopo tanto tempo di inattività.
sto creando un piccolo progettino ma ho difficoltà nel creare una macro più concisa.
cerco di aiutarmi con delle immagini per spiegarvi il problema.
in un form ho inserito un pulsante per attivare la macro ed un textbox, il cui valore indica il numero di riga scelto.
i dati sono inseriti nel foglio 2 a partire dalla riga 3, le prime due servono per l'intestazione, e dalla colonna G alla N con la sola colonna M vuota, come in fig.
Immagine
inserendo un valore nel textbox, che deve ovviamente essere maggiore od uguale a 3, seleziono la riga del foglio 2;
eseguo dei semplici calcoli attivando la macro qui di seguito:
Codice: Seleziona tutto
Sub CALCOLA()
Dim wk As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet

Set wk = ThisWorkbook
With wk
Set sh1 = .Worksheets("Foglio1")
Set sh2 = .Worksheets("Foglio2")
End With
sh1.Select
With sh1
.Range("J3").Value = sh2.Range("H3").Value - sh2.Range("G3").Value
.Range("J5").Value = sh2.Range("I3").Value - sh2.Range("H3").Value
.Range("J7").Value = sh2.Range("J3").Value - sh2.Range("I3").Value
.Range("J9").Value = sh2.Range("K3").Value - sh2.Range("J3").Value
.Range("J11").Value = sh2.Range("L3").Value - sh2.Range("K3").Value

.Range("J13").Value = sh2.Range("N3").Value + sh2.Range("G3").Value
.Range("J15").Value = sh2.Range("N3").Value + sh2.Range("H3").Value
.Range("J17").Value = sh2.Range("N3").Value + sh2.Range("I3").Value
.Range("J19").Value = sh2.Range("N3").Value + sh2.Range("J3").Value
.Range("J21").Value = sh2.Range("N3").Value + sh2.Range("K3").Value
.Range("J23").Value = sh2.Range("N3").Value + sh2.Range("L3").Value
End With
End Sub

come si può notare sono somme e differenze tra valori disposti sulla stessa riga;
per un diverso calcolo cambia solo la riga ma le colonne rimangono sempre le stesse, nel senso che se considero la riga 4 cambia solo il secondo indice della cella, 4 invece di 3.
vorrei modificare la macro in modo che inserendo il numero nella textbox venga riconosciuto il numero di riga del foglio 2,
e, conseguentemente, eseguito il calcolo il risultato venga riportato sempre nelle stesse celle del foglio 1 nella colonna J a partire dalla J3 fino alla J23 in modo alternato.
le righe del foglio 2 vengono aggiornate settimanalmente quindi non conosco l'ultima riga.
e' inutile sottolineare che i cicli che ho provato sono un completo disastro.
grazie anticipatamente dei vostri contributi e suggerimenti.
saluti miko
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Sponsor
 

Re: calcolo tra fogli diversi

Postdi Anthony47 » 20/02/13 22:59

Bentornto...
Per me dovresti rendere parametrica l' attuale macro; cioe':
Codice: Seleziona tutto
Sub CALCOLA(byVal myRow as long)    '****
Dim wk As Workbook
Dim sh1 As Worksheet
Dim sh2 As Worksheet
'
if myRow <3 then myRow=3      '****
Set wk = ThisWorkbook
With wk
Set sh1 = .Worksheets("Foglio1")
Set sh2 = .Worksheets("Foglio2")
End With
sh1.Select
With sh1
.Range("J3").Value = sh2.Range("H3").offset(myRow-3,0).Value - sh2.Range("G3").offset(myRow-3,0).Value   '****
.Range("J5").Value = sh2.Range("I3").offset(myRow-3,0).Value - sh2.Range("H3").offset(myRow-3,0).Value   '****
'etc etc

Le righe variate, o aggiunte sono marcate ***

Poi chiamerai questa nuova macro "passandogli" il valore del textbox, come numero.
Quindi qualcosa come

Codice: Seleziona tutto
Call CALCOLA(Val(Textbox1.text))

Prova e fai sapere.

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolo tra fogli diversi

Postdi miko » 22/02/13 19:40

buona sera,
ho testato la macro ed ovviamente funziona;
grazie.
non conoscevo la possibilità di inserire un parametro nel titolo della sub;
se si volessero eliminare tutte le righe identiche del tipo:
Codice: Seleziona tutto
...........
.........
With sh1
.Range("J3").Value = sh2.Range("H3").offset(myRow-3,0).Value - sh2.Range("G3").offset(myRow-3,0).Value  '<<<<<
........
.......

   

come si potrebbe procedere?
proverò a creare un ciclo for.
grazie, saluti
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: calcolo tra fogli diversi

Postdi Anthony47 » 23/02/13 02:18

Se ti vuoi complicare la vita potresti provare a sostituire le istruzioni "identiche" con queste:
Codice: Seleziona tutto
With sh1
For JJ=0 to 4
      .Range("J3").Offset(2*JJ,0).Value = sh2.Range("H3").offset(myRow-3,0+JJ).Value - sh2.Range("G3").offset(myRow-3,0+JJ).Value   '****
Next JJ
For JJ=0 to 5
.Range("J13").offset(2*JJ,0).Value = sh2.Range("N3") .offset(myRow-3,0+JJ).Value + sh2.Range("G3") .offset(myRow-3,0+JJ).Value
Next JJ
End With

Collaudo tutto da fare.

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolo tra fogli diversi

Postdi miko » 24/02/13 11:31

buongiorno,
ho provato la variante del codice;
anche se ci siamo "complicati la vita" ne valeva, la macro funziona.
devo solo precisare che per come è stato strutturato il mio foglio di lavoro,
è necessario modificare la seconda linea di codice:
....
For JJ=0 to 5
.Range("J13").offset(2*JJ,0).Value = sh2.Range("N3") .offset(myRow-3, 0 + JJ).Value + sh2.Range("G3") .offset(myRow-3,0+JJ).Value
Next JJ
...........
si deve eliminare la parte evidenziata in rosso.
per il resto tutto ok.
grazie e buona domenica
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44

Re: calcolo tra fogli diversi

Postdi Anthony47 » 24/02/13 11:53

Correttissimo quello che hai fatto; infatti il primo termine della somma deve rimanere ancorato alla colonna N.

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: 13904
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: calcolo tra fogli diversi

Postdi miko » 24/02/13 20:51

buonasera,
grazie per la ulteriore precisazione.
ciao
windows xp-office 2003
miko
Utente Senior
 
Post: 422
Iscritto il: 29/12/09 10:44


Torna a Applicazioni Office Windows


Topic correlati a "calcolo tra fogli diversi":


Chi c’è in linea

Visitano il forum: Nessuno e 10 ospiti