Ciao. Vedi se questa macro fa quello che ti serve.
Per evitare operazioni distruttive, essa copia i dati in un altro foglio che poi manipola.
I dati vengono "Ordinati" per Nome, Codice, Codice articolo, e vengono lasciati in questo orine. Se e' un problema e si preferisce averli ordinati come in partenza, si puo' fare.
Modifica come necessario le impostazioni iniziali, in particolare il nome foglio di partenza.
- Codice: Seleziona tutto
Sub SAXASSOCIA()
'- - - - - IMPOSTAZIONI <<<< Modificare secondo situazione
FoglioDati = "Foglio3"
PrimaRiga = 13 'Riga con le intestazioni
'- - - - -
ActiveSheet.UsedRange.Select
UltimaColonna = ActiveSheet.UsedRange.Range("A1").Column + ActiveSheet.UsedRange.Columns.Count
Sheets(FoglioDati).Select
ActiveSheet.Copy After:=Sheets(Sheets.Count)
'ActiveSheet.Name = "Normalizz"
LastRow = Range("B65536").End(xlUp).Row
Range(Cells(PrimaRiga, 1), Cells(LastRow, UltimaColonna)).Select
Selection.Sort Key1:=Range("B14"), Order1:=xlAscending, Key2:=Range("C14" _
), Order2:=xlAscending, Key3:=Range("F14"), Order3:=xlAscending, Header _
:=xlYes, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, DataOption3:= _
xlSortNormal
For I = LastRow To PrimaRiga Step -1
Range("B1").Offset(I, 0).Select
If Selection.Value = Selection.Offset(-1, 0).Value And Selection.Offset(0, 1).Value = Selection.Offset(-1, 1).Value _
And Selection.Offset(0, 2).Value = Selection.Offset(-1, 2).Value And Selection.Offset(0, 4).Value = Selection.Offset(-1, 4).Value Then
Selection.Offset(-1, 3).Value = Selection.Offset(-1, 3).Value + Selection.Offset(0, 3).Value
Selection.EntireRow.Delete
End If
Next I
End Sub
Fai sapere, ciao.