desko Inviato 11 Ottobre 2005 Segnala Condividi Inviato 11 Ottobre 2005 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 Altre opzioni di condivisione...
idocomputer Inviato 11 Ottobre 2005 Segnala Condividi Inviato 11 Ottobre 2005 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 Altre opzioni di condivisione...
desko Inviato 11 Ottobre 2005 Autore Segnala Condividi Inviato 11 Ottobre 2005 Ora ci provo su un file di prova più piccolo. Grazie. Link al commento Condividi su altri siti Altre opzioni di condivisione...
desko Inviato 11 Ottobre 2005 Autore Segnala Condividi Inviato 11 Ottobre 2005 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 Altre opzioni di condivisione...
idocomputer Inviato 11 Ottobre 2005 Segnala Condividi Inviato 11 Ottobre 2005 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 Altre opzioni di condivisione...
ptrchp Inviato 11 Ottobre 2005 Segnala Condividi Inviato 11 Ottobre 2005 Originally posted by deskoPremessa: 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 Altre opzioni di condivisione...
Messaggi raccomandati
Archiviato
Questa discussione è archiviata e chiusa a future risposte.