Condividi:        

[excel] sommare se i riferimenti sono "spuntati" (=1)

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[excel] sommare se i riferimenti sono "spuntati" (=1)

Postdi angelcarl5 » 13/11/09 06:09

salve a tutti,
premetto che di programmazione non ne so nulla, ma conosco gli operatori logici,
ho circa una decina di numeri da sommare, e so che se funziona in logica deve perforza funzionare su excel,
ma come?

i dati si trovano nell'intervallo tra
c14 e c20
il segni di spunta saranno nell'intervallo da d14 a d20

in pratica dovrebbe fare questo
somma se c'è il segno di spunta

su c22 ci sarà il totale
angelcarl5
Utente Junior
 
Post: 34
Iscritto il: 13/11/09 05:26

Sponsor
 

Re: [excel]sommare se checkbox e spuntato

Postdi Flash30005 » 13/11/09 09:59

Ciao AngelCarl, Benvenuta

Non so cosa intendi per CheckBox

ma prova a vedere se il file allegato fa al caso tuo

http://rapidshare.com/files/306338127/SommaConOpzione.xls.html

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel]sommare se checkbox e spuntato

Postdi angelcarl5 » 13/11/09 13:47

grazie flash,
per checkbox intendo il quadratino che puoi spuntare, cmq quello che mi hai messo come link è perfetto,
solo una cosa non va, io sono uomo :lol: :lol: :lol: :lol:
ciao grazie per l'aiuto
angelcarl5
Utente Junior
 
Post: 34
Iscritto il: 13/11/09 05:26

Re: [excel]sommare se checkbox e spuntato

Postdi Flash30005 » 13/11/09 20:14

angelcarl5 ha scritto:solo una cosa non va, io sono uomo

perdonami, nel profilo non è previto il sesso (devo far notare questo inconveniente al webmaster)
Ho letto più volte i tuoi post per determinare l'appartenenza a M o a F ma nessun indizio mi ha fatto luce
il tuo Nick tendeva più per F che per M
ero indeciso se mettere Benvenuto/a ma mi sembrava quasi ridicolo
allora ho tentato,
del resto avevo il 50% delle possibilità di indovinare
beh mi è andata male :( :D

Ciao e Benvenuto ;)
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel]sommare se checkbox e spuntato

Postdi angelcarl5 » 14/11/09 04:48

grazie per il benvenuto,
ora però ho un'altro problema, quello che mi hai mandato sunziona benissimo, era prorpio quello che volevo,
quindi mi sono detto, volendo posso moltiplicarlo sulla stessa linea,
ma quando sono andato per modificare la macro nn ho capito nulla dello scritto e così,
ho pensato di duplicare la parte in vba, ma non mi funziona,

cosa devo fare per aumentare o diminuire il numero delle celle da contare?
cosa devo fare per fare una copia ma spostata di celle?
angelcarl5
Utente Junior
 
Post: 34
Iscritto il: 13/11/09 05:26

Re: [excel]sommare se checkbox e spuntato

Postdi Flash30005 » 14/11/09 11:08

Dovrai modificare il Range (checkarea) che si trova sia nel foglio1 (non nel modulo) e sia nel modulo1
quindi una volta nel Vba seleziona il foglio1, nella finestra di sinistra, e vedrai questo codice
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "D14:D20"

modifica D14:D20 in funzione dell'area che intendi avere
Se le aree sono sono più di una allora il codice sarà es.:
CheckArea = "D14:D20,F14:F20,H14:H20"
In pratica ogni area separata da una virgola.
Poi nel modulo e quindi nella macro "MacroCancella" farai la stessa cosa
Infine nella macro "Calcola" dovrai adattare il codice alle tue esigenze
Codice: Seleziona tutto
Sub Calcola()
Somma = 0
For RR = 14 To 20
    If Range("D" & RR).Value = 1 Then Somma = Somma + Range("C" & RR).Value
Next RR
Range("C22").Value = Somma
Range("C22").Select
End Sub

