Doppelte einträge Löschen

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Eddy
********
Beiträge: 2781
Registriert: So, 02.10.2005 10:14

Re: Doppelte einträge Löschen

Beitrag von Eddy »

Hallo Nadine Paneutz,

benutze die Suchfunktion dieses Forums mit den Worten Deiner "Problembeschreibung" und lese den ersten gefundenen Beitrag.
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Doppelte einträge Löschen

Beitrag 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 !?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Doppelte einträge Löschen

Beitrag 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 :?
Zuletzt geändert von clag am Di, 17.08.2010 18:11, insgesamt 1-mal geändert.
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Doppelte einträge Löschen

Beitrag 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!
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Doppelte einträge Löschen

Beitrag 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
duplikate_löschen1.png (15.96 KiB) 3654 mal betrachtet
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
********
Beiträge: 3570
Registriert: Di, 27.01.2009 15:30

Re: Doppelte einträge Löschen

Beitrag 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 ?
LG
clag

nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Benutzeravatar
balu
********
Beiträge: 3812
Registriert: Fr, 24.08.2007 00:28
Wohnort: Warstein

Re: Doppelte einträge Löschen

Beitrag von balu »

Hallo Nadine,

versuchs doch mal mit diesen Einstellungen.
Filter0.jpg
Filter0.jpg (81.16 KiB) 3642 mal betrachtet
Gruß
balu
Sei öfter mal ein Faultier, sag öfter mal "Ach was!" Dann kriegst du keinen Herzinfarkt, und hast ne menge Spass.

wehr rächtschraipfähler findet khan si behalden :D
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Doppelte einträge Löschen

Beitrag 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
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Doppelte einträge Löschen

Beitrag 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
Antworten