Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
364to368
364to368
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Funktion ähnlich Nettoarbeitstage gesucht

Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:32:25
Jochen
Hallo Leute,
Vba eher mittelmäßig!
Ich bin auf der Suche nach einer Funktion(VBA), die der Excelfunktion
NETTOARBEITSTAGE() entspricht, die ja leider nur mit Add-In zur Verfügung
steht. Nun haben bei uns in der Firma genau 0 Leute dieses Add- In auf
dem PC.
Schön wäre noch, wenn man bei den freien Tagen entweder einen Zellbereich
markieren könnte oder, anders als bei der Originalversion, einfach eine
Ganzzahl für die Anzahl freien Tage eingeben könnte.
Ich hoffe, ich habs nicht zu umständlich beschrieben.
Danke schon mal und schönes Wochenende.
Gruß Jochen

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:40:40
PeterW
Hallo Jochen,
wenn du das Rad neu erfinden willst nur zu aber Nottoarbeitstage steht im atpvbaen.xla auch in VBA zur Verfügung. In Excel unter Addin VBA-Analysefunktionen anhaken und dann in VBA einen Verweis auf atpvbaen setzen.
Gruß
Peter
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:46:18
Jochen
Hallo Peter,
ich hab mir Mühe gegeben, das Problem genau zu beschreiben, dann gib dir
auch Mühe, genau zu lesen. Das Add- In steht in meiner Firma nicht zur
Verfügung. Außerdem hätte ich gern eine leichte Modifikation.
Gruß Jochen
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:49:28
PeterW
Hallo Jochen,
entschulduige bitte, dass ich mir die Zeit genommen habe, deine Frage zu lesen und auch noch eine Antwort zu schreiben. Es wird bei Fragen von dir bestimmt nicht wieder vorkommen!
Gruß
Peter
Anzeige
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:52:30
Jochen
Hallo Peter,
solche Antworten sind sinnlos und können daher auch entfallen.
Gruß Jochen
dieser Kommentar auch (o.T.)
16.01.2004 21:54:35
PeterW
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:44:05
Ramses
Hallo Jochen
wie sollten die Daten berechnet werden ?
Mit Feiertagen ?
Wo stehen die Grunddaten für die Feiertage ?
NettoArbeitstage mit oder ohne Samstag ?
Gruss Rainer
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:51:05
Jochen
Hallo Rainer,
Beispiel: Startdatum in A1, Enddatum in A2
Optional Liste der freien Tage in B1:B??
Optional einfach eine Anzahl der freien Tage als Ganzzahl in den
Assisteneingeben können.
Standard sollten Samstag und Sonntage frei sein(wenn kein optionales
Argument angegeben ist).
Danke schon mal für dein Interesse.
Gruß Jochen
Anzeige
Sollte gehen....
16.01.2004 23:00:54
Ramses
Hallo
Der Code gehört in ein Modul deiner Arbeitsmappe


Option Explicit
Function myPrivateNetworkDays(myStart As Range, myEnd As Range, Optional freedays As Range) As Long
On Error GoTo myErrorHandler
Dim As Long, n As Long, DayChk As Boolean
Dim myNetDays As Long, myF As Variant
Dim myC As Range
myNetDays = 0
n = 0
DayChk = False
For i = myStart To myEnd
    If Weekday(Format(myStart + n, "dd.mm.yyyy"), vbMonday) < 6 Then
        'On Error Resume Next
        For Each myC In freedays
            If myC.Value = myStart + n Then
                DayChk = True
                Exit For
            End If
        Next
Weiter:
        Err.Clear
        If DayChk = False Then
            myNetDays = myNetDays + 1
        End If
        DayChk = False
    End If
    n = n + 1
Next i
ErrExit:
myPrivateNetworkDays = myNetDays
Exit Function
myErrorHandler:
Select Case Err.Number
    Case 424 'Kein Feiertagsbereich
        Resume Weiter
    Case Else
        MsgBox Err.Number & ": " & Err.Description
        Resume ErrExit
End Select
End Function

     Code eingefügt mit Syntaxhighlighter 2.5


Aufgerufen wird die Funktion so:
Anzeige
AW: Sollte gehen....
16.01.2004 23:21:48
Jochen
Hallo Rainer,
funtioniert, danke dir.
Ich hab mir auf Grundlage des Codes von Sigi das mit der zusätzlichen
Option, einfach eine Anzahl Tage statt eines Zellbereichs zu verwenden,
hingebastelt.
Gruß und schönes Wochenende
Jochen
Merci :-) Geschlossen o.T.
16.01.2004 23:26:34
Ramses
...
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:48:40
Sigi E.
Hallo Jochen,
diese Funktion sollte es tun ...

Function Arbeitstage(AnfDatum As Date, EndDatum As Date, _
FreieTage As Excel.Range) As Long
Dim Datum As Date
Dim Tage As Long
Dim Istfrei As Boolean
Dim FreiTag As Range
If AnfDatum <= EndDatum Then
For Datum = AnfDatum To EndDatum
Istfrei = False
If Weekday(Datum, vbMonday) < 6 Then
For Each FreiTag In FreieTage
If Datum = FreiTag.Value Then
Istfrei = True
Exit For
End If
Next FreiTag
If Not Istfrei Then
Tage = Tage + 1
End If
End If
Next Datum
Else
Tage = ""
End If
Arbeitstage = Tage
End Function

