Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Somma condizionata

33 views
Skip to first unread message

Rugiada

unread,
Oct 3, 2005, 7:24:49 PM10/3/05
to
Salve
Non sono riuscita a fare la somma di alcune celle
ignorando quelle il cui contenuto e' scritto in grassetto.
E' possibile fare tale somma ?
Grazie
Rugiada


ivano

unread,
Oct 4, 2005, 7:16:19 AM10/4/05
to

"Rugiada" <Gabriel...@virgilio.it> ha scritto nel messaggio
news:4341bdbf$0$32459$4faf...@reader1.news.tin.it...

Ciao,
č possibile solo tramite vb.
Puoi invece risolvere in modo "normale" cambiando leggermente la struttura
dei dati:

| A | B | C |
--+-----+----------+----------------+
1|nome |grassetto |somma grassetto |
2| 1| | 6|
3| 2|x | |
4| 3| | |
5| 4|x | |


Aggiungi una colonna "grassetto" dove indicherai con x le corrispondenti
celle della colonna A che vanno formattate in tal senso.

Seleziona A1:A5
formattazione condizionale
condizione1...la formula č:
=$B1="x"

per avere la somma delle celle formattate-> C2:
=SOMMA.SE($B$2:$B$5;"x";A2:A5)
ivano


fernando cinquegrani

unread,
Oct 4, 2005, 7:23:05 AM10/4/05
to
[Rugiada] scrive in
http://www.google.it/groups?threadm=4341bdbf$0$32459$4faf...@reader1.news.tin.it

> Salve
> Non sono riuscita a fare la somma di alcune celle
> ignorando quelle il cui contenuto e' scritto in grassetto.
> E' possibile fare tale somma ?

evita di associare informazioni alle formattazioni
altrimenti puoi utilizzare solo macro.
nel tuo caso, ad esempio, puoi scrivere
una funzione personalizzata, del tipo:

Public Function SommaGrassetto(myRng As Range) As Variant
Dim counter As Long

For counter = 1 To myRng.Cells.Count
If Not (myRng.Cells(counter).Font.Bold) And
IsNumeric(myRng.Cells(counter).Value) Then
SommaGrassetto = SommaGrassetto + myRng.Cells(counter).Value
End If
Next counter

End Function

quindi nel foglio, scrivere

=SommaGrassetto(A1:A10)
.f


Pippo

unread,
Oct 4, 2005, 10:34:38 AM10/4/05
to

fernando cinquegrani ha scritto:


Scusa Fernando, come mai non hai usato il ciclo "For-Each"?

Ciao e grazie
Pippo

fernando cinquegrani

unread,
Oct 4, 2005, 11:30:19 AM10/4/05
to
[Pippo] scrive in
http://www.google.it/groups?threadm=1128436478....@g49g2000cwa.googlegroups.com
> fernando cinquegrani ha scritto:

>> nel tuo caso, ad esempio, puoi scrivere
>> una funzione personalizzata, del tipo:

> Scusa Fernando, come mai non hai usato il ciclo "For-Each"?

boh.
forse era più comprensibile il modello per chi non è esperto di vba.
forse perchè sono ancora afflitto da jet lag. forse perchè, dicendo
'esempio' e 'tipo', intendevo dire 'da non copiare e incollare senza
rifletterci su'. forse perchè una funzione personalizzata è anche una
funzione personale: ognuno se la gestisce come gli pare. forse perchè
la risposta era: 'evita di associare informazioni alle formattazioni',
il
resto è fuffa. forse perchè inizialmente intendevo scrivere una funzione
più generale, valida per diversi tipi di formattazione, e poi ho invece
ridotto il problema. forse perchè una risposta a un post non è un
trattato sulla sintassi. forse...vallo a sapere!
[avresti potuto chiedermi anche perchè ho scritto
next counter invece di next e basta, la risposta sarebbe stata
la stessa]
.f


Rugiada

unread,
Oct 4, 2005, 2:00:54 PM10/4/05
to

"ivano" <chiappa...@hotmail.com> ha scritto nel messaggio
news:%235NGvVN...@TK2MSFTNGP12.phx.gbl...
Grazie Ivano per la gentilezza
Rugiada

Rugiada

unread,
Oct 4, 2005, 2:02:22 PM10/4/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:O%23E0DYNy...@TK2MSFTNGP12.phx.gbl...

Ciao Fernando e grazie per la disponibilita' e gentilezza.
Rugiada

Pippo

unread,
Oct 4, 2005, 7:11:18 PM10/4/05
to
"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:ut86WiPy...@TK2MSFTNGP09.phx.gbl...
> [Pippo] scrive in
>
http://www.google.it/groups?threadm=1128436478....@g49g2000cwa.goog

legroups.com
> > fernando cinquegrani ha scritto:
> >> nel tuo caso, ad esempio, puoi scrivere
> >> una funzione personalizzata, del tipo:

> > Scusa Fernando, come mai non hai usato il ciclo "For-Each"?

> forse era più comprensibile il modello per chi non è esperto di vba.

Perfettamente d'accordo!

