Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Tage berechnen mit mehreren Unterbrechungen
#11
Hallo Elex,

also auf einem Windows Excel 2016 funktioniert es einwandfrei, aber auf dem Mac Excel 2019 nicht! Ist auch egal, da es auf Windows laufen soll!!

Also erstmal tausend dank für Deine Unterstützung!

Aber einen hab ich noch!

Wie müsste ich dieses Modul ändern, um nur die Unterbrechungstage zu berechnen? :46: 

Die Originaldatei sieht natürlich ein bisschen anders aus, sprich Anfangsdatum und Enddatum stehen nicht am Anfang sondern in z.B. C u. D. und Unterbrechungstage in z.B. I bis N

Gruß Torsden
Antworten Top
#12
Hi

Nur die Unterbrechungstage mit dem Code. 
Code:
Public Function Test(rng As Range)
Dim dict As Object
Dim n As Long, j As Long

Set dict = CreateObject("Scripting.Dictionary")
For j = 0 To 2
  If rng.Cells(j * 2 + 1).Value <> "" And rng.Cells(j * 2 + 2).Value <> "" Then
    For n = rng.Cells(j * 2 + 1).Value To rng.Cells(j * 2 + 2).Value
      dict(n) = 1
    Next n
  End If
Next j
Test = dict.Count
End Function
für Zeile 2   =Test(I2:N2)    'oder wo auch immer die 6 Zellen sind (J2:O2)


Gesamt mit gesplitteten Bereich.
Code:
Public Function Test2(rng1 As Range, rng2 As Range)
Dim dict As Object
Dim n As Long, j As Long

Set dict = CreateObject("Scripting.Dictionary")
For j = 0 To 2
  If rng2.Cells(j * 2 + 1).Value <> "" And rng2.Cells(j * 2 + 2).Value <> "" Then
    For n = rng2.Cells(j * 2 + 1).Value To rng2.Cells(j * 2 + 2).Value
      dict(n) = 1
    Next n
  End If
Next j
Test2 = (1 + rng1.Cells(2).Value - rng1.Cells(1).Value) - dict.Count
End Function
=Test2(C2:D2;I2:N2)
[-] Folgende(r) 1 Nutzer sagt Danke an Elex für diesen Beitrag:
  • Torsden
Antworten Top
#13
Thumbs Up 
Hallo Elex,

also ich hab das Modul getestet und ich muss sagen, ich bin begeistert!! 

Danke dafür!

Gruß Torsden
Antworten Top
#14
Hallöchen,

hier mal noch die Formellösung:

Arbeitsblatt mit dem Namen 'Tabelle1'
BCDEFGHI
105. Jan12. Jan15. Jan17. Jan11

ZelleFormel
I1=((C1-B1)+1)*((B1*C1)>0)-(C1>=D1)*((C1-D1)+1)*(D1>0)+(((E1-D1)+1)-(E1>=F1)*((E1-F1)+1))*((D1*E1)>0)+(((G1-F1)+1)*((F1*G1)>0))
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • Torsden
Antworten Top
#15
Hallo Elex,

in Functions verwendet man aber m.W. keine feststehenden Objekte (Cells, selbst, wenn relativ), sondern nur Argumente oder globale Variablen. Das wäre dann kein gutes Programmierbeispiel.
Antworten Top
#16
Hi @LCohen
 
Thanks for the hint.

Denn da ich weder gelernt noch beruflich mit Excel oder VBA zu tun habe, sondern sich die Sache auf das beschränkt was ich rein privat damit veranstalte, lerne ich nur durch das Forum (euch) dazu.
Mal sehen evtl. steige ich ja beruflich noch mal um. Werde langsam zu alt für den Bau. Idea

Bis dahin
Antworten Top
#17
Hallöchen,

- "in Functions verwendet man aber m.W. keine feststehenden Objekte" - würde ich nicht unterschreiben Sad
- man sollte aber prüfen, ob Bereiche korrekt übergeben wurden und für den Fehlerfall einen entsprechenden Rückgabewert definieren
- zudem sollte man auch das Rückgabeformat definieren

Unabhängig davon ist auch von Relevanz, ob eine Function als Arbeitsblattfunktion bereitgestellt werden soll oder für Subs. Im letzten Fall kann man die Parameter meist byRef übergeben und den Formelrückgabewert z.B. für einen Fehler- bzw. Erfolgsflag / Code oder einen entsprechenden Text oder...
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


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