Condividi:        

[EXCEL] Macro per somma valori con determinati criteri

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] Macro per somma valori con determinati criteri

Postdi zeok » 03/01/12 17:55

Salvo, sono nuovo del forum. Vi ho scoperto casualmente grazie a google perchè cercavo una soluzione per il mio quesito.

Prima di tutto, il file di prova:
http://dl.dropbox.com/u/6279369/Esempio.xls

Cerco di essere chiaro:
- Nella colonna A sono presenti le attività lavorative. Come potete notare alcune iniziano con un numero (es. XX - nomeattività; XXX - nomeattività), altre invece no (nomeattività).
- Nella colonna B invece sono indicate le corrispettive ore.

Io vorrei ottenere questo, tramite l'utilizzo di una macro:
- Avere nella colonna F l'elenco delle attività presenti nella colonna A che iniziano con il NUMERO. Specifico che che nella colonna F non si devono ripetere. Inoltre, la macro dovrebbe considerare le celle vuote presenti nella A;
- Nella colonna G, per ogni attività, dovrebbe essere visualizzata la somma delle ore.

Fino ad ora, utilizzavo la funzione "Tabella Pivot" per ottenere ciò.

Spero di essere stato chiaro, in caso mi scuso.

Grazie in anticipo :)
zeok
Newbie
 
Post: 6
Iscritto il: 03/01/12 17:36

Sponsor
 

Re: [EXCEL] Macro per somma valori con determinati criteri

Postdi Flash30005 » 03/01/12 21:35

Ciao Zeok e benvenuto nel Forum

prova questa macro
Codice: Seleziona tutto
Sub CreaElencoESomma()
Dim WS1 As Worksheet
Set WS1 = Worksheets("Foglio1")
UR1 = WS1.Range("A" & Rows.Count).End(xlUp).Row
If UR1 < 2 Then UR1 = 2
UR2 = WS1.Range("F" & Rows.Count).End(xlUp).Row
If UR2 < 2 Then UR2 = 2
WS1.Range("F1:G" & UR2).ClearContents
For RR1 = 1 To UR1
    Esiste = 0
    Cli1 = WS1.Range("A" & RR1).Value
    If Cli1 <> "" Then
        If Asc(Mid(Cli1, 1, 1)) >= 48 And Asc(Mid(Cli1, 1, 1)) <= 57 Then
            For RR2 = 2 To UR2
                Cli2 = WS1.Range("F" & RR2).Value
                If Cli1 = Cli2 Then
                    Esiste = 1
                    WS1.Range("G" & RR2).Value = WS1.Range("G" & RR2).Value + WS1.Range("B" & RR1).Value
                End If
            Next RR2
            If Esiste = 0 Then
                WS1.Range("A" & RR1).Copy Destination:=WS1.Cells(Rows.Count, 6).End(xlUp).Offset(1, 0)
                WS1.Cells(Rows.Count, 7).End(xlUp).Offset(1, 0).Value = WS1.Cells(Rows.Count, 7).End(xlUp).Offset(1, 0).Value + WS1.Range("B" & RR1).Value
            End If
        End If
    End If
Next RR1
End Sub


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] Macro per somma valori con determinati criteri

Postdi zeok » 03/01/12 21:55

Prima di tutto, grazie mille per l'interessamento.

Ho provato subito a testarla però funziona parzialmente.
Sempre considerando l'esempio proposto, quando eseguo la macro mi copia i seguenti valori:
02 - b 3
350 - c 3
350 - c 2

perciò:
- a non viene CORRETTAMENTE copiato ed è perfetto
- 02 -b compare una sola volta e viene eseguita la somma
- Invece per quanto riguarda 350 - c non viene eseguita la somma e compare due vole. L'unico problem.

Ora me la guardo meglio che magari c'è qualcosa di semplice da sistemare (se ci arrivo xD)
zeok
Newbie
 
Post: 6
Iscritto il: 03/01/12 17:36

Re: [EXCEL] Macro per somma valori con determinati criteri

Postdi Flash30005 » 03/01/12 22:01

Assolutamente no!

io ho preso il tuo file e non presenta quel valore due volte
controlla bene perché c'è differenza tra
"350 - c"
e
"350 - c "

eventuali spazi alla fine della stringa
se ci sono molte stringhe spurie puoi adottare la funzione Trim
in queste due righe codice

Codice: Seleziona tutto
For RR1 = 1 To UR1
    Esiste = 0
    Cli1 = Trim(WS1.Range("A" & RR1).Value)  '<<<<<<<<<<<<<<< modificare con Trim
    If Cli1 <> "" Then
        If Asc(Mid(Cli1, 1, 1)) >= 48 And Asc(Mid(Cli1, 1, 1)) <= 57 Then
            For RR2 = 2 To UR2
                Cli2 = Trim(WS1.Range("F" & RR2).Value)  '<<<<<<<<<<< modificare con Trim
                If Cli1 = Cli2 Then
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] Macro per somma valori con determinati criteri

Postdi zeok » 04/01/12 09:07

Che stupido, hai ragione, c'era uno spazio, pardon.

Ora lo adatto ad un altro foglio di lavoro
zeok
Newbie
 
Post: 6
Iscritto il: 03/01/12 17:36


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Macro per somma valori con determinati criteri":


Chi c’è in linea

Visitano il forum: marcoc e 60 ospiti

cron