Doppelte Einträge markieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Doppelte Einträge markieren

Re: Doppelte Einträge markieren

von Jörg » So, 22.02.2015 17:26

Sorry, irgendwas ging schief. :oops:
Neuer Versuch.
Doppelte_Eintraege_4.ods
(23.44 KiB) 179-mal heruntergeladen

Re: Doppelte Einträge markieren

von Jörg » So, 22.02.2015 17:15

Hinzufügen und wieder entfernen "Bedingte Formatierung"
Doppelte_Eintraege_4.ods
(23.58 KiB) 76-mal heruntergeladen

Re: Doppelte Einträge markieren

von Jörg » So, 22.02.2015 16:37

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

von Jörg » So, 22.02.2015 15:50

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
Doppelte_Eintraege_4.ods
(23.95 KiB) 70-mal heruntergeladen

Re: Doppelte Einträge markieren

von Jörg » Sa, 21.02.2015 19:21

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

von mikeleb » Sa, 21.02.2015 16:33

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

Code: Alles auswählen

odata()= orange.getdataarray
Dateianhänge
Doppelte_Eintraege_3.ods
(66.82 KiB) 92-mal heruntergeladen

Re: Doppelte Einträge markieren

von Jörg » Sa, 21.02.2015 14:55

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

Code: Alles auswählen

ODER(ISTLEER($A2);ISTLEER($B2))
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
Doppelte_Eintraege_2.ods
(23.64 KiB) 95-mal heruntergeladen

Re: Doppelte Einträge markieren

von Jörg » Sa, 21.02.2015 11:45

Hallo mikeleb,
einfach genial. :D
Vielen, vielen Dank.
Schönes Wochenende !!

Gruß Jörg

Re: Doppelte Einträge markieren

von mikeleb » Fr, 20.02.2015 20:39

Hallo,

hier eine Lösungsvariante per bedingter Formatierung.
Dateianhänge
Doppelte_Eintraege_1.ods
(67.39 KiB) 941-mal heruntergeladen

Re: Doppelte Einträge markieren

von Jörg » Fr, 20.02.2015 08:30

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.

Code: Alles auswählen

=ZÄHLENWENN(A1:A600;A1)>1
oder für mehr als zwei

Code: Alles auswählen

=ZÄHLENWENN(A1:A600;A1)>=2
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
Doppelte_Eintraege_1.ods
(22.23 KiB) 203-mal heruntergeladen

Doppelte Einträge markieren

von Jörg » Mi, 18.02.2015 11:59

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.
Doppelte_Eintraege.ods
(22.04 KiB) 254-mal heruntergeladen
Vielen Dank
Jörg

Nach oben