![]() |
WorksheetFunction.NetworkDays_Intl - Druckversion +- Office-Fragen.de (https://office-fragen.de) +-- Forum: Microsoft Office (https://office-fragen.de/forum-1.html) +--- Forum: Excel (https://office-fragen.de/forum-2.html) +--- Thema: WorksheetFunction.NetworkDays_Intl (/thread-29218.html) |
WorksheetFunction.NetworkDays_Intl - hewile - 01.12.2024 Hallo in die Runde, ich möchte in VBA zwischen 2 Datumsangaben die Nettoarbeitstage abzüglich Feiertage berechnen. Das funtioniert einwandfrei, bis auf die Feiertage. Ich kann eine einzelne Zelle mit einem Feiertag angeben, aber keinen Bereich. Hier brauche ich eure Hilfe... 'Tage berechnen LetzteZeile = ThisWorkbook.Worksheets(2).Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To LetzteZeile Worksheets(2).Cells(i, 9).Value = WorksheetFunction.NetworkDays_Intl(Cells(i, 6), Cells(i, 7), 1, Cells(2, 15)) Next i Die Angabe Cells(2, 15) ist der eine Feiertag. Wie gebe ich einen Bereich an (z.B. Cells(2, 15) bis Cells(20, 15))? Am Besten ein Bereich auf einem anderen Tabellenblatt. Gruß hewile RE: WorksheetFunction.NetworkDays_Intl - RPP63 - 02.12.2024 Moin! Eine oder mehrere Zellen sind ein Range(). Beachte auch, dass immer korrekt referenziert werden sollte! Cells(i, 6) bezieht sich immer auf das ActiveSheet. Code: Dim i& Gruß Ralf RE: WorksheetFunction.NetworkDays_Intl - hewile - 02.12.2024 Perfekt, Danke!! Viele Grüße hewile RE: WorksheetFunction.NetworkDays_Intl - hewile - 21.12.2024 Hallo Ralf, aus Geschwindigkeitsgründen soll die Berechnung der Nettorbeitstage in einem Array erfolgen. Die Feiertage sind im Array arrFT hinterlegt. Ich habe jetzt keinen Schimmer, wie ich den zu durchsuchenden Bereich in der Funktion angeben kann (die Fragezeichen müssen durch die Bereichsangabe ersetzt werden, auskommentiert die ursprüngliche Bereichsangabe). ![]() Gruß hewile RE: WorksheetFunction.NetworkDays_Intl - RPP63 - 22.12.2024 Moin mal wieder! Wenn es Dir um Geschwindigkeit geht, solltest Du auf die Berechnung mittels VBA verzichten und statt dessen (mit VBA) Formeln in Zellen schreiben. Schließlich nutzt Excel alle verfügbaren Prozessorkerne, während das archaische VBA nur einen Kern nutzen kann. Ich habe mal was vorbereitet. ![]() Führe in einer neuen Datei folgendes Makro aus. Es schreibt 2.000 Zeiträume (Start in 2023, Ende in 2024) in die Tabelle. Ferner wird eine Auflistung aller Feiertage (NRW) in I2, spillend bis J13 geschrieben. Code: Sub Fill2000Dates() Jetzt berechnest Du alle 2.000 Zeiträume per Formel. Die Formel wird gegen den Wert getauscht. Das Ergebnis der Dauer des Makrodurchlaufs wird in den Direktbereich geschrieben. Bei mir dauert dies 0,04 Sekunden! Das dürfte kein Array schneller schaffen! Code: Sub Testlauf() Gruß Ralf RE: WorksheetFunction.NetworkDays_Intl - RPP63 - 23.12.2024 Dafür, dass Du mir die "Dringlichkeit" per PN mitteiltest und auch hier mitgelesen hast, empfinde ich die Funkstille sonderbar! RE: WorksheetFunction.NetworkDays_Intl - hewile - 23.12.2024 Hallo Ralf, das ist genial!! ca. 900.000 Werte berechnen und in die Zellen schreiben in 3 Sekunden... Wünsche dir und deiner Familie schöne Weihnachten! Gruß hewile |