Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
840to844
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
840to844
840to844
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Networkdays berechnen mit Makro

Networkdays berechnen mit Makro
06.02.2007 15:39:14
Micha
Hallo Leute,
hab folgendes Problem:
Tabelle mit 3 Worksheets: "Admin" "Daten" und "Auswertung"
In "Admin" gibt es in Spalte B Projektnummern - können auch doppelt vorkommen
Spalte C und D beinhalten jeweils im ersten Vorkommen (wenn mehrfache Projektnummer) ein Datum
------------------------------
|Projektnummer|Anfang|Ende|
|123456|01.01.2006|01.02.2006|
|777777|02.01.2006|06.07.2006|
|114773|01.01.2006|01.02.2006|
|123456| | |
.
.
.
------------------------------
in Daten werden alle Projektnummern ausgelsen (Jeweils hier nur einmal vorhanden).
nun habe ich vor mit der methode Worksheets("Admin").Range("B:B").Find(#Projektnummer#).Row mir die erste reihe des vorkommen der projektnummer ausgeben zu lassen und dann aus der jeweiligen datumkombination die arbeitstage berechnen zu lassen.
ich habs schon mit FormulaR1C1 probier aber das haut nicht hin
"objekt unterstützt die methode nicht!" :-(
Code sieht zwischendurch so aus:
Worksheets("Admin").Range("B:B").Find(Worksheets("Auswertung").Cells (Y,1)).Row
dies ist in der schleife drin die die daten zusamenkopiert.
mein erstes problem ist, dass es in der admin tabelle die projektnummern mehrfach gibt und ich eigentlich immer nur das erste vorkommenbrauch
zweitens dass ich die *.FormulaR1C1 = "=NETWORDAYS(#DATUM1#;#DATUM2#)" gern berechnen will aber excel dabei rumzickt.
hat wer ne idee?
vielen dank leute

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Networkdays berechnen mit Makro
06.02.2007 16:54:02
IngGi
Hallo Micha,
die Funktion "Nettoarbeitstage" ist als VBA-WorksheetFunction nicht verfügbar. Die nachfolgende Funktion "NetArbTage" bildet diese nach, wobei allerdings nur die Wochenenden (Samstag+Sonntag) herausgerechnet werden. Feiertage könnten einbezogen werden, indem diese (für das betreffende Jahr / die betreffenden Jahre) in einem dafür bestimmten Bereich eines Tabellenblattes angelistet, in einem optionalen Datenfeld an die Funktion übergeben und in einer weiteren If-Abfrage innerhalb der Do...Loop-Schleife gegengeprüft werden.
Das Makro "test" sucht in der Tabelle eine Projektnummer, die über eine Inputbox abgefragt wurde, übergibt die zugehörigen Datumsangaben an die Funktion NetArbTage und schreibt das Ergebnis in die Zelle D2 neben der Tabelle. Mit dem nachfolgenden Beispiel hat das bei mir funktioniert. Das Makro "test" ist allerdings nur ein Anwendungsbeispiel ohne jede Fehlerbehandlung. Falsche Angaben in der Inputbox und/oder falsche Daten(formate) in der Tabelle werden nicht abgefangen und führen daher zu einem Laufzeitfehler.
 
 ABCD
1ProjektnummerAnfangEnde 
212345606.02.200701.03.200718
323434511.02.200704.03.2007 
443234516.02.200708.03.2007 
512345621.02.200713.03.2007 
634154326.02.200719.03.2007 
 

Sub test()
Dim rng As Range
Dim Projektnummer As Long
Projektnummer = InputBox("Bitte die Projektnummer eingeben.")
Set rng = Range("A:A").Find(Projektnummer)
Range("D2") = NetArbTage(rng.Offset(0, 1), rng.Offset(0, 2))
End Sub
Function NetArbTage(Startdatum As Date, Enddatum As Date) As Integer
Dim PDatum As Date
Dim AnzTage As Integer
PDatum = Startdatum
Do Until PDatum > Enddatum
If Weekday(PDatum, vbMonday) < 6 Then AnzTage = AnzTage + 1
PDatum = PDatum + 1
Loop
NetArbTage = AnzTage
End Function
Gruß Ingolf
Anzeige
AW: Networkdays berechnen mit Makro
06.02.2007 20:41:59
proxima05
IngGi hat dir ja schon einen passenden Code geliefert.
Wegen dem Formelproblem die Info.
In der Form ".FormulaR1C1 = "=NETWORDAYS(#DATUM1#;#DATUM2#)" ist das in VBA nicht verwendbar. Zeichne die Formel über den Makro-Recorder auf und kopiere dieses Konstrukt dann nach VBA. Das sieht dann wie folgt aus (Datum1 in B2, Datum2 in B3):
ActiveCell.FormulaR1C1 = "=NETWORKDAYS(R[-2]C,R[-1]C)"
Gruß
Ralph
AW: Networkdays berechnen mit Makro
08.02.2007 12:44:40
Micha
Ich danke euch. Ha(b)t mir sehr geholfen!
:-)
Micha

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige