Hallo
F3K Total hat geschrieben:Na,
dann kannst Du Dir doch auch gleich ein Makro basteln, was die doppelten Einträge garnicht erst in die Spalte schreibt.
Nein, das musst du nicht, das gibts schon:
Code: Alles auswählen
import uno
from itertools.chain import from_iterable as flat
context = XSCRIPTCONTEXT
def iterable( enumerable ):
enum = enumerable.createEnumeration()
while enum.hasMoreElements():
yield enum.nextElement()
def filter_allsheet_content_without_duplicates():
sheets = context.getDocument().Sheets
data = set()
for sheet in iterable(sheets):
ranges = sheet.queryContentCells( 23 )
for rrange in iterable( ranges ):
data.update( flat( rrange.getFormulaArray() ))
data = sorted( list( data) )
data = [ (elem,) for elem in data ]
makeDataArray( sheets.getByIndex(0), tuple( data ) )
def makeDataArray( sheet , olist ):
rowsize, colsize = len( olist ) -1, len( olist[0] ) -1
oRange = sheet.getCellRangeByPosition(0, 0, colsize , rowsize)
oRange.setFormulaArray( olist )
Entpacke das angehängte Archiv im Ordner "Scripts" deines Benutzerverzeichnisses, und rufe über →Extras→Makros→Makros verwalten→Python→Meine Makros→setsheetcontent→
filter_allsheet_content_without_duplicates auf.
Die Ausgabe erfolgt in Spalte A des erstenTabellenblatts.
Gruß Karo
Edit: Update, insbesondere redunante Zeilen aus makeDataArray entfernt.