Variare Il range RR se sono più righe,
Modificare la lettera nel D nel Range("D" & RR) e anche C nel Range("C" & RR)
e infine "C22" se non è lì che vuoi il totale
In caso di più campi puoi intervenire semplicemente aggiungendo più righe nel ciclo For Next
In questa maniera
Codice: Seleziona tutto
SommaC = 0
SommaE = 0
SommaF = 0
For RR = 14 To 20
    If Range("D" & RR).Value = 1 Then SommaC = SommaC + Range("C" & RR).Value
    If Range("F" & RR).Value = 1 Then SommaE = SommaE + Range("E" & RR).Value
    If Range("H" & RR).Value = 1 Then SommaG = SommaG + Range("G" & RR).Value
Next RR
Range("C22").Value = SommaC
Range("E22").Value = SommaE
Range("G22").Value = SommaG
Range("C22").Select    '<<<<<<<<<< qui metterai la cella che sarà attiva alla fine del processo, può essere una qualsiasi purché non sia una di quelle del Ceckarea altrimenti entra in loop.


In questa maniera vengono ricalcolate tutte le aree altrimenti si dovrebbero differenziare le aree con delle condizioni ma visto l'esiguo numero di celle penso sia opportuno non andare a "complicare" il codice.

Fai sapere
Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel]sommare se checkbox e spuntato

Postdi Anthony47 » 14/11/09 12:39

Flash e' un programmatore e la fa facile usando subito il vba (vedi la sua risposta nel messaggio sopra questo); io sono un "utente di excel" e suggerisco di usare excel e le sue prestazioni prima di andare sul vba, che spesso e' piu' rapido da implementare ma per l' utente meno esperto e' meno plasmabile.
Nel caso specifico io avrei detto:
-i tuoi dati sono in C14:C20
-nella colonna adiacente (quindi D14:D20) scrivi 1 se vuoi "spuntare e prendere" o 0 se vuoi ignorare
-in C22 calcoli il risultato con una formula "somma.se":
Codice: Seleziona tutto
=SOMMA.SE(D14:D20;1;C14:C20)
Se la formula non si capisce, basta guardare nell' help on line la sintassi della funzione Somma.Se.

Ovviamente si puo' fare qualche miglioramento:
1) aiutiamo l' utente a capire cosa scrivere in D14:D20, e per questo usiamo "Convalida dati"
-seleziona D14:D20, poi Menu /Dati /Convalida
--tab Impostazioni: Consenti=Numero intero; Dati=Tra; Minimo=0, Massimo=1
--tab Messaggio di input: scrivi qualcosa come "1=Seleziona, 0=Escludi"
..tab Messaggio di errore: scrivi qualcosa come "Solo 1=Seleziona, 0=Escludi"
-Chiudi con Ok
A questo punto se vai su D14:
-ti compare una scritta 1=Seleziona, 0=Escludi
-se digiti qualcosa di diverso da 1 o 0 ti viene un messaggio di errore

2) diamo un look piu' intuitivo:
-seleziona le celle D14:D20
-menu /Formato /Celle, tab Numero, scegli Personalizzato, come Tipo scrivi [Nero]"þ";0.0##;"";"o" (oppure [Nero]"þ";0.0##;"o";"o" , anche se io preferisco quella precedente)
-assegna il font Webdings
In questo modo quando scrivi 1 nelle celle di selezione vedrai la spunta, oppure niente (o un box vuoto)
-eventualmente ingrandisci il font, assegna una formattazione condizionale, fai abbellimenti vari a tuo piacere.

Se vuoi aggiungere altre celle agli intervalli o cambiare, puoi fare tutto da solo:
-se inserisci delle righe all' interno dell' intervallo gia' usato, tramite "Menu /Inserisci /Righe", le nuove righe avranno gia' le formattazioni delle celle adiacenti, e la formula verra' adattata ai nuovi intervalli "allargati" (insomma non devi fare niente)
-se devi fare delle variazioni piu' consistenti, bastera' copiare le vecchie celle sulle nuove, oppure copiare solo Convalida e Formati (tramite Copie e IncollaSpeciale) sulle nuove celle e modificare la formula di calcolo totale.

Spero che la cosa sia di tuo interesse.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel]sommare se checkbox e' spuntato

Postdi Anthony47 » 14/11/09 15:02

