Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

Unione file dati e eliminazione doppioni con criterio

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Unione file dati e eliminazione doppioni con criterio

Postdi cd7019 » 12/01/14 20:35

ciao,

Vorrei unire diversi files di EXCEL situati in una directory (il n° può essere variabile) ed eliminare le righe doppie.
Non devo considerare le prime 3 righe di ogni singolo file (intestazione dati).

esempio:
A B C
...
R55: MELA 500 TO
...
R99: MELA 300 BO
...
R150: MELA 200 _
...

R22: BANANA 40 RV
...
R44: BANANA 12 _
...
R350: BANANA 200 TV
...
R390: BANANA 2400 AN

Eliminare le righe 55 - 99 (MELA), 22 - 350 - 390 (BANANA), ECC... perchè hanno nella colonna C dei caratteri diversi da "_"


Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Sponsor
 

Re: Unione file dati e eliminazione doppioni con criterio

Postdi ricky53 » 13/01/14 00:34

Ciao,
dopo aver unito tutti i file presenti nella tua directory in un
"solo foglio di un nuovo file"
se non ho capito male non si tratta di "eliminare doppioni" come da te riportato nel titolo ma di
eliminare tutte le righe che in colonna "C" hanno caratteri diversi da "_"

E' così?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Unione file dati e eliminazione doppioni con criterio

Postdi cd7019 » 13/01/14 14:12

non proprio,
perchè se è presente una sola riga con colonna "C" diversa da"_" non deve essere cancellata.
il mio criterio con carattere "_" lo posso modificare manualmente tutte le volte.
L'ideale sarebbe di mettere n°2 criteri, ad esempio colonna "C": con "_" e "TV" non cancellare e cancellare tutte le altre, se ci fossero solo 1 o 2 caratteri qualsiasi non cancellare niente, invece se ci fossero 3 catteri ad esempio "_", "TO", "TV" cancellare la riga con "TO".

grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Unione file dati e eliminazione doppioni con criterio

Postdi ricky53 » 13/01/14 16:16

Ciao,
definisci tutte le regole per cui va cancellata la riga e poi iniziamo.
Riportale tutte di seguito, anche quelle già scritte prima.

E' importante un file di esempio, senza dati riservati, che sia esaustivo di tutte le regole che tu esporrai.

A presto
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Unione file dati e eliminazione doppioni con criterio

Postdi cd7019 » 13/01/14 17:47

PROCEDURA SEMPLIFICATA:
a) unire i diversi files che si trovano in una directory (non conosco il n° di files e il n° di righe di ogno singolo files) prendendo dalla 3° riga in poi.
b) Li unisco in un unico file, togliendo le righe vuote
c) per semplificare il programma alla fine desidero per ogni prodotto della colonna A (mela, banana, ecc... ) abbia una sola riga.
d) inserire nella cella C1 il carattere desiderato, ad esempio: "_"
e) Se ci sono più righe, dello stesso prodotto, conservare solo quello con carattere "_" presente nella cella C1.
f) Se ci sono più righe, dello stesso prodotto, e non compare il carattere "_" conservare la prima riga e cancellare le altre
g) alla fine dovrò avere una sola riga x ogni prodotto (colonna A)
h) inoltre, eliminare tutte le righe in cui nella colonna A sono presenti dei numeri.

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Unione file dati e eliminazione doppioni con criterio

Postdi ricky53 » 13/01/14 18:20

Bene,
manca solo il file di esempio e che sia il più esaustivo possibile.

Tu utilizzi EXCEL in versione 2003. Confermi?
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Unione file dati e eliminazione doppioni con criterio

Postdi cd7019 » 13/01/14 18:41

[img]C:\ESEMPIO.jpg[/img]
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Unione file dati e eliminazione doppioni con criterio

Postdi ricky53 » 13/01/14 18:51

Ciao,
non è il modo corretto di allegare un'immagine. L'immagine deve essere depositata su un server che faccia hosting preee

Comunque un'immagine NON è utile.
Il file di esempio ci serve per fare le prove e ... NON ci vorrai chiedere di costruircelo da soli pensa solo agli errori che potremmo commettere!

Per allegare un file leggi QUI
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Unione file dati e eliminazione doppioni con criterio

Postdi cd7019 » 13/01/14 19:05

