Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

macro somma valori

Ultimo Aggiornamento: 31/10/2017 16:04
Post: 31
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
12/10/2017 10:52

ciao a tutti,

avrei bisogno un supporto per creare una macro, per spiegarmi meglio allego un foglio xls con scritto un commento su cosa devo ottenere.

qualcuno può' darmi un supporto ?

Grazie

Claudio

Post: 441
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
12/10/2017 15:37

Ciao Claudio
senza macro ma con una colonna d'appoggio (che puoi nascondere) fai così:
in F2 metti = A2
in G2 metti =SE($B$2:$B$11="chiuso";MATR.SOMMA.PRODOTTO(($A$2:$A$11=F2)*$C$2:$C$11);"")
seleziona G2:F2 e tira giù fino alla riga 11
Nascondi la colonna F ed il gioco è fatto.

Se invece vuoi VBA, chiedi di nuovo.
Ciao,
Mario
[Modificato da Marius44 12/10/2017 15:37]
Post: 443
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
12/10/2017 15:54

Ciao
se proprio vuoi VBA ecco il codice
Sub Somma()
ur = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ur
    If Cells(i, 2) = "chiuso" Then
        nticket = Cells(i, 1).Value
        For j = i To 2 Step -1
            If Cells(j, 1) = nticket Then
                mn = mn + Cells(j, 3).Value
                Cells(i, 10) = mn      '<== correggi il 10 col numero di colonna che vuoi
            End If
        Next j
        mn = 0
    End If
Next i
End Sub


Non ho dichiarato le variabili nè catturate eventuali errori. Pensaci tu.

Ciao,
Mario
Post: 31
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
13/10/2017 09:07

grazie MILLE!!!!

mi piacciono entrambe le soluzioni

grazie Mario ho imparato una cosa nuova

Claudio
Post: 32
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
24/10/2017 14:08

ciao

potresti darmi un supporto su una cosa che mi avevi già fatto, ma devo cambiare una regola e di conseguenza la formule/macro.

allego il foglio xls da cuoi si capisce cosa dovrei fare.

grazie
Claudio
Post: 453
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
24/10/2017 15:07

Ciao
la macro è uguale alla precedente solo che devi farla iniziare dalla riga precedente. Eccola
Sub Somma()
ur = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ur
    If Cells(i, 2) = "chiuso" Then
        nticket = Cells(i, 1).Value
        For j = i - 1 To 2 Step -1     'ho aggiunto il -1 dopo la i
            If Cells(j, 1) = nticket Then
                mn = mn + Cells(j, 3).Value
                Cells(i, 10) = mn      '<== correggi il 10 col numero di colonna che vuoi
            End If
        Next j
        mn = 0
    End If
Next i
End Sub


Come ho scritto basta aggiunge -1 nella riga For j = i

Ciao,
Mario
Post: 33
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
26/10/2017 15:13

ciao Mario, sei sempre gentile e preciso.

però mi sono spiegato male, ti riallego il foglio xls,

se lo stato ="chiuso" somma solo i minuti del gruppo "sire_1" e basta.

quindi va fatto il controllo sia sullo stato che sul gruppo.

Claudio
Post: 458
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
26/10/2017 16:14

Ciao

Sub Somma()
ur = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ur
    If Cells(i, 2) = "chiuso" Then
        nticket = Cells(i, 1).Value
        For j = i To 2 Step -1             '<== codice modificato
            If Cells(j, 1) = nticket And Cells(j, 3) = "SIRE_1" Then  '<== aggiunta della nuova condizione
                mn = mn + Cells(j, 6).Value
                Cells(i, 10) = mn      '<== correggi il 10 col numero di colonna che vuoi
            End If
        Next j
        mn = 0
    End If
Next i
End Sub


La macro è sempre la stessa ma con qualche modifica.
Ciao,
Mario
Post: 34
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
31/10/2017 10:30

macro somma valori
ciao allego il foglio xls con scritto all'interno la piccola modifica che mi servirebbe, ho provato a modificare il codice ma mi perdo in una stupidata.

Post: 461
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
31/10/2017 14:49

Ciao
La tua macro (a proposito, per una migliore condivisione, posta sempre il codice oltre, se proprio necessario, il file) è corretta tranne ...
una piccola sbavatura che ho provveduto a sistemare.
Indovina cosa ho cambiato. Ecco la macro corretta:
Sub sire1()
ur = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ur
    If Cells(i, 2) = "chiuso" Then
        nticket = Cells(i, 1).Value
        For j = i To 2 Step -1
            If Cells(j, 1) = nticket And Cells(j, 3) = "SIRE_1" Or Cells(j, 3) = "SIRE_2" Then
                mn = mn + Cells(j, 4).Value
                Cells(i, 7) = mn
            End If
        Next j
        mn = 0
    End If
Next i
End Sub

Mi sembra che così funziona.
Prova e fai sapere. Ciao,
Mario
Post: 35
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
31/10/2017 15:11

ciao , non somma correttamente.

provo a spiegarmi:

1)cancella tutti i valori nella colonna minuti.
2) valorizza solo la cella D2 e D3 metti i valori che vuoi ( DE appartiene al gruppo SIRE_1 e De al gruppo sire_2)
3) esegui la macro.

vedi che per gli altri n°tiket anche se non hai valorizzato i minuti, prendono il valore assegnato al gruppo SIRE_2 ( cioè D3)


Claudio

Post: 36
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
31/10/2017 15:19

Mario, ho risolto così:

ur = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ur
If Cells(i, 2) = "chiuso" Then
nticket = Cells(i, 1).Value
For j = i To 2 Step -1
If Cells(j, 1) = nticket And Cells(j, 3) = "SIRE_1" Then
mn = mn + Cells(j, 4).Value
Cells(i, 7) = mn
End If

If Cells(j, 1) = nticket And Cells(j, 3) = "SIRE_2" Then
mn = mn + Cells(j, 4).Value
Cells(i, 7) = mn
End If
Next j
mn = 0
End If
Next i
Post: 462
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
31/10/2017 16:04

Ciao
Nella fretta avevo ricopiato la tua macro.
Quella corretta è questa
Sub Marius44()
ur = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To ur
    If Cells(i, 2) = "chiuso" Then
        nticket = Cells(i, 1).Value
        For j = i To 2 Step -1
            If Cells(j, 1) = nticket And (Cells(j, 3) = "SIRE_1" Or Cells(j, 3) = "SIRE_2") Then
                mn = mn + Cells(j, 4).Value
                Cells(i, 7) = mn
            End If
        Next j
        mn = 0
    End If
Next i
End Sub


Come potrai notare le due condizioni SIRE_1 e SIRE_2 devono stare entro le parentesi.

Prova e fai sapere. Ciao,
Mario
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 02:13. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com