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

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Entchen19
*
Beiträge: 18
Registriert: Do, 15.12.2011 22:10

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

Beitrag 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
Zuletzt geändert von Entchen19 am Mo, 19.12.2011 21:39, insgesamt 1-mal geändert.
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

Re: Spezialfilter ohne Duplikate in Basic nutzen?

Beitrag 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 
Entchen19
*
Beiträge: 18
Registriert: Do, 15.12.2011 22:10

Re: Spezialfilter ohne Duplikate in Basic nutzen?

Beitrag 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
bst
*****
Beiträge: 222
Registriert: Mo, 18.01.2010 16:14
Wohnort: Ilsfeld

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

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