Elimina record doppi più vecchi

Versione Completa   Stampa   Cerca   Utenti   Iscriviti     Condividi : FacebookTwitter
aikon36482
00martedì 24 maggio 2016 15:27
Buongiorno,
avrei bisogno di una macro che elimini i duplicati da una lista di dati secondo il criterio della data più recente.
Grazie.

cromagno
00martedì 24 maggio 2016 15:44
Ciao,
hai provato a fare qualcosa in VBA o è una richiesta "chiavi in mano"?

P.S.
Puoi ottenere la stessa cosa anche con le formule in due colonne a fianco o i doppioni nei dati iniziali devono essere necessariamente eliminati?

P.P.S.
Per capire meglio... devono rimanere i dati con la data più recente o il contrario?

Ciao

aikon36482
00martedì 24 maggio 2016 16:16
Ho provato una macro che elimina i duplicati ma non so come inserire l'altra condizione affinché mantenga il più recente.
cromagno
00martedì 24 maggio 2016 16:20
Re:
aikon36482, 24/05/2016 16.16:

Ho provato una macro che elimina i duplicati ma non so come inserire l'altra condizione affinché mantenga il più recente.



Ok,
allega la macro che hai usato (o allega di nuovo il file con la macro all'interno) e vediamo se si può integrare quella. [SM=g27822]
aikon36482
00mercoledì 25 maggio 2016 05:10
'Seleziono le celle su cui lavorare
Range("A2:B10").Select
'Ordino la colonna A
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

Set currentCell = Worksheets("Foglio1").Range("A1")

Do While Not IsEmpty(currentCell)
Set nextCell = currentCell.Offset(1, 0)
If nextCell.Value = currentCell.Value Then
currentCell.EntireRow.Delete
End If
Set currentCell = nextCell
Loop

Range("A1").Select


ninai
00mercoledì 25 maggio 2016 07:14
ciao a tutti

un approccio con formule potrebbe essere:
in A2:
=SE.ERRORE(INDICE(Foglio1!$A$1:$A$9;CONFRONTA(0;INDICE(CONTA.SE($A$1:A1;Foglio1!$A$1:$A$9););0));"")
la limitazione è che non puoi mettere la formula nella riga 1


in B2:
=MAX(INDICE((Foglio1!$A$1:$A$9=A2)*Foglio1!$B$1:$B$9;))

se l'elenco univoco lo estrai con macro, puoi usare solo la seconda formula

cromagno
00mercoledì 25 maggio 2016 12:39
Ciao a tutti,
premetto che io userei la formula di ninai (un saluto)...

questo potrebbe essere un codice (lungo perchè ho voluto usare una collection per i dati univoci e una matrice per archiviare temporaneamente i dati finali):

Sub Elimina()
Dim uRiga As Long, Univoci As Collection, i As Long, j As Long, Dati(), data

Set Univoci = New Collection
uRiga = Range("A" & Rows.Count).End(xlUp).Row

On Error Resume Next
For i = 1 To uRiga
    Univoci.Add Range("A" & i).Value, Key:=CStr(Range("A" & i).Value)
Next i
On Error GoTo 0

ReDim Dati(1 To Univoci.Count, 1 To 2)

For i = 1 To Univoci.Count
    data = ""
    For j = 1 To uRiga
        Dati(i, 1) = Univoci(i)
        If CStr(Range("A" & j).Value) = Univoci(i) Then
            If data <> "" Then
                data = IIf(Range("B" & j).Value > data, Range("B" & j).Value, data)
            Else
                data = Range("B" & j).Value
            End If
            Dati(i, 2) = data
        End If
    Next j
Next i

Range("A1:B" & uRiga).ClearContents

For i = 1 To UBound(Dati)
    Range("A" & i).Value = Dati(i, 1)
    Range("B" & i).Value = Dati(i, 2)
Next i

Set Univoci = Nothing
Erase Dati
End Sub


Questa è la versione 'lo-fi' del Forum Per visualizzare la versione completa clicca qui
Tutti gli orari sono GMT+01:00. Adesso sono le 08:33.
Copyright © 2000-2024 FFZ srl - www.freeforumzone.com