PS: forse una opzione ancora piu' comoda e' di convalidare "da elenco"; per questo, invece di questa istruzione
--tab Impostazioni: Consenti=Numero intero; Dati=Tra; Minimo=0, Massimo=1
userai questa:
--tab Impostazioni: Consenti=Elenco;in Origine scriverai "0;1" (senza gli apici)

In questo modo quando selezioni la cella, oltre al messaggino di istruzioni, compare anche la freccetta per scegliere il valore (che comunque potrai anche digitare da tastiera).

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [excel]sommare se checkbox e' spuntato

Postdi angelcarl5 » 14/11/09 18:48

ho provato il tuo sistema anthony, molto buono e molto utile,
specie in presenza di pochi dati,
nel mio caso è meglio una macro, perchè è come se fosse in vb

nel progetto ho bisogno di controllare alcuni dati in entrata,
una volta entrati i dati, il pc dovrà decidere se attivare o disattivare delle funzioni,
ma questa è un'altra storia,
angelcarl5
Utente Junior
 
Post: 34
Iscritto il: 13/11/09 05:26

Re: [excel]sommare se checkbox e' spuntato

Postdi angelcarl5 » 17/11/09 05:46

ho apportato delle modifiche, però mi segnala questa riga nel foglio1:
Codice: Seleziona tutto
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then

le modifiche sono queste al foglio1, ho modificato la checkarea che non sono più adiacenti
Codice: Seleziona tutto
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
CheckArea = "E16:E22,F16:F22,G16:G22"
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then
If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub
Application.EnableEvents = False
  If Selection.Value <> 0 Then
  Selection.ClearContents
  Else: Selection.Value = 1
  End If
ActiveCell.Offset(0, 1).Select
  Call Calcola
End If
Application.EnableEvents = True
End Sub


e questo è il modulo 1
Codice: Seleziona tutto
Sub MacroCancella()
CheckArea = "E16:E22,F16:F22,G16:G22"
scelta = MsgBox(Prompt:="Vuoi azzerare TUTTE le caselle ?", Buttons:=vbYesNo)
If scelta = 7 Then Exit Sub
Range(CheckArea).ClearContents
End Sub
Sub Calcola()
SommaB = 0
SommaC = 0
SommaD = 0
For RR = 16 To 22
    If Range("E" & RR).Value = 1 Then SommaB = SommaB + Range("B" & RR).Value
    If Range("F" & RR).Value = 1 Then SommaC = SommaC + Range("C" & RR).Value
    If Range("G" & RR).Value = 1 Then SommaD = SommaD + Range("D" & RR).Value
Next RR
Range("B24").Value = SommaB
Range("C24").Value = SommaC
Range("D24").Value = SommaD
Range("B24").Select
End Sub

spiegami, ho sete di sapere :D
angelcarl5
Utente Junior
 
Post: 34
Iscritto il: 13/11/09 05:26

Re: [excel]sommare se checkbox e' spuntato

Postdi Flash30005 » 17/11/09 10:40

Ho copiato il codice da te postato
l'ho inserito nel foglio e nel modulo
ho meso dei valori in B, C, D e..
funziona tutto
Ti invio il file
http://rapidshare.com/files/308209238/SommaConOpzione2.xls.html
Il CeckArea determina il/i range di intervento della macro
la riga di codice
Codice: Seleziona tutto
If Not Application.Intersect(ActiveCell, Range(CheckArea)) Is Nothing Then

sta a significare (è una doppia negazione) che se quella è l'area (o le aree) allora esegui...
la seconda condizione invece serve per selezionare un'area senza che si attivi la macro
Codice: Seleziona tutto
If (Selection.Rows.Count + Selection.Columns.Count) > 2 Then Exit Sub

Se le righe selezionate + le colonne selezionate sono maggiori di 2 allora non eseguire nulla
Il resto della macro penso sia chiaro...
Se la cella selezionata è diversa da 0 allora cancella altrimenti inserisci 1 (formattato con carattere Webdings)
e l'ultimo codice
Codice: Seleziona tutto
ActiveCell.Offset(0, 1).Select

Sposta la selezione di una colonna a destra (azione non visibile perché la macro calcola poi seleziona la cella del totale)

