Seite 1 von 1

[Gelöst] Bedingte Formatierung/Duplikat zur Vorzeile

Verfasst: Mi, 29.03.2017 14:56
von retuwe61
Hallo miteinander.
Eine Tabelle ist nach Spalte L (Datum) und anschließend nach Spalte N (Postleitzahl) sortiert.
Ich möchte in Spalte G alle Zellen farbig markieren, wenn in Spalten L UND N übereinstimmende Zelleninhalte vorhanden sind und zwar entweder in der Vorzeile oder der nachfolgenden.
Mit folgendem Makro wird zwar die erste Zelle eingefärbt, jedoch nicht diejenige in der nächsten Zeile.
Hat jemand eine Idee, was ich ändern muss?
Gruß
Uwe

Code: Alles auswählen

Sub EinfuegenBedingteFormatierung
Dim oCell as Object
Dim oConditionalForm as Object
oDoc = thisComponent
oSheet = oDoc.Sheets.getByName("Gesamtübersicht")

oCellCursor = oSheet.createCursor()
oCellCursor.GotoEndOfUsedArea(True)
letzte_Zeile = oCellCursor.getRangeAddress.EndRow

oRange = oSheet.getCellRangeByPosition(6,0,6,letzte_Zeile)
oBedingungen = oRange.getPropertyValue( "ConditionalFormat" )
Dim oBedingung(2) as New com.sun.star.beans.PropertyValue

oBedingung(0).Name = "Operator"
oBedingung(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oBedingung(1).Name = "Formula1"
oBedingung(1).Value = "IF(AND($L1=$L2;$N1=$N2))"

oBedingung(2).Name = "StyleName"
oBedingung(2).Value = "rot"
oBedingungen.addNew( oBedingung )
oRange.setPropertyValue( "ConditionalFormat", oBedingungen )
end sub

Re: Bedingte Formatierung/Duplikat zur Vorzeile

Verfasst: Mi, 29.03.2017 16:44
von mikeleb
Hallo,
die Bedingung prüft nur, ob eine Übereinstimmung mit der nachfolgenden Zeile vorliegt. Du wirst noch eine zweite Bedingung für den Bereich ab Zeile 2 für die vorangegangene Zeile formulieren müssen (da die erste Zeile ja keine Vorgängerzeile hat).

Code: Alles auswählen

oRange = oSheet.getCellRangeByPosition(6,1,6,letzte_Zeile)
oBedingungen = oRange.getPropertyValue( "ConditionalFormat" )
Dim oBedingung(2) as New com.sun.star.beans.PropertyValue

oBedingung(0).Name = "Operator"
oBedingung(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oBedingung(1).Name = "Formula1"
oBedingung(1).Value = "IF(AND($L1=$L2;$N1=$N2))"

oBedingung(2).Name = "StyleName"
oBedingung(2).Value = "rot"
oBedingungen.addNew( oBedingung )
oRange.setPropertyValue( "ConditionalFormat", oBedingungen )

Re: Bedingte Formatierung/Duplikat zur Vorzeile

Verfasst: Do, 30.03.2017 06:44
von retuwe61
Das hatte ich auch schon erfolglos versucht.
Für die selbe Zelle sind die Formeln für beide Bedingungen dann identisch.
Für Zelle G2 lautet auch die zweite Formel WENN(UND($L2=$L3;$N2=$N3)) und nicht WENN(UND($L1=$L2;$N1=$N2)).
Gruß
Uwe

Re: Bedingte Formatierung/Duplikat zur Vorzeile

Verfasst: Do, 30.03.2017 12:30
von mikeleb
Hallo,
ich hab's gefunden. Es fehlt noch ein vierter Parameter, der für den relativen Bezug wichtig ist.
oBedingung(3).Name = "SourcePosition"
oBedingung(3).Value = oSheet.getCellByPosition(6,0).celladdress
bzw.
oBedingung(3).Name = "SourcePosition"
oBedingung(3).Value = oSheet.getCellByPosition(6,1).celladdress

Re: [Gelöst] Bedingte Formatierung/Duplikat zur Vorzeile

Verfasst: Do, 30.03.2017 13:23
von retuwe61
Super. Danke!
Gruß
Uwe