Pagina 1 di 2

sommare numeri

Inviato: lun 05 nov 2007 10:39 pm
da stefy
Ciao ragazzi :)
Da qualche ora sto tentando di trovare il metodo per riuscire a sommare dei numeri all'interno di una cella.
Provo a spiegarmi con un esempio: in una cella scrivo il numero 654410, vorrei che in un'altra cella mi venisse restituito il risultato della somma dei numeri cioè 20.
So già che mi direte che tutto ciò non ha senso e che non troverà mai nessuna applicazione pratica, ma è più che altro una mia curiosità :oops:
O magari ho trovato un punto debole a questo excel :?:
;)
stefy

Inviato: mar 06 nov 2007 12:33 am
da Peterson
Ciao Stefy,

la funzione che cerchi tu, di default penso proprio non esista;
c'è una funzione somma.serie nei componenti aggiuntivi, ma è una somma per una serie di potenze, che è prima di tutto una serie e comporta analisi da un altro punto di vista.

ho provato a cercare nei tutorial on line e a vedere se ci sono macro/script preconfezionati che possano venire incontro all' esigenza, ma non ho trovato nulla.
Se ho "l' illuminazione" oppure trovo qualcosa di interessante ti faccio sapere e posto.;)

Ciao e alla prossima.

Inviato: mar 06 nov 2007 8:43 am
da themago
Qualcosa esiste....
Sei in A1 scrivi il numero in B1 metti =STRINGA.ESTRAI(A1;1;1)+STRINGA.ESTRAI(A1;2;1)...+STRINGA.ESTRAI(A1;7;1)..+ aumentando il secondo parametro di tanti numeri quanti sono quelli del numero (si potrebbe determinare con la Funzione =Lunghezza(+A1).
In VBA basterebbe fare un loop from 1 to =Lunghezza(+A1).
In questo campo IXA potrebbe completare il mio ragionamento.

Inviato: mar 06 nov 2007 12:19 pm
da donatella
:) Siete a dir poco sorprendenti!
Ma dove le trovate queste soluzioni? Siete bravissimi!
E pensare che il capitano ha premesso che qui non si troveranno dei guru in grado di snociolare risposte a tutti i quesiti.
A mio avviso dei guru lo siete, complimenti!
A presto.
Un abbraccio, Donatella ;)

Inviato: mar 06 nov 2007 2:11 pm
da Peterson
Themago: chapeau! ;)

complimenti; non credevo che si potesse riuscire così facilmente.
Un' altro tips&trick utile a sfruttare al meglio Excel.

Inviato: mar 06 nov 2007 3:43 pm
da stefy
Ciao ragazzi! :)
Per prima cosa un grosso grazie, soprattutto al mago themago che in questa occasione..bè! sei stato grande.
Ho provato a scrivere in b1 la formula
  • =STRINGA.ESTRAI(A1;1;1)+STRINGA.ESTRAI(A1;2;1)
e scrivere in a1 un numero a 2 cifre ma purtroppo non mi funziona :oops:
L'ho fatto una volta anche di fretta, dato che ho avuto un attimo di tempo.
Purtroppo ora devo uscire lo riprenderò di certo in serata e non è detto che ci si risenta.
ma mi domando se e dove sbaglio :?:

Inviato: mar 06 nov 2007 4:38 pm
da Peterson
Ciao,

ho provato la soluzione di Themago(con Excel 2003) e funziona;
mi permetto di postare un' immagine esplicativa:

Immagine

in A1 la sequenza di cifre e in B1 la somma delle cifre in A1;
la funzione l' ho scritta nell' apposita cella sopra la griglia (come si vede dalla foto), ma non c'è differenza se la scrive in B1;

Ciao e alla prossima

Inviato: mar 06 nov 2007 5:55 pm
da Igor
Ciao stefy, ti posso confermare che funziona anche con il mio vecchio excel97 che prima o poi dovrò decidermi a cambiare.
All'inizio pensavo che excel non potesse fare un calcolo simile, invece! hai ragione donatella, qui ci sono veramente dei grandi guru dell'excel!
Mi sapete spiegare l'utilità di questa formula, sarà anche curiosa ma io non riesco a trovare un applicazione in pratica (come anticipava stefy)
Oltretutto c'è il problema che se nella cella scrivo più cifre rispetto alla formula questa non funziona, o anche qui c'è la soluzione?
Ciao amici.

