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

macro valori duplicati

Ultimo Aggiornamento: 30/10/2016 11:52
Post: 247
Registrato il: 08/01/2012
Città: MILANO
Età: 56
Utente Junior
excel 2000/2007
OFFLINE
29/10/2016 13:08

Ciao a tutti.
Un aiuto per una macro che elimini i valori duplicati di 1 colonna.
Nel file di esempio i valori della colonna D3:D40000 devono essere incollati nella colonna H3:H40000 univoci.
La mcro deve essere veloce perche i dati nella colonna sono più di 30000 righe.
Deve funzionare su excel 2003/2006.
Un grazie in anticipo.
patrik
[Modificato da patrik01 29/10/2016 13:13]
------------------
excel 2003 / 20007
Post: 2.364
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
29/10/2016 15:15

Ciao Patrick

Scusa ma perchè richiedi una macro quando puoi selezionare l''intervallo e poi dal menù Dati scegli Rimuovi Duplicati?

Al limite mentre lo fai registri la macro.

O c'è qualcosa che mi sfugge?

Alfredo
Post: 396
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
29/10/2016 15:32

Se proprio hai bisogno di copiare i dati univoci in un'altra colonna puoi utilizzare una macro così:
Option Explicit

Sub Copia_No_Duplicati()

    Dim ur As Long

    ur = Range("D" & Rows.Count).End(xlUp).Row
    Range("D3:D" & ur).Copy Destination:=Range("H3")
    Range("H3:H" & ur).RemoveDuplicates Columns:=1, Header:=xlNo

End Sub

Opps, ciao alfrimpa, come sempre non mi preoccupo mai di fare un refresh prima di postare [SM=g27823]


PS. solo ora mi rendo conto che la macro non potrà funzionare con Excel 2K3 dato che non implementava il "RemoveDuplicates".
[Modificato da rollis13 29/10/2016 16:08]

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 2.365
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Veteran
Excel 365
OFFLINE
29/10/2016 15:40

Ciao Rolando nessun problema [SM=g27828]

Alfredo
Post: 397
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
29/10/2016 17:08

Con Excel 2K3 potrebbe andar bene questa:
Sub Copia_No_Duplicati_3()

    Dim ur As Long      'ultima riga utile
    Dim x As Long       'contatore generico
    
    ur = Range("D" & Rows.Count).End(xlUp).Row
    Range("D3:D" & ur).Copy Destination:=Range("H3")
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    For x = ur To 3 Step -1             'retrocedi fino alla riga 3
        If Application.WorksheetFunction.CountIf(Range("H3:H" & x), Range("H" & x)) > 1 Then Range("H" & x).Delete
    Next x
    Application.ScreenUpdating = True
    Application.Calculation = xlCalculationAutomatic
    
End Sub

ma se i dati sono proprio tanti forse torna utile gestire l'elaborazione in una matrice.

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 247
Registrato il: 08/01/2012
Città: MILANO
Età: 56
Utente Junior
excel 2000/2007
OFFLINE
29/10/2016 17:58

Grazie a tutti.
Una modifica:
se i dati da "univocare" devono essere incollati da foglio1 a foglio2
con 2 colonne?ù
Nell'esempio postato:
Incollare nelle colonne A/B del foglio2 i dati del foglio1 della colonna D/M univoci.
patrik
------------------
excel 2003 / 20007
Post: 248
Registrato il: 08/01/2012
Città: MILANO
Età: 56
Utente Junior
excel 2000/2007
OFFLINE
29/10/2016 21:48

Ciao,
non riesco a modificare la macro di rollis perchè funzioni in 2 fogli.
Posto l'esempio.
patrik
[Modificato da patrik01 29/10/2016 21:50]
------------------
excel 2003 / 20007
Post: 398
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
29/10/2016 22:46

Data la mole di dati da elaborare/confrontare forse è il caso di usare una gestione con matrice altrimenti i tempi potrebbero risultare smisurati.

In ogni caso, che rapporto c'è tra i dati delle due colonne D e M ? sono legati tra loro o si tratta di riportare nel Foglio2 i dati univoci delle singole colonne rispettivamente in A e B ?

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 249
Registrato il: 08/01/2012
Città: MILANO
Età: 56
Utente Junior
excel 2000/2007
OFFLINE
29/10/2016 23:09