I files devono ancora essere creati, gli esempi che ho riportato sono delle esemplificazioni,
in base alle vostre indicazioni andrò poi ad adattare al programma definitivo.

a me servirebbero i comandi per effettuare i vari passaggi sequenziali, senza badare ad eventuali errori, che gestirò personalmente.

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Unione file dati e eliminazione doppioni con criterio

Postdi ricky53 » 13/01/14 19:07

Cortesemente ed anche per avvantaggiarti puoi predisporne uno e ci lavoriamo sopra insieme.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Unione file dati e eliminazione doppioni con criterio

Postdi Flash30005 » 13/01/14 19:11

Prova questa macro inserendola in un nuovo file al quale darai il nome (come vuoi)
mentre chiamerai il Foglio1 "Indice" (sarà il foglio destinazione)
poi salvalo nella stessa cartella (directory) dei file.xls con i dati
poi apri il file che hai creato e lanci la macro "MakeIndex"
Codice: Seleziona tutto
Sub MakeIndex()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Worksheets("Indice").Cells.ClearContents
myDir = ThisWorkbook.Path & "\"
NSumm = ActiveWorkbook.Name
myFile = Dir(myDir & "*.xls?")
Do While myFile <> ""
    If myFile = ThisWorkbook.Name Then GoTo nextF
    Workbooks.Open (myDir & myFile)
    For FF = 1 To Worksheets.Count
        URIE = Workbooks(NSumm).Worksheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row + 1
        UROr = Workbooks(myFile).Sheets(FF).Cells(Rows.Count, 1).End(xlUp).Row
        Workbooks(myFile).Sheets(FF).Range("A4:C" & UROr).Copy Destination:=Workbooks(NSumm).Sheets("Indice").Cells(URIE, 1)
    Next FF
    ActiveWorkbook.Close savechanges = False
nextF:
    myFile = Dir
Loop
URIE = Workbooks(NSumm).Worksheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row
For RR1 = URIE To 2 Step -1
    NomeV = Worksheets("Indice").Range("A" & RR1).Value
    If IsNumeric(NomeV) Then Rows(RR1).Delete
Next RR1

For RR1 = 2 To URIE - 1
    NomeV = UCase(Worksheets("Indice").Range("A" & RR1).Value)
    For RR2 = URIE To RR1 + 1 Step -1
        NomeC = UCase(Worksheets("Indice").Range("A" & RR2).Value)
        If NomeV = NomeC Then
            If Worksheets("Indice").Range("C" & RR1).Value = "-" Then
                Rows(RR2).Delete
            Else
                If Worksheets("Indice").Range("C" & RR2).Value = "-" Then
                    Rows(RR1).Delete
                    RR1 = RR1 - 1
                Else
                    Rows(RR2).Delete
                End If
            End If
        End If
    Next RR2
Next RR1

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Unione file dati e eliminazione doppioni con criterio

Postdi cd7019 » 13/01/14 19:22

EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Unione file dati e eliminazione doppioni con criterio

Postdi ricky53 » 13/01/14 19:23

Ciao,
grazie,
questa sera provo .. nella speranza che quanto ti ha inviato Flash ti risolva la questione ... così fatico di meno !!!
... facezie a parte ci provo.

A questa sera.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Unione file dati e eliminazione doppioni con criterio

Postdi Flash30005 » 13/01/14 19:38

Credo che aggiungendo una riga codice dove indicato la macro elimini le righe vuote che non avevo considerato
Codice: Seleziona tutto
'...
If IsNumeric(NomeV) Then Rows(RR1).Delete '<<<<< esistente
If NomeV = "" Then Rows(RR1).Delete '<<<<<< aggiungere qui
Next RR1  '<<<< esistente


ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Unione file dati e eliminazione doppioni con criterio

Postdi cd7019 » 13/01/14 22:09

Grazie mille.
ho provato e funziona correttamente, però con parecchie righe (ho provato a scrivere 10000 righe con copia-incolla) il computer si blocca, non si potrebbe ordinare 1°) la colonna A e 2°) la colonna C e cancellare le righe in modo progressivo da R10000 a R4? Così non uso dei for next nidificati.

Scusa, ma il mio computer ha già parecchi anni.

Grazie
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38

Re: Unione file dati e eliminazione doppioni con criterio