6-novembre-2007
Igor

Inviato: mar 06 nov 2007 9:26 pm
da stefy
:oops: mi vergogno a dirlo ragazzi ma ne ho combinata una delle mie :!:
Mi sono illuminata mentre stavo seduta in metrò esattamente alla fermata di Loreto.(chissà cosa avranno detto di me quelli che mi stavano seduti accanto: questa è pazza!) (SONO SOBBALZATA QUANDO MI SONO RESA CONTO DI DOVE POTEVO AVEVO COMMESSO L'ERRORE!)
Ora l'ho riprovata e tutto va a meravigli, ti chiedo scusa per l'incidente themago :oops:
Sapete dove sbagliavo :?:
Mi sono fatta prendere dal copia/incolla e nella barra della formula, davanti all' = risulatava esserci uno spazio vuoto.
Cancellato lo spazio, voilà tutto ok :!:
Themago: chapeau! anche da parte mia.

ps: in effetti Igor ha notato un particolare curioso, il fatto che se scrivessimo una cifra con numeri maggiori della catena di formula ecco che non funziona!
ci sarà pure un sistema che faccia finta di niente e mi da lo stesso il totale, o no?
ciao ragazzi ;)
stefy.

Inviato: mar 06 nov 2007 9:53 pm
da Capitan Farloc
Ciao Stefy,
è sempre un piacere incontrarti nel forum :)
Per come la vedo io un problema, anche se non ha alcuna applicazione pratica, è sempre un esercizio divertente ed istruttivo....
Anche fare le parole crociate o risolvere i rebus delle riviste di enigmistica è fine a se stesso, ma a me diverte farlo ;)
Premesso questo (e visto che questo posto pullula di guru :lol: ) non potevo esimermi dall'andare a fare il guru anche io :D
E quindi, visto che excel non mette a disposizione alcuna funzione in grado di fare il calcolo che volevi... allora ho provato a scriverla io :shock:
Non è molto difficile, basta una volta che siamo sul foglio Excel cliccare con il tasto destro sulla linguetta in basso con scritto "Foglio1" e selezionare "Visualizza Codice".
Una volta sullo schermo del VBA si dovrà creare una finestra apposita per mettere il codice della funzione tramite il menu a tendina Inserisci -> Modulo.
Ora nella finestra che si è aperta basta inserire questo codice:

Codice: Seleziona tutto

Function Sommanumeri(CellaInput As String) As Integer
Dim LunghezzaCampo As Integer
Dim Totale As Integer
Dim Indice As Integer

CellaInput = Trim(Str$(CellaInput))
LunghezzaCampo = Len(CellaInput)
Totale = 0

For Indice = 1 To LunghezzaCampo
    Totale = Totale + Val(Mid$(CellaInput, Indice, 1))
Next Indice

Sommanumeri = Totale

End Function
A questo punto abbiamo creato una funzione che si chiama SommaNumeri:
Immagine
Basterà tornare nel foglio excel ed utilizzarla come una normale funzione:
Immagine
Ed il gioco è fatto.
Se non vi va di scrivere potete scaricare il file excel qui:
SommaNumeri.xls
Un ultimo avvertimento, se la funzione non viene vista dal foglio excel è probabilmente perchè il livello di protezione impostato non consente l'esecuzione di macro (la funzione è una macro) quindi dovrete selezionare il menu a tendina Strumenti -> Macro -> Protezione e selezionare un livello di protezione medio.
Buon divertimento
P.S.
Questa funziona anche se mettiamo un numero con più cifre ;)

Inviato: mer 07 nov 2007 8:33 am
da themago
Grazie Cap e Ixa per il codice.
Una cortesia, per me e chi non ha molta dimestichezza con VBA, potreste metterre due righe di commento al vostro codice
Es DIM codice as integer -->> dimensiona la variabile codice come numero intero.
ovviamente se potete
Grazie

