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.
Eliminazione righe duplicate
Eliminazione righe duplicate
- Allegati
-
- Esempio.ods
- (13.97 KiB) Scaricato 105 volte
libreoffice 5.1.1.3 ubuntu
Re: Eliminazione righe duplicate
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.
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.
charlie
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
macOS 14.4.1 Sonoma: Open Office 4.1.15 - LibreOffice 7.5.7.2
http://www.charlieopenoffice.altervista.org
Re: Eliminazione righe duplicate
Non c'è prprio nessuno che sappia aiutarmi?
libreoffice 5.1.1.3 ubuntu
Re: Eliminazione righe duplicate
Buonasera. Se ti va bene una soluzione con le formule e con una colonna d'appoggio, in E2 da copiare in basso metti
formula matriciale da confermare con ctrl+maiuscolo+invio
Poi a fianco (o dove ti pare) metti
sempre matriciale e da copiare a destra e in basso.
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))
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))))
- Allegati
-
- righe duplicate.ods
- (11.59 KiB) Scaricato 118 volte
...se sei soddisfatto delle risposte ricevute metti il [Risolto] https://forum.openoffice.org/it/forum/v ... f=9&t=5661
Libreoffice 6/7 Ubuntu 22.04 - PcLinuxOS - LinuxMint 21
Libreoffice 6/7 Ubuntu 22.04 - PcLinuxOS - LinuxMint 21
Re: Eliminazione righe duplicate
Mi sono accorto ora che hai libreoffice 5.1, in questo caso si possono accorciare le formule così
e
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);"")
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)));"")
...se sei soddisfatto delle risposte ricevute metti il [Risolto] https://forum.openoffice.org/it/forum/v ... f=9&t=5661
Libreoffice 6/7 Ubuntu 22.04 - PcLinuxOS - LinuxMint 21
Libreoffice 6/7 Ubuntu 22.04 - PcLinuxOS - LinuxMint 21
Re: Eliminazione righe duplicate
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
-------------------
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta
Libre Office 7.5.3.2 su Windows 11
allega un file di esempio, guadagnerai tempo tu e lo farai risparmiare a chi ti aiuta