Pagina 1 di 1

Unire 2 file e cancellare i doppioni

Inviato: sabato 16 settembre 2023, 10:27
da Ricsca
Ho 2 file calc con una lista di professionisti e dei campi aggiuntivi nelle varie colonne a fianco (nome, anno, email, iscrizione ecc.).
Un file ha poco più di 38.000 righe e l'altro poco più di 10.000
I professionisti nel secondo file hanno più informazioni (quini colonne) e devo sostituirli a quelli del primo file.
Avete idee su come potrei fare?
La prima cosa che mi viene in mente sarebbe quella di:

- Unire i 2 file;
- Ordinare i le righe della colonna A per ordine alfabetico (le colonne b/c/d ecc. rimangono correttamente associate alla colonna a?);

C'è un modo per trovare tutte le righe A doppie e cancellarne 1? Dovrei però cancellare solo le righe del primo file quindi dovrei aggiungere qualcosa (magari una nuova colonna) e se esiste quindi avere un'opzione che dice cancellare tutte le righe doppie che hanno la colonna P oppure...

Grazie

Re: Unire 2 file e cancellare i doppioni

Inviato: sabato 16 settembre 2023, 11:29
da patel
Unisci i 2 file e ordina in base alla colonna A poi applica questo
https://help.libreoffice.org/latest/it/ ... DbPAR=CALC

Re: Unire 2 file e cancellare i doppioni

Inviato: sabato 16 settembre 2023, 16:51
da Ricsca
Ho provato ma non sono riuscito a fare quello che mi serve...
Allego un file demo...
In pratica ho la necessità che le ultime 3 righe (12-13-14) mi si sostituiscono alle prime 3 righe (1-2-3)
Grazie

Re: Unire 2 file e cancellare i doppioni

Inviato: sabato 16 settembre 2023, 17:39
da patel
Non avevo letto bene, dopo l'ordinamento occorre una macro che elimina le righe col doppione in col A e in cui la colonna 4 non è popolata

Re: Unire 2 file e cancellare i doppioni

