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

macro somma celle di valori duplicati

Ultimo Aggiornamento: 07/03/2017 10:39
Post: 1
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
02/03/2017 10:32

ciao a tutti
sapreste aiutarmi a creare una macro che esegua questo ?

nella colonna A (commesse ) colonna B ( lotto ) colonna c ( ore )

commessalotto ore
A 21 3
B 65 4
A 21 5
A 22 6
E 55 7
D 24 8
D 23 9
D 24 10

la macro dovrebbe restituirmi i valori i valori univoci con le somme delle ore.
cio' i valori duplicati della colonna A associati ai valori duplicati della colonna vanno sommate le ore. come se fosse una pivot, ma non voglio fare una macro che esegua una pivot.
il risultato sopra dovrebbe essere:

commessalotto ore
A 21 8
A 22 6
B 65 4
E 55 7
D 24 18
D 23 9
grazie
Claudio
Post: 3.738
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
02/03/2017 17:32

Sub lotto()
LR = Cells(Rows.Count, "A").End(xlUp).Row
Range("A1:C" & LR).Copy Range("E1")
With ActiveSheet.Sort
      .SortFields.Clear
      .SortFields.Add Key:=Range( _
        "E2:E" & LR), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
      .SortFields.Add Key:=Range( _
        "F2:F" & LR), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
      .SetRange Range("E1:G" & LR)
      .Header = xlYes
      .MatchCase = False
      .Orientation = xlTopToBottom
      .SortMethod = xlPinYin
      .Apply
End With
r = 3
While Cells(r, "E") <> ""
  If Cells(r, "E") = Cells(r - 1, "E") And Cells(r, "F") = Cells(r - 1, "F") Then
    Cells(r - 1, "G").Value = Cells(r - 1, "G").Value + Cells(r, "G").Value
    Range("E" & r + 1 & ":G" & LR).Cut Cells(r, "E")
  End If
  r = r + 1
Wend
End Sub


----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 2.572
Registrato il: 03/04/2013
Utente Veteran
Excel 2000 - 2013
OFFLINE
03/03/2017 09:42

Buona giornata, C.Luinetti;
leggo solo ora.

La mia proposta è:
- un pò di VBA
Option Explicit

Sub Analizza()
Application.ScreenUpdating = False
    Range("$E$1:$F$8").ClearContents
    Range("A1:B8").Copy Range("E1")
    ActiveSheet.Range("$E$1:$F$8").RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("E1:E8"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("E1:F8")
        .Apply
    End With
Application.CutCopyMode = False
    Cells(1, 1).Select
End Sub

- in Cella "G1", la Formula
 =SE($E1="";"";SOMMA.PIÙ.SE($C$1:$C$8;$A$1:$A$8;$E1;$B$1:$B$8;$F1)) 

da copiare nelle Celle sottostanti.
L'applicazione delle Formule può essere automatizzata implementando il Codice VBA; dipende dal reale numero di Record da valutare.



A disposizione.

Buon Lavoro e buona serata.

Giuseppe

Windows XP - Excel 2000
Windows 10 - Excel 2013
Post: 1
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
06/03/2017 10:56

macro somma celle di valori duplicati
Grazie Patel45 e GiuseppeMN per il vostro aiuto.

sto adattando la soluzione scritta da Patel45 che è perfetta per la mia esigenza.

Patel45, ti allego il mio foglio xls perchè avrei un piccolo problemino.

io compilo regolarmente le colonne (Commessa, lotto e ore ) evidenziate in giallo.

La tua macro poi mi esegue un riassunto riportando la somma delle ore per le commesse e lotti uguali e scrivendo questi una sola volta. ( questo è lo scopo )

ma la macro è come se lavorasse a coppie di celle, se ho 3 valori uguali di commesse e lotti non li raggruppa.

se guardi il mio esempio lo capisci subito.
guarda le celle evidenziate il blu, sarebbero dovute essere raggruppatein una sola riga ( perchè commessa e lotto uguali ) con la rispettiva somma delle ore, invece lo ha fatto solo per le prime due commesse/lotto


nella macro è messo qualche registrazione per impaginare il risultato finale.
grazie

Claudio

Post: 3.753
Registrato il: 13/03/2012
Città: LIVORNO
Età: 78
Utente Master
2010
OFFLINE
06/03/2017 17:19

prova così
While Cells(r, "M") <> ""
  If Cells(r, "M") = Cells(r - 1, "M") And Cells(r, "N") = Cells(r - 1, "N") Then
    Cells(r - 1, "O").Value = Cells(r - 1, "O").Value + Cells(r, "O").Value
    Range("M" & r + 1 & ":O" & LR).Cut Cells(r, "M")
  Else
    r = r + 1
  End If
Wend

----------
Win 10 - Excel 2010
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Post: 2
Registrato il: 30/06/2016
Città: MILANO
Età: 48
Utente Junior
2013
OFFLINE
07/03/2017 10:39

macro somma celle di valori duplicati
grazie mille Patel45

la macro esegue esattamente ciò che volevo.

Claudio
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 15:17. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com