ich mᅵchte in einem Kalender "Tabelle1" in der Spalte C den Urlaub mit
"U" kennzeichnen
1. "Taballe1" in der Spalte A start Zelle A1 das Datum von 01.01.2010
bis 31.12.2010 stehen.
2. Im Blatt "Tabelle2" habe ich die Daten fᅵr die Urlaubszeit
A B
1 05.01.2010 15.01.2010
2 14.02.2010 21.02.2010
3 20.05.2010 15.06.2010
4 01.11.2010 15.11.2010
Leider schaffe ich es noch nicht das richtig hin zu bekommen.
Wer kann helfen - Danke
MfG
Heinz
Hallo Heinz,
der Einfachheit halber habe ich die Formel für Deine erste
Urlaubsspanne entwickelt.
Für die volle Schönheit musst Du halt benannte Formeln Urlaub1 bis 4
und benannte Zellen Anfang1 bis 4 und Ende1 bis 4 erstellen und die in
der Wenn-Bedingung Odern.
Deine Formel in B1 muss lauten:
=WENN(ISTZAHL(VERGLEICH($A1;Urlaub;0));"U";""),
dabei ist Urlaub eine benannte Formel:
=ZEILE(INDIREKT(Anfang & ":" & Ende)), die eine Matrix aufspannt von
allen Tagen zwischen Anfang und Ende.
Anfang und Ende sind die benannten Zellen für Urlaubsanfang
(14.2.2010) und Urlaubsende (21.2.2010).
Die Formel in B1 runterkopieren.
Gruß Helmut
www.excelmexel.de
Herzlichen Danke f�r die Hilfe
leide suche ich aber eine VBA - L�sung
Frohe Weihnachten w�nscht
Heinz
> ich mᅵchte in einem Kalender "Tabelle1" in der Spalte C den Urlaub mit
> "U" kennzeichnen
>
> 1. "Taballe1" in der Spalte A start Zelle A1 das Datum von 01.01.2010
> bis 31.12.2010 stehen.
>
> 2. Im Blatt "Tabelle2" habe ich die Daten fᅵr die Urlaubszeit
>
> A B
Wie auch immer die Kennzeichnung von statten geht, die Prᅵfung ist
immer die gleiche:
1. Hole das Datum aus Tabelle1!SpalteA
2. Suche in Tabelle2!SpalteA nach einem Wert >= Datum
3. Wenn gefunden prᅵfe selbe Zeile Tabelle2!SpalteB <= Datum
An dieser Stelle weiᅵ man ob das Datum zwischen den Terminen liegt
oder nicht. Zusᅵtzlich kann man das noch mit einem kleinen Feature
erweitern, wenn man nur einen Urlaubstag hat, dann kann das Datum in
Spalte B entfallen.
Ich denke das sinnvollste ist es das in eine UDF zu packen und diese
als Formel in die Tabelle zu schreiben.
C1 =WENN(IstTermin(A1;Tabelle2!A$1:B$4);"U";"")
und runterziehen.
Andreas.
Function IstTermin(Datum As Date, Termine As Range) As Boolean
'Wahr wenn Datum in den Terminen liegt. Termine ist ein _
2spaltiger Bereich deren ersten Spalte das VON- und 2te _
Spalte das BIS-Datum enthᅵlt. Ist BIS leer, dann wird _
Datum nur mit VON verglichen.
Dim TerminDaten(), I As Integer
'Fehlerbehandlung etablieren, falls der Bereich der Termine _
falsch gesetzt ist und unser Zugriff fehlschlᅵgt
On Error GoTo ExitPoint
'Termine einlesen
TerminDaten = Termine
'Nach dem Datum suchen
For I = LBound(TerminDaten) To UBound(TerminDaten)
'Wenn Datum = VON oder (Datum > VON und <= BIS)
If (Datum = TerminDaten(I, 1) And _
IsEmpty(TerminDaten(I, 2))) Or _
(Datum >= TerminDaten(I, 1) And _
Datum <= TerminDaten(I, 2)) Then
IstTermin = True
Exit Function
End If
Next
ExitPoint:
End Function
Herzlichen Dank fᅵr die Hilfe es funkt ....... Super -))
Ich wᅵnsche Dir schᅵne Weihnachten
Heinz
PS. Frohe Weihnachten an alle die mit lesen und helfen.