Io avrei la necessità di ottenere la somma di tutti i fattori di una serie
di numeri consecutivi, fornendo gli estremi.
Per esempio, indicando 1 e 5 vorrei ottenere la somma di 1+2+3+4+5.
Per andare più nello specifico, l'estremo inferiore sarà sempre 1 mentre
quello superiore deve essere contenuto all'interno di una cella a contenuto
variabile comunque maggiore di 550.
Questa funzione mi serve perché ho la necessità di verificare che un elenco
di numeri sia formato da valori consecutivi ma non ordinati (1, 3, 4, 2, 5)
e che non vi sia alcun buco (es. 1, 2, 4, 6) quindi pensavo di confrontare
il risultato ottenuto sommando tutti i valori della colonna con il risultato
restituito da questa funzione che cerco.
Qualora non esista una funzione simile accetto qualunque suggerimento in
merito purché mi consente di capire se esistano o meno dei buchi.
Ciao e grazie anticipatamente.
--
H'Ombre
H.Ombre[at]tiscali.it
H'Ombre wrote:
> Io avrei la necessità di ottenere la somma di tutti i fattori di una
> serie di numeri consecutivi, fornendo gli estremi.
> Per esempio, indicando 1 e 5 vorrei ottenere la somma di 1+2+3+4+5.
L'unica che conosco (ma non va bene nel tuo caso) è la formula =FATTORIALE()
che invece di sommare moltiplica tra di loro i singoli fattori.
Quello che però potresti fare è creare una funzione in VBA da utilizzare
all'interno del tuo foglio.
Ad esempio:
====================
Function SommaIntervallo(ByVal Minimo As Long, ByVal Massimo As Long) As
Long
Dim i As Long
If Minimo <= Massimo Then
For i = Minimo To Massimo
SommaIntervallo = SommaIntervallo + i
Next i
End If
End Function
====================
Se questa funzione viene salvata come Componente Aggiuntivo ed agganciato ad
Excel, oppure salvata nelle cartelle Macro Personali, la funzione potrebbe
essere utilizzata direttamente con una sintassi simile a:
=PERSONAL.XLS!SommaIntervallo(A1;B1)
> Per andare più nello specifico, l'estremo inferiore sarà sempre 1
> mentre quello superiore deve essere contenuto all'interno di una
> cella a contenuto variabile comunque maggiore di 550.
Nell'esempio sopra riportato ho preferito implementare entrambe i parametri
di minimo e di massimo, in maniera tale da rimanere ancora più dinamica. Se
invece ti interessa passare solo l'estremo superiore è facilmente
modificabile:
====================
Function SommaIntervallo2(ByVal Massimo As Long) As Long
Dim i As Long
If Massimo >= 1 Then
For i = 1 To Massimo
SommaIntervallo = SommaIntervallo + i
Next i
End If
End Function
====================
Se hai necessità durante l'implementazione, facci sapere.
Nota aggiuntiva: ricordati sempre di indicare la versione di Excel che vuoi
utilizzare.
Ciao
Roberto
Ciao
Roberto
è il famoso aneddoto del problema di matematica risolto
da gauss a 8 anni
(n+1)*n/2
quindi
(5+1)*5/2=6*2,5=15
servì a gauss a risolvere il problema di matematica
[la somma dei primi 100 numeri > 5050]
ma non serve a risolvere il tuo problema
perchè la somma sarà la stessa sia che
tu abbia 3,4,5 sia che tu abbia 4,4,4
quindi...
affacciati a microsoft.public.it.office.excel
.f
fernando cinquegrani
Microsoft MVP
http://www.prodomosua.it
| quindi...
| affacciati a microsoft.public.it.office.excel
però il problema è intrigante e quindi ti anticipo qualcosa:
poniamo che la tua serie di numeri sia tra A2 e A101
(quindi i numeri da 1 a 100)
se in una cella indichi
=SOMMA(CONFRONTA(RIF.RIGA(INDIRETTO("1:100"));(A2:A101);FALSO))
[è una formula matriciale, devi inserirla con Cntl+Maiusc+Invio,
non con il semplice Invio]
hai due possibilità
1. hai risolto il problema di gauss
ti verrà fuori cioè un 5050
2. c'è qualche buco e qualche duplicazione
nella tua lista e
ti verrà fuori #N/D
in generale cioè la formula
=VAL.NUMERO(SOMMA(CONFRONTA(RIF.RIGA(INDIRETTO("1:100"));(A2:A101);FALSO)))
[sempre con il Cntl+Maiusc+Invio]
dove "1:100" sono i numeri che vuoi trovare
e A2:A101 è l'intervallo dei valori da controllare
ti restituirà
VERO se è tutto ok
FALSO se c'è qualche buco
| "H'Ombre" <H.OmbreD...@tiscalinet.it> ha scritto nel messaggio news:bgleu9$rvm$1...@lacerta.tiscalinet.it...
| | Per esempio, indicando 1 e 5 vorrei ottenere la somma di 1+2+3+4+5.
|
| è il famoso aneddoto del problema di matematica risolto
| da gauss a 8 anni
| (n+1)*n/2
se i numeri non sono da 1 a n, ma da m a n, allora
=(n+m)*(n-m+1)/2
es: da 7 a 23
=(23+7)*(23-7+1)/2
ossia 30*17/2=30*8,5=255
di conseguenza nella formula indicherai "7:23"
.f
http://www.prodomosua.it
Innanzitutto devo scusarmi per non aver risposto.
La verità è che non credevo di esser riuscito a inviare il post,
google mi ha restituito un messaggio di "non gestione" del NG, allora
ho provato con il mio vecchio client di posta configurato per i NG: OE
ma tiscali continuava a buttar giù la connessione.... alla fine, ho
provato a cercare questo NG su MSN... al suo posto ho trovato una
altro gruppo dedicato a Excel... insomma la storia di Remì che cerca
la sua mamma perduta :)))
E così rispondo anche al tuo secondo post: potrei affacciarmi su
...office.excel ma non potrei "postare" ("guardare ma non toccare è
una cosa che non si può fare"... almeno per me:))).
Grazie mille.
Spero a presto,
Toni
"Roberto Restelli" <roberto.res...@libero.it> wrote in message news:<bglgif$obv5a$1...@ID-150503.news.uni-berlin.de>...
Scherzi a parte, ho provato entrambe le formule ma ho un solo
problema: richiedono dei riferimenti fissi nella funzione
(INDIRETTO("1:100")) mentre io avrei la necessità di indicare il
riferimento a una cella (INDIRETTO("1:B1"))...
io non son riuscito a trovare una soluzione ma non demordo:)))
Grazie mille,
Toni
h.ombre[at]tiscali.it
"fernando cinquegrani" <f.cinq...@prodomosua.it> wrote in message news:<e8Lj$rxWDH...@TK2MSFTNGP10.phx.gbl>...
la scrittura allora è INDIRETTO("1:" & B1)
.f
http://www.prodomosua.it
Toni wrote:
> E cosě rispondo anche al tuo secondo post: potrei affacciarmi su
> ...office.excel ma non potrei "postare" ("guardare ma non toccare č
> una cosa che non si puň fare"... almeno per me:))).
Se vuoi interfacciare i newsgroup Microsoft, puoi farlo connettendoti
direttamente con il tuo news reader al server:
msnews.microsoft.com
(tramite qualsiasi provider), oppure tramite l'interfaccia web
all'indirizzo:
http://support.microsoft.com/newsgroups/default.aspx
oppure:
http://www.microsoft.com/italy/office/support/newsgroup/default.asp
Ciao
Roberto