Seite 1 von 1

[GELÖST]Spezialfilter ohne Duplikate in Basic nutzen?

Verfasst: So, 18.12.2011 23:48
von Entchen19
Hallo zusammen,

wenn ich in Spalte A 1.000 Einträge habe und hiervon 300 Duplikate sind, konnte ich Excel mit dem Spezialfilter und der Option "Keine Duplikate" relativ schnell eine um die Duplikate bereinigte Liste in eine neue Spalte kopieren und zwar hiermit:

Code: Alles auswählen

Columns("V:X").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Columns("A:C"), Unique:=True
Ich hätte gerne das Pendant in Basic hierzu gewusst, der Makrorekorder scheint da nicht wirklich ein gutes Ergebnis zu liefern.

Irgendwer eine Idee hierzu, einen Anhaltspunkt, wie die Funktion hier in Basic heißt?
Die Suche hat nur recht unperformante Alternativen aufgezeigt :(

LG
Entchen

Re: Spezialfilter ohne Duplikate in Basic nutzen?

Verfasst: Mo, 19.12.2011 13:10
von bst
Hi,

versuche das mal so. Siehe: http://www.oooforum.org/forum/viewtopic.phtml?t=5096

HTH, Bernd
--

Code: Alles auswählen

Sub Main
	oSheet = thiscomponent.sheets(0)
	xfilter = oSheet.getcellrangebyname("A1:D10")	' getcellrangebyposition(0,0,3,9)
	xfilterDesc=xFilter.createFilterDescriptor(true)

	oDst = oSheet.getCellRangeByName("F1").getCellAddress()
	xfilterDesc.ContainsHeader=true
	xfilterDesc.SkipDuplicates=true
	xfilterDesc.CopyOutputData=true
	xfilterDesc.OutputPosition=oDst

	xFilter.filter(xFilterDesc)
End Sub 

Re: Spezialfilter ohne Duplikate in Basic nutzen?

Verfasst: Mo, 19.12.2011 15:04
von Entchen19
Hallo Bernd,

vielen Dank für deine Hilfe, das scheint schon einmal nicht schlecht zu sein :)
So habe ich es hinbekommen, es wäre spannend zu wissen, wie ich wirklich komplette Spalten ansprechen könnte.

Und ich habe noch das Problem, dass er mir den ersten Wert doppelt ausgibt, ich habe keine Ahnung, warum, er macht es auch, wenn der garnicht doppelt existiert :shock:

Code: Alles auswählen

oFilter = oSheet.getcellrangebyname("V1:X60000")   ' getcellrangebyposition(0,0,3,9)
	oFilterDesc = oFilter.createFilterDescriptor(true)
	
	oZielBereich = oSheet.getCellRangeByName("A1").getCellAddress()
	oFilterDesc.ContainsHeader = true
	oFilterDesc.SkipDuplicates = true
	oFilterDesc.CopyOutputData = true
	oFilterDesc.OutputPosition = oZielBereich
	
	oFilter.filter(oFilterDesc)
LG
Entchen

Re: [GELÖST]Spezialfilter ohne Duplikate in Basic nutzen?

Verfasst: Di, 20.12.2011 09:03
von bst
Morgen,

nimm mal getCellRangeByPosition und bestimme die Anzahl der Zeilen aus der Tabelle:

Code: Alles auswählen

	oSheet = ThisComponent.currentController.ActiveSheet
	iCount = oSheet.Rows.Count
Und, der Spezialfilter erwartet (wie auch der in Excel) in der 1. Zeile eine Überschrift. Versuche mal:

Code: Alles auswählen

oFilterDesc.ContainsHeader = false
cu, Bernd