Questo tipo di selezione, tipo checkbox, venne pubblicata da Anthony tempo fa e ogni tanto ne faccio uso e la consiglio perché molto funzionale.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel]sommare se checkbox e' spuntato

Postdi Cedamido » 17/11/09 20:27

Cortesemente non riesco a copiare il link indicato (rapisard) potresti dirmi come si fa?
Grazie Cedamido
excel 2003
Cedamido
Utente Senior
 
Post: 314
Iscritto il: 17/08/08 23:26

Re: [excel]sommare se checkbox e' spuntato

Postdi angelcarl5 » 17/11/09 21:41

confermo l'errore su rapidshare, la traduzione dice che lo possono scaricare solo i premium
angelcarl5
Utente Junior
 
Post: 34
Iscritto il: 13/11/09 05:26

Re: [excel]sommare se checkbox e' spuntato

Postdi Flash30005 » 18/11/09 03:06

Con IE8 non c'è problema...(usate per caso Firefox?) :roll:
Immagine

comunque adesso ho cambiato server host
http://www.megaupload.com/?d=P1A78DOO

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel]sommare se checkbox e' spuntato

Postdi angelcarl5 » 18/11/09 07:06

era un problema temporaneo di rapidshare, infatti stamattina alle 4 me lo ha fatto scaricare senza problemi,

ho quest'altro problema,
ho delle righe che una volta che sono finite le operazioni,
le devo cancellare o vengono spostate sotto

faccio un esempio
G12 contiene il dato
G13 contiene il dato successivo

in A1c'è il dato relativo a G12, quindi ho messo A1=$G$12
ma se io cancello la riga 12 mi da questo problema A1 =#RIF!
se la sposto il contenuto in F2, il problema è che A1 mi segue la cella,

quindi come posso far leggere a A1 sempre la stessa cella G12 anche se io sposto o cancello la riga 12?
angelcarl5
Utente Junior
 
Post: 34
Iscritto il: 13/11/09 05:26

Re: [excel]sommare se checkbox e' spuntato

Postdi Flash30005 » 18/11/09 10:06

E' normale che togliendo la riga 12 la cella A1 con quella formula "perda" il riferimento
Puoi superare l'ostacolo attraverso due metodi
1) tramite formule
2) tramite macro

per il punto 1) potresti usare la funzione Indice in A1
Codice: Seleziona tutto
=INDICE(A1:G20;12;7)

ma ad ogni cancellazione di riga la matrice cambia da G20 a G19 e se hai diverse righe da eliminare alla fine andrà in errore, mentre questa
Codice: Seleziona tutto
=SCARTO(A1;11;6;;)
prenderà sempre il valore della 11ª riga dopo la 1 (riga 12) e la 6ª colonna dopo la A (=7 quindi G)

per il punto 2, attraverso una macro, andrai a copiare l'intero foglio e lo incolli su se stesso con incolla speciale solo valori ma a quseto punto, in quel foglio, non avrai più formule
Codice: Seleziona tutto
Sub CopiaValori()
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("A1").Select
End Sub


Utilizza quello che ritieni più opportuno

Ciao

P.s. se elimini la riga 12 nel foglio del "CheckBox" ricorda che la macro lavorerà sempre sull'area predefinita dalla riga 16 alla riga 22 indipendentemente da quante righe eliminerai.

Ciao
Flash
Win10 + Office 2010 Ita
"Fotografica" al servizio dell'immagine
Avatar utente
Flash30005
Moderatore
 
Post: 8517
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [excel] sommare se i riferimenti sono "spuntati" (=1)

Postdi angelcarl5 » 18/11/09 10:54

ottima quello dello scarto, le celle che ho messo nel post sono casuali,
nella realtà le righe che devo cancellare si trovano sotto dove lavora la macro,
quindi non interferiscono in alcun modo con la macro :lol:

grazie
ciao
angelcarl5
Utente Junior
 
Post: 34
Iscritto il: 13/11/09 05:26


Torna a Applicazioni Office Windows


Topic correlati a "[excel] sommare se i riferimenti sono "spuntati" (=1)":


Chi c’è in linea

Visitano il forum: Nessuno e 32 ospiti