Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
WorksheetFunction.NetworkDays_Intl
#5
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.  Tongue
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()
Cells.Clear
Range("A1:C1") = Split("Start Ende Arbeitstage")
'Start in 2023, Ende in 2024, 2000 Daten
Range("A2:B2").Formula2Local = "=Datum(2022+SPALTE();1;ZUFALLSMATRIX(2000;;1;365;1))"
With Range("A:B")
   .Copy
   .PasteSpecial xlPasteValues
   .NumberFormatLocal = "TT.MM.JJJJ"
End With
'Feiertage 2023 bis 2024 in I1#
Range("I1").Formula2Local = _
  "=LET(Jahre;SEQUENZ(;2;2023);" & _
  "FFT;DATUM(Jahre;1;{1;121;276;305;359;360})+WENN(MONAT(DATUM(Jahre;2;29))=2;{0;1;1;1;1;1});" & _
  "OFT;RUNDEN((TAG(MINUTE(Jahre/38)/2+55)&"".4.""&Jahre)/7;)*7-6+{-2;0;1;39;49;50;60};" & _
  "SORTIEREN(VSTAPELN(FFT;OFT)))"
Range("I:J").NumberFormatLocal = "TT.MM.JJJJ"
End Sub

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()
Dim Start As Double
Start = Timer
Application.ScreenUpdating = False
With Range("C2:C2001")
  .FormulaLocal = "=NETTOARBEITSTAGE.INTL(A2;B2;1;I$1#)"
  .Copy
  .PasteSpecial xlPasteValues
End With
With Application
  .ScreenUpdating = True
  .CutCopyMode = False
  .GoTo Cells(1)
End With
Debug.Print Timer - Start
End Sub

Gruß Ralf
Zitieren


Nachrichten in diesem Thema
WorksheetFunction.NetworkDays_Intl - von hewile - 01.12.2024, 21:43
RE: WorksheetFunction.NetworkDays_Intl - von RPP63 - 22.12.2024, 11:12

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste




Hinweis auf Angebot Excel-Inside - lang    Keine Lösung gefunden? Du kannst Dich gerne an unser erfahrenes Experten-Team wenden um dein Anliegen zu besprechen.
   Gerne erstellen wir auf dieser Basis ein Angebot.
   Sende deine Anfrage einfach
per E-Mail an anfrage@excel-inside.de


Powerd and supported by Excel-InsideSolutions