Inviato: mer 07 nov 2007 10:32 am
da Capitan Farloc
Sì, ci avevo pensato.
Il VBA è un linguaggio molto semplice e la possibilità di crearci delle funzioni sotto excel da delle grosse potenzialità
Stasera se ho un pò di tempo do qualche spiegazione su quello che abbiamo scritto (io ho anche commesso una imprecisione me ne sono accorto oggi) e sulle istruzioni utilizzate.
Sono contento di scoprire che ixa ha utilizzato un codice molto simile al mio, temevo di utilizare un linguaggio piuttosto "arcaico", in quanto le conoscenze base che ho di questo linguaggio appartengono al vecchio GW-Basic che era l'interprete di linguaggio BASIC presente nel sistema operativo DOS dell'Olivetti M24 del mio papà con cui giocherellavo da ragazzo ;)

Inviato: mer 07 nov 2007 2:51 pm
da themago
vediamo se ho capito:

Function Sommanumeri(CellaInput As String) As Integer
Hai creato una Funzione che si chiama Sommanumeri basata sulla Stringa CellaInput
Dim LunghezzaCampo As Integer
Dim Totale As Integer
Dim Indice As Integer
Hai definito 3 variabili come numeri interi

CellaInput = Trim(Str$(CellaInput))
Hai eliminato gli spazi vuoti a dx e sx
LunghezzaCampo = Len(CellaInput)
Totale = 0
Hai determinato la lunghezza della Stringa Cellainput, settando la variabile Totale a 0
For Indice = 1 To LunghezzaCampo
Totale = Totale + Val(Mid$(CellaInput, Indice, 1))
Next Indice
Hai creato un loop FOR TO NEXT basato sulla variabile lunghezzacampo e che con la funzione MID (equivalente alla Funzione STRINGA.ESTRAI) viene estratto un numero in posizione progressiva determinata dal valore di INDICE e la VAR Totale si incrementa del Valore estratto per ogni Step del Loop
Sommanumeri = Totale
qui mi perdo... o meglio capisco che Totale è il risultato della somma del Loop

End Function

Inviato: mer 07 nov 2007 9:43 pm
da Capitan Farloc
themago ha scritto:...Sommanumeri = Totale
qui mi perdo... o meglio capisco che Totale è il risultato della somma del Loop[/b]...
Hai compreso e spiegato le istruzioni perfettamente...
Ti sei perso sulla più semplice...
Quando si parla di "Funzioni" si parla di programmi che vengono richiamati per svolgere un determinato calcolo, gli si passano uno o più parametri (quelli racchiusi tra parentesi, nel nostro caso uno solo, il valore contenuto nella cella di cui vogliamo sommare le cifre) e questa (la funzione) dopo fatti i calcoli ritorna essa stessa un valore come risultato, come se lei stessa fosse quel valore...
Infatti quando la utilizziamo scriviamo nella cella =Sommanumeri(C5).
Quindi l'istruzione:
Sommanumeri = Totale
significa semplicemente Dai alla funzione il valore che abbiamo calcolato precedentemente.
Il nome della funzione è a tutti gli effetti vista all'interno della funzione stessa come se fosse una variabile, tant'è che ixa nella sua funzione non utilizza neanche una variabile di appoggio, ma esegue il calcolo direttamente utilizzando il nome della funzione stessa
stefy = Stefy + Val(Mid(Valore_in_Cella, Ind, 1))
Ah nella prima riga:
Function Sommanumeri(CellaInput As String) As Integer

si dichiara la funzione e si definisce sia il tipo della variabile che riceverà in input (As String) che il valore che assumerà la funzione stessa come risultato (As Integer).
Le indicazioni sul debug fornite da ixa sono moolto succulente :D
ora le vado a provare
Ciao

Inviato: mer 07 nov 2007 10:12 pm
da stefy
:) Ciao ragazzi, quando apro e leggo le vostre risposte, credetemi mi rendono veramente felice.
Siete tutti indistintamente da ammirare per dedizione e competenza,
In questa circostanza mi aspettavo risposte del tipo (lascia perdere che tanto non ti serve a niente) e invece eccovi qua insieme, uniti per trovare risposte alle mie insignificanti domande.
Vi ringrazio veramente col cuore, Grazie :!:

E dopo i dovuti ringraziamenti rieccomi con un nuovo dubbio, le due macro sembrano abbastanza simili e entrambe funzionali, c'è un particolare che mi sfugge: con la macro del capitano ho aggiunto per sbaglio una lettera oltre che ai numeri, e non ha dato il risultato.
Ho provato a fare lo stesso con la macro di ixa e tutto funziona, per quale ragione :?:
;) ciao ragazzi