[gelöst] Zeilen mit doppelten Einträgen in Spalte F bis auf den ersten löschen!

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

Moderator: Moderatoren

little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

[gelöst] Zeilen mit doppelten Einträgen in Spalte F bis auf den ersten löschen!

Beitrag von little fingers »

Hallo erstmal!

Ich würde gerne in der Tabelle LStatistik alle Zeilen bis auf die erste; löschen, wo in der Spalte F diese doppelt eingetragen ist!
Ich würde das gerne über eine Taste und ein Makro realisieren wollen!
Vielen Dank schon einmal für die Hilfe!

Liebe Grüße

Ingo
Zuletzt geändert von little fingers am Di, 23.11.2021 19:58, insgesamt 2-mal geändert.
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeilen mit doppelten Einträgen in Spalte F bis auf den ersten löschen!

Beitrag von Stephan »

Das kannst Du per Makro-REkorder aufzeichen und mit ein paar händischen Korrekturen anpassen, dann bekommst Du:

Code: Alles auswählen

sub Main
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$F$2"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "By"
args2(0).Value = 1
args2(1).Name = "Sel"
args2(1).Value = true

dispatcher.executeDispatch(document, ".uno:GoDownToEndOfData", "", 0, args2())

rem ----------------------------------------------------------------------
dim args3(17) as new com.sun.star.beans.PropertyValue
args3(0).Name = "SearchItem.StyleFamily"
args3(0).Value = 2
args3(1).Name = "SearchItem.CellType"
args3(1).Value = 1
args3(2).Name = "SearchItem.RowDirection"
args3(2).Value = true
args3(3).Name = "SearchItem.AllTables"
args3(3).Value = false
args3(4).Name = "SearchItem.Backward"
args3(4).Value = false
args3(5).Name = "SearchItem.Pattern"
args3(5).Value = false
args3(6).Name = "SearchItem.Content"
args3(6).Value = false
args3(7).Name = "SearchItem.AsianOptions"
args3(7).Value = false
args3(8).Name = "SearchItem.AlgorithmType"
args3(8).Value = 0
args3(9).Name = "SearchItem.SearchFlags"
args3(9).Value = 71680
args3(10).Name = "SearchItem.SearchString"
args3(10).Value = ThisComponent.CurrentController.ActiveSheet.getCellRangeByName("F1").String
args3(11).Name = "SearchItem.ReplaceString"
args3(11).Value = ""
args3(12).Name = "SearchItem.Locale"
args3(12).Value = 255
args3(13).Name = "SearchItem.ChangedChars"
args3(13).Value = 2
args3(14).Name = "SearchItem.DeletedChars"
args3(14).Value = 2
args3(15).Name = "SearchItem.InsertedChars"
args3(15).Value = 2
args3(16).Name = "SearchItem.TransliterateFlags"
args3(16).Value = 1280
args3(17).Name = "SearchItem.Command"
args3(17).Value = 1

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args3())

dispatcher.executeDispatch(document, ".uno:DeleteRows", "", 0, Array())


end sub


Gruß
Stephan
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Zeilen mit doppelten Einträgen in Spalte F bis auf den ersten löschen!

Beitrag von little fingers »

Vielen Dank Stephan!
Leider löscht bei mir das Makro alles und ich weiss nicht, welche Stellschrauben dafür gesetzt werden müssen!
Es würde mir schon reichen, dass nicht die ganze Zeile, der doppelten Einträge gelöscht wird, sondern auch nur
die doppelten Einträg selbst, bis auf einen!

Wenn Ihr dafür eine Lösung finden könntet, wäre das echt super!

Vielen lieben Dank

Ingo
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeilen mit doppelten Einträgen in Spalte F bis auf den ersten löschen!

Beitrag von Stephan »

Leider löscht bei mir das Makro alles und ich weiss nicht, welche Stellschrauben dafür gesetzt werden müssen!
das Makro geht davon aus dass in Zelle F1 (genau in Dieser) der Vergleichswert steht. in allen F-Zellen ab F2 wird dann dieer WErt gesucht und in den Zellen wo er gefunden wird, wird die komplette, zugehörige, Zeile gelöscht.



GRuß
Stephan
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Zeilen mit doppelten Einträgen in Spalte F bis auf den ersten löschen!

Beitrag von little fingers »

Hallo Stephan!
Ich glaube, dass ich mich hier wohl verkehrt ausgedrückt habe !!!
Sorry!
Ich meinte folgendes:
Alle doppelten Eintrage in der Spalte F sollen, gelöscht werden, damit nur noch der VORHER doppelte Wert, nur noch einmal in der Spalte vorkommt!!

Es gibt mehrere verschiedene Werte in der Spalte, die doppelt vorkommen können.

Ich möchte gerne, dass aus:

11111
22222
22222
33333
44444
11111


11111
22222

33333
44444

wird.

Gruss Ingo
Stephan
********
Beiträge: 12369
Registriert: Mi, 30.06.2004 19:36
Wohnort: nahe Berlin

Re: Zeilen mit doppelten Einträgen in Spalte F bis auf den ersten löschen!

Beitrag von Stephan »

z.B.:

Code: Alles auswählen

Sub Main
	ozeile=ThisComponent.CurrentController.ActiveSheet.Columns(5) 'F
	oleer=ozeile.queryemptycells
	oletzter=oleer(oleer.count-1)
	erg = oletzter.rangeaddress.startrow-1
	
	With ThisComponent.CurrentController.ActiveSheet
		For i = 0 To erg
			k = .getCellByPosition(5, i).String
			For j = i+1 To erg
				If .getCellByPosition(5, j).String = k Then
					For jj = 0 To 6
						.getCellByPosition(jj, j).String = ""
					Next jj
				End If
			Next j
		Next i
	End With
End Sub

Gruß
Stephan
Dateianhänge
doppel_loeschen.ods
(9.8 KiB) 89-mal heruntergeladen
little fingers
***
Beiträge: 74
Registriert: Fr, 12.05.2017 15:31

Re: Zeilen mit doppelten Einträgen in Spalte F bis auf den ersten löschen!

Beitrag von little fingers »

Super..........!!!!!
Vielen, lieben Dank Stephan!!!
Genauso habe ich es mir vorgestellt!!!
Danke nochmals!!!!
Antworten