Pagina 1 di 1
Eliminazione righe duplicate
Inviato: venerdì 1 giugno 2018, 18:27
da Peppe85
Buonasera a tutti,
ho dato un'occhiata al forum, ma non ho trovato la soluzione al mio problema.
Ho dei fogli con numerosi dati, ma alcune righe si ripetono, cioè mi trovo dei duplicati che vorrei eliminare.
Nell'esempio che vi posto, i duplicati da eliminare come poi vedrete, sono quelli in posizione 13 e 14 che sono perfettamente uguali in questo caso a quelli in posizione 9 e 5.
Vorrei un aiuto da parte vostra per avere una macro che mi togliesse questi duplicati.
Vi ringrazio in anticipo.
Re: Eliminazione righe duplicate
Inviato: martedì 5 giugno 2018, 7:34
da charlie
Ciao e benvenuto sul forum.
Se intanto ti vuoi presentare puoi farlo qui:
viewforum.php?f=16
Per una panoramica delle regole del forum consulta il Manuale di sopravvivenza:
http://forum.openoffice.org/it/forum/vi ... hp?f=1&t=2
Buon proseguimento.
Re: Eliminazione righe duplicate
Inviato: lunedì 18 giugno 2018, 11:08
da Peppe85
Non c'è prprio nessuno che sappia aiutarmi?
Re: Eliminazione righe duplicate
Inviato: martedì 19 giugno 2018, 18:33
da gioh66
Buonasera. Se ti va bene una soluzione con le formule e con una colonna d'appoggio, in E2 da copiare in basso metti
Codice: Seleziona tutto
=SE(VAL.ERRORE(CONFRONTA(A2&B2&C2&D2;$A$2:$A$16&$B$2:$B$16&$C$2:$C$16&$D$2:$D$16;0));"";CONFRONTA(A2&B2&C2&D2;$A$2:$A$16&$B$2:$B$16&$C$2:$C$16&$D$2:$D$16;0))
formula matriciale da confermare con
ctrl+maiuscolo+invio
Poi a fianco (o dove ti pare) metti
Codice: Seleziona tutto
=SE(VAL.ERRORE(INDICE(A$2:A$16;PICCOLO(SE(FREQUENZA($E$2:$E$16;RIF.RIGA($E$2:$E$16)-1);RIF.RIGA($E$2:$E$16)-1);RIGHE($E$2:E2))));"";INDICE(A$2:A$16;PICCOLO(SE(FREQUENZA($E$2:$E$16;RIF.RIGA($E$2:$E$16)-1);RIF.RIGA($E$2:$E$16)-1);RIGHE($E$2:E2))))
sempre
matriciale e da copiare a destra e in basso.
Re: Eliminazione righe duplicate
Inviato: martedì 19 giugno 2018, 18:39
da gioh66
Mi sono accorto ora che hai libreoffice 5.1, in questo caso si possono accorciare le formule così
Codice: Seleziona tutto
=SE.ERRORE(CONFRONTA(A2&B2&C2&D2;$A$2:$A$16&$B$2:$B$16&$C$2:$C$16&$D$2:$D$16;0);"")
e
Codice: Seleziona tutto
=SE.ERRORE(INDICE(A$2:A$16;PICCOLO(SE(FREQUENZA($E$2:$E$16;RIF.RIGA($E$2:$E$16)-1);RIF.RIGA($E$2:$E$16)-1);RIGHE($E$2:E2)));"")
Re: Eliminazione righe duplicate
Inviato: venerdì 22 giugno 2018, 11:01
da patel
questa è la soluzione con macro, la tabella senza duplicati viene copiata nel foglio2 che deve essere già presente
Codice: Seleziona tutto
sub eliminaDup
Dim oSortDesc(4) as New com.sun.star.beans.PropertyValue
Dim aSortFields(3) as New com.sun.star.table.TableSortField
Sheet = ThisComponent.Sheets(0)
DestSheet = ThisComponent.Sheets(1)
Cellrange = Sheet.getCellRangeByName("A1:D16") ' range da trattare
numcol = Cellrange.Columns.getCount
Cell = DestSheet.getCellByPosition(0,0) ' cella destinazione
aSortFields(0).Field = 0
aSortFields(0).IsAscending = true
aSortFields(1).Field = 1
aSortFields(1).IsAscending = true
aSortFields(2).Field = 2
aSortFields(2).IsAscending = true
aSortFields(3).Field = 3
aSortFields(3).IsAscending = true
oSortDesc(0).Name = "SortFields"
oSortDesc(0).Value = aSortFields()
oSortDesc(1).Name = "IsSortColumns"
oSortDesc(1).Value = False
oSortDesc(2).Name = "OutputPosition"
oSortDesc(2).Value = Cell.CellAddress
oSortDesc(3).Name = "CopyOutputData"
oSortDesc(3).Value = True
oSortDesc(4).Name = "ContainsHeader"
oSortDesc(4).Value = true
Cellrange.sort(oSortDesc())
' ----------- Eliminadoppie
RIGA=2
Do
CellaPrec = ""
Cella = ""
for col = 0 to numcol -1
CellaPrec = CellaPrec & DestSheet.getCellByPosition(col,RIGA - 1).string
Cella = Cella & DestSheet.getCellByPosition(col,RIGA).string
next
if Cella = "" then exit do
If StrComp(Cella, CellaPrec, 0) = 0 Then
DestSheet.Rows.removeByIndex(RIGA, 1)
else
RIGA = RIGA + 1
End If
Loop
End Sub