Ho posto la domanda, perche' dato che ti considero uno dei *maestri* di
questo NG, pensavo ci fosse qualche motivo particolare e quindi una
occasione per imparare cose nuove....

> forse perchè sono ancora afflitto da jet lag.

Io afflitto dalla "dep" da molti anni.. :-((

> [avresti potuto chiedermi anche perchè ho scritto
> next counter invece di next e basta, la risposta sarebbe stata
> la stessa]

No, questo non te lo avrei mai chiesto !!!!.. :-)))

Se il ciclo "For" e' uno solo, credo sia indifferente usare "next counter" o
solo "next", ma se i cicli "For" sono molti e nidificati, credo sia piu'
opportuno per un migliore controllo e leggibilita' del codice, chiudere
sempre ogni "For" con il rispettivo "next variabile".

Cmq anche nel caso di un solo "For" preferisco sempre chiudere (quando me ne
ricordo) con "next variabile".

Ciao e grazie mille!!
Pippo

Rugiada

unread,
Oct 4, 2005, 7:46:46 PM10/4/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:O%23E0DYNy...@TK2MSFTNGP12.phx.gbl...

Ciao Fernando
Scusa se ti disturbo di nuovo.
E' tutta sera che ci provo, ma con pessimi risultati.
Sono proprio imbranata.. :-(
Dove la scrivi la Public Function SommaGrassetto(..)
che gentilmente mi hai dato ?
Rugiada


fernando cinquegrani

unread,
Oct 4, 2005, 8:47:57 PM10/4/05
to
[Rugiada] scrive in
http://www.google.it/groups?threadm=43431463$0$23965$4faf...@reader3.news.tin.it

> Dove la scrivi la Public Function SommaGrassetto(..)
> che gentilmente mi hai dato ?

con Alt+F11 entri nell'editor vba
qui, da menu, inserisci :: modulo
quindi in Modulo1 incolla il codice

attenzione:


If Not (myRng.Cells(counter).Font.Bold) And
IsNumeric(myRng.Cells(counter).Value) Then

è su una sola riga.

ritorna quindi nel foglio di lavoro e utilizza
la funzione come una normale funzione excel
=sommagrassetto(A1:A10)
.f
fernando cinquegrani
http://www.prodomosua.it/disegni

Rugiada

unread,
Oct 5, 2005, 7:35:14 PM10/5/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:e5Ab8ZUy...@TK2MSFTNGP15.phx.gbl...

Ciao Fernando Cinquegrani
Sei veramente molto gentile, grazie.
Ho fatto ed e' tutto ok, funziona, grazie ancora.
Curiosita' :
Terminato il lavoro, ho fatto anche pulizia
cancellando i fogli di lavoro vuoti (fogli 2 e 3).
Nel foglio di lavoro attivo ora trovo come
ritorno della "Public function Sommagrassetto(...)
#NOME? anziche' il risultato numerico.
Ho controllato il modulo1. Esiste ancora con
tanto di codice al suo interno. :-(
Perche' ora non funziona piu' ?
Eliminare un foglio di lavoro provoca danni ?
(Nel frattempo ho rifatto tutto da capo con un file
nuovo ed e' tutto ok.)
Rugiada

fernando cinquegrani

unread,
Oct 6, 2005, 1:09:50 AM10/6/05
to
[Rugiada] scrive in
http://www.google.it/groups?threadm=4344632c$0$13357$4faf...@reader2.news.tin.it

> Nel foglio di lavoro attivo ora trovo come
> ritorno della "Public function Sommagrassetto(...)
> #NOME? anziche' il risultato numerico.
> Ho controllato il modulo1. Esiste ancora con
> tanto di codice al suo interno. :-(
> Perche' ora non funziona piu' ?
> Eliminare un foglio di lavoro provoca danni ?

#NOME? č l'errore che compare quando non
viene trovata la funzione ed č per lo piů collegata
a errori di battitura, quando, ad esempio,
si scrive
=SOMA(A1:A10)
invece di
=SOMMA(A1:A10).
L'eliminazione di un foglio di lavoro non dovrebbe
alterare i risultati.
.f


Rugiada

unread,
Oct 6, 2005, 9:52:57 AM10/6/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:OBwv1Qjy...@TK2MSFTNGP15.phx.gbl...

Ciao Fernando
Credo di aver scoperto l'arcano.....
Sembra essere un problema di protezione... ?!
Nel mio caso la scrittura era corretta (era la medesima di
quando funzionava).
Ogni volta che apro il file o elimino una riga/colonna o
elimino un foglio di lavoro o chissa' cos'altro...mi da lo
stesso errore #NOME?
All'entrata del file ho il messaggio che le macro non possono
essere eseguite per il livello di protezione e bla, bla, bla....
Con stima
Rugiada


Rugiada

unread,
Oct 7, 2005, 12:52:55 PM10/7/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:OBwv1Qjy...@TK2MSFTNGP15.phx.gbl...

... cut

Ora, come ti ho gia' detto, e' tutto ok.
Era un problema di "Alta protezione"...
La tua "Public Function...." funziona !!
Se modifico poi un dato, da grassetto a normale
o viceversa, non ho la somma aggiornata.. :-(
Per averla, devo andare sulla cella dove ho scritto
la funzione, fare F2 (edit) e dare conferma con INVIO.
Non esiste modo di rendere la tua "Public Funcion.."
automatica ? (simile alla funzione SOMMA() di Excel)
Grazie per la tua attenzione.
Rugiada


fernando cinquegrani

unread,
Oct 7, 2005, 6:20:17 PM10/7/05
to
[Rugiada] scrive in
http://www.google.it/groups?threadm=4346a7dc$0$13341$4faf...@reader2.news.tin.it

scusami, il tuo messaggio mi era sfuggito.
la risposta è no: il cambiamento di formattazione
non genera alcune evento a cui sia possibile
agganciare il ricalcolo della funzione.

forzare il ricalcolo, inserendo nel modulo associato
al foglio che contiene la funzione (Foglio1?)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Calculate
End Sub

comporta uno spreco di risorse oltre a operare un
ricalcolo ritardato (quando esci dalla cella).
ripeto: la scelta di associare informazioni a
formattazioni è sbagliata e comporta difficoltà
a cascata.

che significato ha il tuo grassetto? sei sicura che non sia
possibile renderlo con la formattazione condizionata e
quindi utilizzare una funzione di somma congruente con
questa?
.f


Rugiada

unread,
Oct 7, 2005, 7:43:20 PM10/7/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:eqstV14y...@TK2MSFTNGP12.phx.gbl...

... [cut]


> che significato ha il tuo grassetto? sei sicura che non sia
> possibile renderlo con la formattazione condizionata e
> quindi utilizzare una funzione di somma congruente con
> questa?
> .f

Ciao Fernando, ben trovato.
Il mio grassetto ha un semplice significato:
Per alcuni mesi dovro' tenere una piccola contabilita'
del caseggiato in cui abito con altre persone per alcuni
lavori straordinari che stiamo facendo.
La semplice tabellina che ho fatto riporta i vari lavori
con relative quote.
Sig. A Sig. B Sig. C
lavoro 1 quota 1 quota 1 quota 1
lavoro 2 quota 2 quota 2 quota 2
ecc.
Totale colonne -> Tot.Sig.A Tot.Sig.B Tot.Sig.C

I totali delle colonne (Tot.Sig.A, ecc.) rappresentano
cio' che ciascuno deve versare.
Spesso c'e' chi mi versa la propria quota per ogni
lavoro eseguito, ad esempio, il Sig. A mi versa la
quota1.
Io la quota1 la metto in grassetto.
La Public Function() che mi hai gentilmente dato
serviva proprio per poter sempre leggere il totale
della colonna (es. Tot.Sig.A) come totale residuo
da versare, cioe' somma tutto tranne i grassetti...
Spero di essere riuscita ad essere un po' chiara...
Con rinnovata stima.
Rugiada


fernando cinquegrani

unread,
Oct 11, 2005, 5:38:18 AM10/11/05
to
[Rugiada] scrive in
http://www.google.it/groups?threadm=43470813$0$20491$4faf...@reader4.news.tin.it

> La semplice tabellina che ho fatto riporta i vari lavori
> con relative quote.
> Sig. A Sig. B Sig. C
> lavoro 1 quota 1 quota 1 quota 1
> lavoro 2 quota 2 quota 2 quota 2
> ecc.
> Totale colonne -> Tot.Sig.A Tot.Sig.B Tot.Sig.C

potresti intercalare le colonne della tabella con un campo
'pagato' impostato inizialmente a o (o minuscola) o vuoto
della larghezza di un carattere e con il formato
formato :: celle :: carattere...wingdings
quando il signor A pagherà il lavoro 1 sostituirai la o con una m.
l'effetto è piacevole.
quindi avere a fine tabella
un totale versato =somma.se(c1:c20;"m";b1:b20) e
un residuo da versare =somma (b1:b20)-[la cella precedente]

potresti duplicare la tabella e titolarla 'versamenti'.
in questo modo potresti accettare anche dei versamenti parziali
sui lavori (e chi non ha bisogno di rateizzazioni in questo
periodo?!?!).

potresti...

suvvia...il fatto che signor A abbia versato o meno la sua quota
mi pare troppo importante per affidarla al solo grassetto.
la registrazione in un campo separato dell'informazione ti
permetterebbe di risolvere i problemi successivi più agevolmente
o di ampliare facilmente gli output della tua applicazione:
quando il signor A ti chiederà la ricevuta dei suoi versamenti
la macro sommagrassetto ti servirà a poco...
.f
p.s.: il ritardo con cui ti rispondo è dovuto al fatto che i
tuoi messaggi mi arrivano come 'già letto'. ne ignoro il motivo.

Rugiada

unread,
Oct 11, 2005, 6:32:00 AM10/11/05
to

"fernando cinquegrani" <f.cinq...@xroxxmxxxa.it> ha scritto nel
messaggio news:uX$RHekzF...@tk2msftngp13.phx.gbl...
Grazie Fernando, sei davvero moto cortese.
Rugiada

0 new messages