Inviato: sabato 16 settembre 2023, 19:40
da Ricsca
E come si fa?
No saprei a dove iniziare :(

Re: Unire 2 file e cancellare i doppioni

Inviato: sabato 16 settembre 2023, 20:53
da lucky63
Una possibile soluzione senza macro.
Aggiungere due colonne iniziali cui assegni intestazione di preferenza e in colonna B indichi poi:
- numero file 1 (x elenco originario in cui devi fare sostituzioni)
- numero file 2 (x elenco originario delle sostituzioni da fare).
.
01.png
01.png (52.87 KiB) Visto 1710 volte
.
Con mouse posizionato in colonna C imposti ordine dati:
- ordinamento 1 colonna C crescente
- ordinamento 2 colonna B crescente.

Con i dati così ordinati imposti in cella A2 la formula:

Codice: Seleziona tutto

=SE(O(E(B2=1;B3=1);E(B2=2;B1=1));"XXX";"")
“XXX” la sigla di riscontro d’interesse (sostituibile con altra di preferenza).
Formula chiave cella A2 ricopiabile in basso quanto serve si adatta automaticamente.
.
02.png
02.png (55.63 KiB) Visto 1710 volte
.
Impostare filtro automatico e filtrare i soli riscontri “XXX” di colonna A.
 Editato:  N.B.: ultima riga elenco (in esempio ultima immagine - riga 14 è comunque valida - Ricordarsi di copiarla dopo il filtraggio dati 
.

Re: Unire 2 file e cancellare i doppioni

Inviato: sabato 16 settembre 2023, 21:08
da Lanfranchi G.Luigi
Si può fare anche in macro ma il campo che determina il doppione deve essere inequivocabile. I nomi propri non lo sono e ci possono essere clienti omonimi, col rischio di essere erroreamente cancellati. Un codice fiscale, per esempio, sarebbe più idoneo.

Re: Unire 2 file e cancellare i doppioni

Inviato: sabato 16 settembre 2023, 22:11
da Lanfranchi G.Luigi
Comunque ecco un semplice codice che cancella i doppioni.
Spero di aver capito bene quello che ti serve.

Codice: Seleziona tutto

Sub CancellaDoppioni

Sheet = ThisComponent.CurrentController.ActiveSheet
Cell = Sheet.getCellRangeByName("A1")
Cursor = sheet.createCursorByRange(cell)
Cursor.gotoEnd() 
FineCiclo = Cursor.RangeAddress.EndRow +1 ' trovo l'ultima riga
 
For Ciclo = 1 to FineCiclo
  Controllo =  Sheet.getCellRangeByName("D"&Ciclo).string
   if Controllo= "" then
       Nome1 =  Sheet.getCellRangeByName("A"&Ciclo).string
       For CicloInterno = 1 to FineCiclo
          Controllo =  Sheet.getCellRangeByName("D"&CicloInterno).string
          Nome2 =  Sheet.getCellRangeByName("A"&CicloInterno).string
           if Nome1=Nome2 and controllo<>"" then
             Sheet.getCellRangeByName("A"&Ciclo).String = ""
             Sheet.getCellRangeByName("B"&Ciclo).string = ""
             Sheet.getCellRangeByName("C"&Ciclo).string = ""
             exit for    
         end if
      next
  end if
next
  
End Sub
Vedi anche l'allegato.
Ciao

Re: Unire 2 file e cancellare i doppioni

Inviato: domenica 17 settembre 2023, 9:16
da patel
Prova anche questa, ma prima di lanciarla fai l'ordinamento in base alla colonna A

Codice: Seleziona tutto

Sub Eliminadoppie
oSheet = ThisComponent.Sheets(0)
col=0  ' colonna A
RIGA=1
Do
  If  oSheet.getCellByPosition(3,RIGA).string <> ""  Then
     if StrComp(oSheet.getCellByPosition(col,RIGA).string,oSheet.getCellByPosition(col,RIGA-1).string,0)=0 then
        oSheet.Rows.removeByIndex(RIGA-1, 1)
     end if
   else
     RIGA = RIGA + 1
     if oSheet.getCellByPosition(col,RIGA).string = "" then exit do       
   End If
Loop
End Sub

Re: Unire 2 file e cancellare i doppioni

Inviato: domenica 17 settembre 2023, 14:27
da Lanfranchi G.Luigi
Ciao Patel.
Il codice da te proposto non mi funzionava.
Mi sono permesso di modificarne alcuni passaggi.

Codice: Seleziona tutto

Sub Eliminadoppie
oSheet = ThisComponent.Sheets(0)
col=0  ' colonna A
RIGA=1
Do

  if oSheet.getCellByPosition(col,RIGA).string = "" then exit do   ' modificato  
  
  If  oSheet.getCellByPosition(3,RIGA).string = ""  Then ' modificato
     if StrComp(oSheet.getCellByPosition(col,RIGA).string,oSheet.getCellByPosition(col,RIGA-1).string,0)=0 then
        oSheet.Rows.removeByIndex(RIGA, 1) ' modificato
     end if
     
   End If  
   
    RIGA = RIGA + 1 ' modificato
   
Loop

End Sub
Gia che ci siamo posso chiederti perchè, se seleziono la prima colonna dalla seconda cella (A2) a scendere quando faccio fare il riordino crescente mi coinvolge, nel riordino, anche la cella A1 ?
Sbaglio qualche cosa ?
Grazie.

Re: Unire 2 file e cancellare i doppioni

Inviato: domenica 17 settembre 2023, 18:52
da patel
Non so risponderti, io seleziono sempre la prima cella della riga col titolo per fare l'ordinamento.

Re: Unire 2 file e cancellare i doppioni

Inviato: domenica 17 settembre 2023, 21:23
da Lanfranchi G.Luigi
Ma così facendo il titolo viene spostato in fondo nel riordino perchè comincia con la T (titolo).
Volevo evitare questo selezionando dalla seconda cella in poi ma Calc sposta, nel riordinare, anche la prima.
Sembra che Calc riordini tutte le celle adiacenti comprese quelle superiori.
Se inserisco una riga vuota dopo il titolo questo non viene più spostato nel riordino.
Grazie.
Ciao.

Re: Unire 2 file e cancellare i doppioni

Inviato: lunedì 18 settembre 2023, 7:21
da patel
Evidentemente facciamo 2 procedure diverse, io seleziono la prima cella della riga col titolo e poi Dati, Ordina.
Nel campo colonna mi compare TITOLO.

Re: Unire 2 file e cancellare i doppioni

Inviato: lunedì 18 settembre 2023, 8:59
da Lanfranchi G.Luigi
Tutto chiarito.
Io usavo la seconda scelta "Ordina in modo creescente" e non "ordina".
Usando ordina il titolo rimane dove è.
Grazie mille per la pazienza.
Ciao.