Vai al contenuto

problema Excel


desko

Messaggi raccomandati

ho una lunga lista di numeri nella prima colonna.

Nella seconda ho le somme di quei numeri presi 10 alla volta, ad esempio in B1 c'è la formula =SOMMA(A1:A10), in B2 c'è =SOMMA(A11:A20) e così via.

Essendo un lavoro lungo e noioso mi piacerebbe poter evitare di scrivere a mano tutte le formule, perché se copio ed incollo mi incrementa gli intervalli soltanto di 1 e non di 10.

Ci vorrebbe qualcosa come la possibilità di esprimere un riferimento con dentro una formula, in modo da inserirci un +10. ho provato coi riferimenti in stile R[1]C[1], ma non permette di fare nulla di diverso, ho cercato di copiare la formula della colonna B ogni 10 celle, lasciando 9 spazi vuoti fra una e l'altra e funziona, ma poi mi piacerebbe poterli leggere tutti vicini senza complicarmi la vita coi filtri.

Forse le macro fanno qualcosa del genere, ma non le ho mai usate in vita mia (potrei iniziare ora, se capisco come).

Appena esce Numbers (spero domani) mi auguro che conceda una possibilità del genere, ma intanto?

Grazie mille.

Link al commento
Condividi su altri siti

con le macro puoi veramente fare quello che vuoi....

per cominciare a capire qualcosa ti consiglio di partire col registrare una macro ( cioè menù strumenti...macro...registra nuova macro...) e fai un pò di operazioni sul foglio (per esempio puoi fare quella formula che ti serve per due gruppi di 10 celle) poi stoppi la macro ...

da strumenti....macro...vai sulla nuova macro che ti avrà creato e con modifica ... ti aprirà l'editor visual basic e vedi il codice che riproduce ciò che hai appena registrato....

poi con un semplice ciclo for... next e qualche piccolo accorgimento

il gioco è fatto ....

se hai bisogno sono quì

ciao

iMac G5-iPod Mini + iPod-Hifi + iPod Classic + iPad 64GB +iMac 27" i5 +apple tv2+ iPod Touch + iPod Shuffle + iPhone 5 + miniiPad + MacBook Pro + iPhone 6 +iPhone 6s+ iMac 27" 5K i7

If it Works, it's Obsolete Marshall Mcluhan

Link al commento
Condividi su altri siti

Premessa: io non so cosa sia Visual Basic, al massimo posso dire che è un linguaggio di programmazione o qualcosa di simile.

Ho creato la macro e mi sono ritrovato con questo codice:

Sub Macro1()

'

' Macro1 Macro

' Macro registrata il 11-10-2005 da desko

'

'

   Range(\"B1\").Select

   ActiveCell.FormulaR1C1 = \"=SUM(RC[-1]:R[9]C[-1])\"

   Range(\"B1\").Select

End Sub

[/b]

in cui si riconosce facilmente quello che fa (somma i numeri della prima colonna a sinistra dalla riga stessa fino alla nona dopo la cella).

Ma qui torna il mio problema: posso anche fare un bel ciclo for (sintassi come in C++? come in Matlab? devo inizializzare il contatore prima?), ma poi dovrò sostituire Range("B1").Select con qualcosa tipo Range("Bi+10").Select, o qualcosa di equivalente.

Non credo si possa fare e se si può, qual è la sisntassi corretta?

for (i=0: i<1000; i++) writeln('grazie')

Link al commento
Condividi su altri siti

visual basic è molto più semplice di C per fortuna...

effettivamente, come usa le colonne e righe non si pò fare un gran chè

quindi ti scrivo la sintassi da usare per aver colonne e righe molto facili da interpretare

sub idocomputer()

rigaoutput= 1 ' quà li dici su che riga iniziare ascrivere i risultati delle som

for ciclo = 1 to n step 10'dove n sarà l'ultima delle righe da sommare

for riga = ciclo+1 to ciclo+10

colonna = 1 ' quà li dici da che colonna legge le celle da sommare

somma =somma +cells(riga,colonna).value

next riga

cells(rigaoutput,colonnaoutput).value = somma ' qua scrive il risultato

somma=0:rigaoutput=rigaoutput+1

next ciclo

end sub

ti posizioni sul foglio di lavoro dove hai i dati e da strumenti ...macro... la esegui

...fammi sapere se tutto ok

in ogni caso non preoccuparti che basta questo codice per fare tutto

non devi inizializzare nient'altro... bello il basic ...vero??

iMac G5-iPod Mini + iPod-Hifi + iPod Classic + iPad 64GB +iMac 27" i5 +apple tv2+ iPod Touch + iPod Shuffle + iPhone 5 + miniiPad + MacBook Pro + iPhone 6 +iPhone 6s+ iMac 27" 5K i7

If it Works, it's Obsolete Marshall Mcluhan

Link al commento
Condividi su altri siti

Originally posted by desko

Premessa: io non so cosa sia Visual Basic, al massimo posso dire che è un linguaggio di programmazione o qualcosa di simile.

Ho creato la macro e mi sono ritrovato con questo codice:

Sub Macro1()

'

' Macro1 Macro

' Macro registrata il 11-10-2005 da desko

'

'

   Range(\"B1\").Select

   ActiveCell.FormulaR1C1 = \"=SUM(RC[-1]:R[9]C[-1])\"

   Range(\"B1\").Select

End Sub

in cui si riconosce facilmente quello che fa (somma i numeri della prima colonna a sinistra dalla riga stessa fino alla nona dopo la cella).

Ma qui torna il mio problema: posso anche fare un bel ciclo for (sintassi come in C++? come in Matlab? devo inizializzare il contatore prima?), ma poi dovrò sostituire Range(\"B1\").Select con qualcosa tipo Range(\"Bi+10\").Select, o qualcosa di equivalente.

Non credo si possa fare e se si può, qual è la sisntassi corretta?

for (i=0: i<1000; i++) writeln('grazie')[/b]

Partendo dalla tua macro, l'ho leggermente modificata ed ora dovrebbe fare quello che serve a te; ovviamente può ancora essere migliorata (ad esempio non facendo saltare la cella selezionata avanti e indietro all'inizio).

Sub Macro1()

'

' Macro1 Macro

' Macro registrata il 11-10-2005 da desko

'

'

Range(\"A1\").Select

Selection.End(xlDown).Select

fine = ActiveCell.Row

fine = WorksheetFunction.RoundUp(fine / 10, 0)

Range(\"B1\").Select

For i = 1 To fine

ActiveCell.FormulaR1C1 = \"=SUM(R[\" & (9 * (i - 1)) & \"]C[-1]:R[\" & (9 * i) & \"]C[-1])\"

ActiveCell.Offset(1, 0).Select

Next

End Sub

[/b]

In pratica la macro si occupa di inserire nella formula i riferimenti calcolati in funzione della variabile i del ciclo FOR.

Fammi sapere se funziona come ti serviva :wink:

Link al commento
Condividi su altri siti

Archiviato

Questa discussione è archiviata e chiusa a future risposte.

×
×
  • Crea Nuovo...