Seite 1 von 1
Re: Doppelte einträge Löschen
Verfasst: Di, 17.08.2010 17:10
von Eddy
Hallo Nadine Paneutz,
benutze die Suchfunktion dieses Forums mit den Worten Deiner "Problembeschreibung" und lese den ersten gefundenen Beitrag.
Re: Doppelte einträge Löschen
Verfasst: Di, 17.08.2010 17:16
von clag
Hallo Nadine Paneutz,
da gibt es verschiedene Möglichkeiten ........
eine komfortable und schnelle, ist die Filterfunktion von Calc
vorausgesetzt in den Optionen ist die Anzeige von Duplikaten unterdrücken angewählt,
wenn du dann noch die Ausgabe in einen anderen Bereich wählst,
bekommst du dort eine neue von Duplikaten befreite Liste, die du ggf kopieren kannst !?
Re: Doppelte einträge Löschen
Verfasst: Di, 17.08.2010 18:02
von clag
Hallo Nadine,
warum gleich die "grosse Speziale"
mit dem
Standard Filter hast du das mit 5 Mausklicks erledigt
ok, ich gebe zu war vielleicht etwas ungenau weil unter Standard heißen die Optionen
auch manchmal Zuätze 
Re: Doppelte einträge Löschen
Verfasst: Di, 17.08.2010 18:22
von clag
Hi,
also eigentlich hatte ich damit noch nie Probleme
willst du nur die eine Spalte von Duplikaten befreien oder sind möglicherweise noch andere Spalten mit markiert ?
markiere nur die eine Spalte und ruf den StandardFilter auf, Bereich nicht erweitern falls danach gefragt werden sollte!
Re: Doppelte einträge Löschen
Verfasst: Di, 17.08.2010 19:02
von clag
Hallo,
ja genauso wähle doch noch einen Ausgabebereich
dazu brauchst du nur den Cursor in das Feld Ausgabebereich setzen und dann eine Zelle anklicken
dann bekommst du dort beginnend eine saubere Liste ausgegeben !
vorher musst du aber alle Zeilen wieder einblenden die durch die Filteraktion ohne Ausgabe ausgeblendet wurden,
sonst könnte Calc da stolpern

- duplikate_löschen1.png (15.96 KiB) 3663 mal betrachtet
Re: Doppelte einträge Löschen
Verfasst: Di, 17.08.2010 19:29
von clag
Hi,
vielleicht sind die Einträge nicht ok?
aber da habe ich keine Idee was ....
wenn du keine Bedenken hast, kannst du die Datei hier hochladen,
und wir schauen mal gemeinsam woran es liegen könnte ?
Re: Doppelte einträge Löschen
Verfasst: Di, 17.08.2010 20:01
von balu
Hallo Nadine,
versuchs doch mal mit diesen Einstellungen.

- Filter0.jpg (81.16 KiB) 3651 mal betrachtet
Gruß
balu
Re: Doppelte einträge Löschen
Verfasst: Di, 17.08.2010 20:32
von turtle47
Hi Nadine,
[Edit] Blödsinn gelöscht[/Edit]
Versuche mal folgendes Makro:
Code: Alles auswählen
Sub Dubletten_finden
odoc=thiscomponent
oSheet = oDoc.CurrentController.getActiveSheet()
myrows=oSheet.getrows
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow
for i = 0 to letzte_Zeile
text1 = osheet.getcellbyposition(0,i).string 'Durchsucht Spalte A (Index 0 (Null))
if text1 = "" then
goto weiter
end if
for j = i + 1 to letzte_Zeile
text2 = osheet.getcellbyposition(0,j).string 'Durchsucht Spalte A (Index 0 (Null))
if text1 = text2 then
osheet.getcellbyposition(0,j).string = ""
end if
next j
weiter:
next i
msgbox "Fertig",64, "Dubletten finden"
End Sub
Das funktioniert leider nur bis Zeile 17834
Wenn die Liste so lang ist, dann kann das Überprüfen schon eine gaaaanze Weile dauern.
Versuche es mal an einer Dateikopie mit ein paar Zeilen damit Du ein Gefühl für die benötigte Zeit bekommst.
Jürgen
Re: Doppelte einträge Löschen
Verfasst: Mi, 18.08.2010 09:43
von bst
Morgen,
mal ein Versuch. Auch wenn die Collections in OOo Basic wohl nicht so schnell sein dürften wie ein Hash (oder auch ein Dictionary-Object in VBScript) sollte das doch deutlich schneller sein,
Zu Collections siehe:
http://www.oooforum.org/forum/viewtopic.phtml?p=387376
Nachtrag: Code um formatiert, d.h. Tabs entfernt ?
cu, Bernd
--
Code: Alles auswählen
REM ***** BasIC *****
Option Explicit
Sub DelDouble
Dim oSheet as Object, oCellCursor as Object, oCellRange as Object
Dim arData as Variant, i as Long, iLastRow as Long
Dim col as New Collection, strKey as String
Dim t as Long
t = Timer
oSheet = ThisComponent.CurrentController.getActiveSheet()
oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
iLastRow = oCellCursor.getRangeAddress.EndRow
oCellRange = oSheet.getCellRangeByPosition(0,0,0,iLastRow)
arData = oCellRange.getDataArray
for i = 0 to iLastRow
strKey = Trim(arData(i)(0))
if len(strKey) > 0 Then
if ColItemExists(col, strKey) Then
arData(i)(0) = ""
else
col.Add 0, strKey
endif
endif
next
oCellRange.setDataArray arData
print Timer - t
End Sub
Function ColItemExists(ByVal col as Collection, ByVal strKey as String) as Boolean
On Error Resume Next
ColItemExists = Len(col(strKey)) > 0
End Function