Ciao rollis,
bisogna riportare i dati delle colonne D/M del foglio "pannelli" nelle colonne A/B del foglio2 univoci.
Nella colonna C del foglio2 c'è una formula che dovrebbe riportare la
quantità dei valori ripeuti. Alla fine devo inserire una macro che
ordina descrescente i valori della colonna C.
spero di essermi spiegato.
patrik
------------------
excel 2003 / 20007
Post: 399
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Senior
Excel 2016-32bit Win11
OFFLINE
30/10/2016 00:13

Non hai chiarito se c'è un legame tra i di dati nel foglio "pannelli" colonna D e M e pertanto li considero svincolati uno dall'altro.
Puoi usare questa macro:
Option Explicit

Sub Copia_No_Duplicati()

    Dim ur As Long          'ultima riga utile
    Dim cella As Range      'cella elaborata
    Dim a()                 'matrice
    Dim n As Long           'contatore per matrice
    
    'elabora colonna D
    ur = Sheets("pannelli").Range("D" & Rows.Count).End(xlUp).Row
    ReDim a(1 To ur - 1, 1 To 1)
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For Each cella In Sheets("pannelli").Range("D3:D" & ur)
            If Not .Exists(cella.Value) Then
                n = n + 1
                a(n, 1) = cella.Value
                .Item(cella.Value) = Empty
            End If
        Next
    End With
    Sheets("Foglio2").Range("A3:A" & ur).Value = a

    'elabora colonna M
    ur = Sheets("pannelli").Range("M" & Rows.Count).End(xlUp).Row
    n = 0
    ReDim a(1 To ur - 1, 1 To 1)
    With CreateObject("Scripting.Dictionary")
        .CompareMode = 1
        For Each cella In Sheets("pannelli").Range("M3:M" & ur)
            If Not .Exists(cella.Value) Then
                n = n + 1
                a(n, 1) = cella.Value
                .Item(cella.Value) = Empty
            End If
        Next
    End With
    Sheets("Foglio2").Range("B3:B" & ur).Value = a

End Sub

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 250
Registrato il: 08/01/2012
Città: MILANO
Età: 56
Utente Junior
excel 2000/2007
OFFLINE
30/10/2016 08:47

Ciao rollis,
infatti non ti ho specificato che le colonne D/M sono vincolate e il risultato finale non è esatto [SM=g27826].
patrik
------------------
excel 2003 / 20007
Post: 907
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
30/10/2016 10:19

Re:
patrik01, 29/10/2016 23.09:

Ciao rollis,
bisogna riportare i dati delle colonne D/M del foglio "pannelli" nelle colonne A/B del foglio2 univoci.
Nella colonna C del foglio2 c'è una formula che dovrebbe riportare la
quantità dei valori ripeuti. Alla fine devo inserire una macro che
ordina descrescente i valori della colonna C.
spero di essermi spiegato.
patrik


Ciao
personalmente non trovo chiaro quanto detto relativamente alla colonna C. Una volta copiati in A/B i dati "univoci", la tua formula prende in considerazione solo i valori di A(foglio2) corrispondenti a D (Pannelli), pertanto il vincolo D-M non viene rispettato ??

Chiarito questo, la macro potrebbe farsi anche carico di tale dato evitando l'inserimento di formule.

saluti

Domenico
Win 10 - Excel 2016
Post: 251
Registrato il: 08/01/2012
Città: MILANO
Età: 56
Utente Junior
excel 2000/2007
OFFLINE
30/10/2016 10:39

Ciao domenico.
La formula nella colonna C del foglio2:
=SE(A3="";"";SOMMA.SE(pannelli!$D$3:D$40000;A3;pannelli!$N$3:$N$40000))
se è esatta somma la quantità dei valori della colonna N del foglio pannelli riferita alla colonna A del foglio2.
patrik
------------------
excel 2003 / 20007
Post: 908
Registrato il: 06/04/2013
Utente Senior
2010
OFFLINE
30/10/2016 11:52

Ciao (la mia è solo curiosità...sei in ottime mani)

quindi non considera il vincolo D-M (era questa la domanda), in quanto sommerà per esempio i valori di "N" di tutti gli "1" a prescindere che siano 1-A oppure 1-U ecc ecc

saluti
Domenico
Win 10 - Excel 2016
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 14:02. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com