Gruß
Sigi
Anzeige
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 21:59:19
Jochen
Hallo Sigi,
das ist es schon fast. Die freien Tage sollten nur optional sein.
Jetzt muss ich einen Zellbereich vorgeben.
Nützlich wäre auch, wenn man die freien Tage(auch optional) einfach
als Zahl eingeben könnte.
Gruß und Dank Jochen
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 22:33:29
Sigi E.
Hallo Jochen,
falls du den Zeitraum nicht auf Feiertage überprüfen willst, dann lass ihn einfach weg!

Function Arbeitstage(AnfDatum As Date, EndDatum As Date) As Long
Dim Datum As Date
Dim Tage As Long
If AnfDatum <= EndDatum Then
For Datum = AnfDatum To EndDatum
If Weekday(Datum, vbMonday) < 6 Then
Tage = Tage + 1
End If
Next Datum
Else
Tage = ""
End If
Arbeitstage = Tage
End Function

Die Alternative die freien Tage als Zahl einzugeben, versteh ich nicht! Es muss doch
gewährleistet sein, dass diese freien Tage auch tatsächlich im Zeitraum liegen. Wenn
das der Fall ist, kannst du doch einfach diese Zahl vom Ergebnis der Funktion abziehen.
"=Arbeitstage(A1;B1) - 5"
Gruß
Sigi
Anzeige
AW: Funktion ähnlich Nettoarbeitstage gesucht
16.01.2004 22:58:57
Jochen
Hallo Sigi,
ich hab mir das jetzt auf der Grundlage deiner Lösung so hingebogen,
wie ich es brauche.
Mit dieser Funktion müssen halt Leute umgehen können, die Excel nicht
so gut können. Daher ist es komfortabler, wenn sie z.B. 3 Tage einfach
im Assi eingeben können statt später in der Zelle =FUNKTION()-3
schreiben zu müssen. In der Regel wird aber eher die Option genutzt
werden, die freien Tage in einer Liste zu hinterlegen.
Dank dir nochmal und schönes Wochenende
Gruß Jochen
AW: Nettoarbeitstage ohne VBA
17.01.2004 09:40:14
FP
Hallo Jochen,
ganz ohne VBA geht das so:
wenn Feiertage keine Rolle spielen:
=A2+1-A1-DM((WOCHENTAG(A1;2)+A2-A1-3)/7;)-DM((WOCHENTAG(A1;1)+A2-A1-3)/7;)
Liste der Feiertage steht in C1:C20:
{=SUMME(N(WOCHENTAG(ZEILE(INDIREKT(A1&":"&A2));2)<6))-SUMME((C1:C20>=A1)*(C1:C20<=A2)*(WOCHENTAG(C1:C20;2)<6))}
Servus aus dem Salzkammergut
Franz
Anzeige
AW: Nettoarbeitstage ohne VBA
17.01.2004 12:28:05
Jochen
Hallo Franz,
sehr schöne Sache, die ich allerdings erstmal versuchen muss, zu
verstehen.
Gruß Jochen
AW: Nettoarbeitstage ohne VBA
17.01.2004 16:25:19
FP
Hallo Jochen,
in A1: Datum1 (z.B.: 1.1.2004)
in A2: Datum2 (z.B.: 31.1.2004)
bei 5 Arbeitstagen je Woche ohne Berücksichtigung der Feiertage können jetzt die Nettoarbeitstage wie folgt ermittelt werden:
=A2+1-A1-DM((WOCHENTAG(A1;2)+A2-A1-3)/7;)-DM((WOCHENTAG(A1;1)+A2-A1-3)/7;)
bei 6 Arbeitstagen je Woche:
=A2+1-A1-DM((WOCHENTAG(A1;2)+A2-A1-3)/7;)
Erklärung:
A2+1-A1: Anzahl der Tage zwischen A1 und A2
DM((WOCHENTAG(A1;2)+A2-A1-3)/7;)
WOCHENTAG(A1;2) : ermittelt den Wochentag des Datums in A1,
+A2-A1 : addiert die Anzahl der Tage zwischen den beiden Datumsangaben
-3 : damit die Funktion DM richtig rundet
/7 : Anzahl der Tage in 1 Woche ( hier Anzahl der Sonntage im Zeitraum)
;) : sagt der Funktion DM dass auf 0 Nachkommastellen gerundet werden soll
Na ja, und die andere Formel zieht zusätzlich noch die Anzahl der Feiertage im Zeitraum ab, sofern diese nicht auf das Wochenende (Sa/So) fallen.
Sollen auch Feiertage, die auf einen Samstag fallen abgezogen bzw. Samstage als Arbeitstage gezählt werden, muss nur <6 durch < 7 ersetzt werden!
(Achtung: Arrayformel - Eingabe ohne "{" bzw. "}" aber mit STRG+UMSCHALT+EINGABE abschliessen!!!)
Alles klar?
Servus aus dem Salzkammergut
Franz
Anzeige
AW: Nettoarbeitstage ohne VBA
17.01.2004 16:35:25
Jochen
Hallo Franz,
danke für deine Mühe. Starker Tobak, muss ich erstmal verdauen.
Ich dachte immer, ich wäre einigermaßen fit in Excel, aber...
Gruß Jochen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige