Seite 1 von 1
Doppelte Einträge markieren
Verfasst: Mi, 18.02.2015 11:59
von Jörg
Hallo Fachleute,
leider finde ich den Beitrag von F3K nicht wieder, in dem ich das Beispiel gefunden habe. Deshalb neues Thema.
Ich hätte es gern so, dass doppelte Einträge in den Spalten C bis M nur dann markiert werden, wenn Name und Vorname identisch sind.
Vielen Dank
Jörg
Re: Doppelte Einträge markieren
Verfasst: Fr, 20.02.2015 08:30
von Jörg
Hallo,
@ Moderatoren
Ich würde dieses Thema gern nach Calc verschieben.
Im Grunde geht es ja um "bedingte Formatierung". Diese per Makro zu tun, kann ich mir ja später mal ansehen.
Ich hänge die Datei geändert nochmal dran, damit deutlich wird was ich erreichen möchte.
Die Formel
z.Bsp. für Spalte A ist glaube ich eine Möglichkeit.
oder für mehr als zwei
Wie es über mehrere Spalten geht, denke so: A1:C600;A1 (Name einer möglichen Vorlage->C600:A1)
Aber, die sucht mir bsp.weise alle Müllers und markiert mir je nach Vorlage einen davon oder zwei(?)
Mein Anliegen ist, alle Müllers mit gleichem Vornamen zu markieren und anschließend alle gleichen Datumsangaben in den Zeilen dahinter.
Danke für Eure Hinweise
Gruß Jörg
Re: Doppelte Einträge markieren
Verfasst: Fr, 20.02.2015 20:39
von mikeleb
Hallo,
hier eine Lösungsvariante per bedingter Formatierung.
Re: Doppelte Einträge markieren
Verfasst: Sa, 21.02.2015 11:45
von Jörg
Hallo mikeleb,
einfach genial.
Vielen, vielen Dank.
Schönes Wochenende !!
Gruß Jörg
Re: Doppelte Einträge markieren
Verfasst: Sa, 21.02.2015 14:55
von Jörg
Hallo mikeleb,
beim Übertragen ins Orginaldokument ist mir folgendes aufgefallen.
1. Den Zellbereich in Deiner Formel (A2:A38;B2:B38) habe ich auch auf leere Zellen erweitert. Im Dateianhang bis 45.
Nun werden diese Zellen eingefärbt, obwohl sie leer sind. Das läßt sich wie von Dir gelernt abfangen.
1. Bedingung
2. Die Leerzellen im Bereich C2:M45 kommen ohne die o.g. Bedingung aus. Warum ist das so?
3. Folgende Frage bezieht sich auf mein Orginaldokument. Auch die Spalten C:M.
In diesem Bereich haben alle Zellen das Zahlenformat Datum TT.MM.JJ. In den "leeren" Zellen steht 30.12.99 (entspricht 0)
Weil ich unter Einstellungen Nullwerte ausblenden gewählt habe, erscheinen diese Zellen natürlich leer.
Weil sie aber nicht leer sind, werden sie mitformatiert.
Möglicherweise ist das ein Kopierproblem ?
Ich übertrage die Datumsangaben per Makro in die Tabelle. Der Code dazu:
Code: Alles auswählen
sub Alle_Daten
odoc = ThisComponent
osheet = odoc.sheets(2)
Dim Datum as String
Dim Kasse as String
Datum = oSheet.getCellRangeByName("C14").STRING
Kasse = oSheet.getCellRangeByName("E12").STRING
if Datum = "" then
msgbox("Behandlungsdaten fehlen!",0,"Gesamtliste")
exit sub
else
if Kasse = "privat" then
msgbox ("Nur Kassenpatienten",0, "Gesamtliste")
exit sub
end if
end if
orange = osheet.getCellRangeByName("H39:Z39")
orangeAddress = orange.getrangeaddress
odata()= orange.getdataarray
oZielSheet = oDoc.sheets(13)
c = oZielSheet.getCellRangeByName("A1:A5000").queryEmptyCells
oZielCell = c(0).getcellbyposition(0,0)
oZielCellAddress = oZielCell.getcelladdress
X1=oZielCellAddress.column
Y1=oZielCellAddress.row
X2=oZielCellAddress.column+(orangeAddress.EndColumn-orangeAddress.StartColumn)
Y2=oZielCellAddress.Row+(orangeAddress.EndRow-orangeAddress.StartRow)
oZielrange=oZielSheet.getCellRangeByPosition(X1,Y1,X2,Y2)
oZielrange.setdataarray(odata())
rem-----------------------------------------------------------------------------------------
oCellRange = osheet.getCellRangeByName("C14:C21")
ocellRange.clearContents(com.sun.star.sheet.CellFlags.DATETIME)
end sub
Möglicherweise muß im Code was geändert werden ?
Würde mich über weitere Hilfe sehr freuen.
Gruß Jörg
Re: Doppelte Einträge markieren
Verfasst: Sa, 21.02.2015 16:33
von mikeleb
Hallo,
zu 1.) Die Färbung leere Zellen lässt sich durch folgende Erweiterung der Bedingung vermeiden:
Code: Alles auswählen
SUMMENPRODUKT($A$2:$A$45=$A2;$B$2:$B$45=$B2)*NICHT(ODER(ISTLEER($A2);ISTLEER($B2)))>1
zu 2.) Die Bedingung hier lautet:
Code: Alles auswählen
SUMMENPRODUKT(($A$2:$A$45=$A2)*($B$2:$B$45=$B2)*($C$2:$M$45=C2)*ISTZAHL(C2)*(C2>0))>1
Durch die Bedingung ISTZAHL(C2) werden Zellen ohne Zahl übergangen und durch den neuen Zusatz C2>0 werden nun auch Nullwerte übergangen.
(Übergangen, weil durch die Bedingung das ganze Summenprodukt Null wird und damit nicht mehr >1 werden kann.)
zu 3.) Ein Kopierfehler sicher nicht. Nullwerte werden als Nullwerte kopiert. Verhindern kannst du das nur, wenn in den Quelldaten keine Nullwerte auftauchen oder du ergänzt folgende Codezeilen
Code: Alles auswählen
for i=lbound(odata(0)) to ubound(odata(0))
if odata(0)(i)=0 then odata(0)(i)=""
next
nach
Re: Doppelte Einträge markieren
Verfasst: Sa, 21.02.2015 19:21
von Jörg
Hallo,
jetzt ist alles chic.
Habe auch den Codeabschnitt ins Makro eingefügt. Klappt auch bestens.
Danke nochmal und schönes WE
Re: Doppelte Einträge markieren
Verfasst: So, 22.02.2015 15:50
von Jörg
Hallo,
mit Hilfe von Dannenhöfer versuche ich in Spalte C die bedingte Formatierung (Einträge älter als 3 Monate) per Makro einzufügen.
Die Formatierung manuell eingegeben funktioniert. Nur das Makro nicht
Code: Alles auswählen
Sub alte_eintraege
Dim oCell as Object
Dim oConditionalForm as Object
oCell = ThisComponent.Sheets(0).getCellRangeByName("RezDat")
'$Tabelle1.$C$2:$C$45
oConditionalForm = oCell.ConditionalFormat
Dim oCondition(3) as New com.sun.star.beans.PropertyValue
oCondition(0).Name = "Operator"
oCondition(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oCondition(1).Name = "Formula1"
oCondition(1).Value = "=Bed1"
'ODER(ISTLEER(C2))
oCondition(2).Name = "StyleName"
oCondition(2).Value = "Standard"
oConditionalForm.addNew( oCondition() )
oCondition(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oCondition(1).Name = "Formula2"
oCondition(1).Value = "=Bed2"
'C2<DATUM(JAHR(HEUTE());MONAT(HEUTE())-3;TAG(HEUTE()))
oCondition(2).Name = "StyleName"
oCondition(2).Value = "=RezDat"
'Vorlage RezDat
oConditionalForm.addNew( oCondition() )
oCell.ConditionalFormat = oConditionalForm
End Sub
Gruß Jörg
Re: Doppelte Einträge markieren
Verfasst: So, 22.02.2015 16:37
von Jörg
Hallo, hab noch etwas gestöbert.
Code: Alles auswählen
' 2008-01-29
oBlatt = ThisComponent.Sheets.getByName( "Tabelle1" )
oBereich = oBlatt.getCellRangeByName("RezDat" )
' Objekt der gesetzten Bedingungen für diesen Bereich
oBedingungen = oBereich.getPropertyValue( "ConditionalFormat" )
' neue Variable
Dim oBedingung(3) 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 = "Bed1"
oBedingung(2).Name = "StyleName"
oBedingung(2).Value = "Standard"
' hinzu
oBedingungen.addNew( oBedingung )
oBedingung(0).Name = "Operator"
oBedingung(0).Value = com.sun.star.sheet.ConditionOperator.FORMULA
oBedingung(1).Name = "Formula1"
oBedingung(1).Value = "Bed2"
oBedingung(2).Name = "StyleName"
oBedingung(2).Value = "RezDat"
' hinzu
oBedingungen.addNew( oBedingung )
' anwenden
oBereich.setPropertyValue( "ConditionalFormat", oBedingungen )
End Sub
Funkt, aber wo ist der Unterschied?
Hatte auch die = bei "=Bed1" rausgenommen.
Na ja.
Re: Doppelte Einträge markieren
Verfasst: So, 22.02.2015 17:15
von Jörg
Hinzufügen und wieder entfernen "Bedingte Formatierung"
Re: Doppelte Einträge markieren
Verfasst: So, 22.02.2015 17:26
von Jörg
Sorry, irgendwas ging schief.
Neuer Versuch.