Postdi ricky53 » 14/01/14 00:43

Ciao,
per velocizzare, se le righe sono effettivamente un numero rilevante, si potrebbe lavorare con le array.
Vedo di buttare giù qualcosa.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W7; Office 2003-10-13-16
Avatar utente
ricky53
Utente Senior
 
Post: 4223
Iscritto il: 11/04/09 19:29
Località: Italia

Re: Unione file dati e eliminazione doppioni con criterio

Postdi Flash30005 » 14/01/14 07:07

Prova questa macro che ordina le righe prima dell'eliminazione in maniera da togliere, in un colpo solo, le righe vuote (lasciandole in fondo) e, inoltre, elimina le righe numeriche durante il processo facendo a meno di un for next.
Codice: Seleziona tutto
Sub MakeIndex()
Application.ScreenUpdating = False
Application.Calculation = xlManual
Worksheets("Indice").Cells.ClearContents
myDir = ThisWorkbook.Path & "\"
NSumm = ActiveWorkbook.Name
myFile = Dir(myDir & "*.xls?")
Do While myFile <> ""
    If myFile = ThisWorkbook.Name Then GoTo nextF
    Workbooks.Open (myDir & myFile)
    For FF = 1 To Worksheets.Count
        URIE = Workbooks(NSumm).Worksheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row + 1
        UROr = Workbooks(myFile).Sheets(FF).Cells(Rows.Count, 1).End(xlUp).Row
        Workbooks(myFile).Sheets(FF).Range("A4:C" & UROr).Copy Destination:=Workbooks(NSumm).Sheets("Indice").Cells(URIE, 1)
    Next FF
    ActiveWorkbook.Close savechanges = False
nextF:
    myFile = Dir
Loop
URIE = Workbooks(NSumm).Worksheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row
    Columns("A:C").Select
    ActiveWorkbook.Worksheets("Indice").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Indice").Sort.SortFields.Add Key:=Range("A3:A45") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Indice").Sort
        .SetRange Range("A2:C" & URIE)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Range("A2").Select


URIE = Workbooks(NSumm).Worksheets("Indice").Cells(Rows.Count, 1).End(xlUp).Row

For RR1 = 2 To URIE - 1
    NomeV = UCase(Worksheets("Indice").Range("A" & RR1).Value)
        If IsNumeric(NomeV) Then
        Rows(RR1).Delete
        RR1 = RR1 - 1
        GoTo SaltaRR1
        End If
    For RR2 = URIE To RR1 + 1 Step -1
        NomeC = UCase(Worksheets("Indice").Range("A" & RR2).Value)
        If IsNumeric(NomeC) Then
        Rows(RR2).Delete
        GoTo SaltaRR2
        End If
        If NomeV = NomeC Then
            If Worksheets("Indice").Range("C" & RR1).Value = "-" Then
                Rows(RR2).Delete
            Else
                If Worksheets("Indice").Range("C" & RR2).Value = "-" Then
                    Rows(RR1).Delete
                    RR1 = RR1 - 1
                    GoTo SaltaRR1
                Else
                    Rows(RR2).Delete
                End If
            End If
        End If
SaltaRR2:
    Next RR2
SaltaRR1:
Next RR1

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub


Ciao

NB.: Non devi copiare e incollare i dati sul foglio perché provvede la macro a copiare tutti i dati dei file contenuti nella cartella.
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: Unione file dati e eliminazione doppioni con criterio

Postdi cd7019 » 15/01/14 11:14

ciao,

mi produce errori alle righe:
ActiveWorkbook.Worksheets("Indice").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Indice").Sort.SortFields.Add Key:=Range("A3:A45") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

posso sostituirla con
Range("A3:A45").Sort Key1:=Range("A2"), Order1:=xlAscending, Key2:=Range("C2") _
, Order2:=xlAscending, Header:=xlYes, OrderCustom:=1, MatchCase:=False _
, Orientation:=xlTopToBottom

il comando dovrebbe semplicemente ordinare le righe.

GRAZIE
EXCEL 2003
cd7019
Utente Senior
 
Post: 232
Iscritto il: 26/06/12 21:38


Torna a Applicazioni Office Windows


Topic correlati a "Unione file dati e eliminazione doppioni con criterio":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti