Registriert seit: 17.02.2019
Version(en): 2019
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
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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:1 Nutzer sagt Danke an Elex für diesen Beitrag 28
• Torsden
Registriert seit: 17.02.2019
Version(en): 2019
22.02.2019, 10:27
Hallo Elex,
also ich hab das Modul getestet und ich muss sagen, ich bin begeistert!!
Danke dafür!
Gruß Torsden
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
hier mal noch die Formellösung:
Arbeitsblatt mit dem Namen 'Tabelle1' |
| B | C | D | E | F | G | H | I |
1 | 05. Jan | 12. Jan | | | 15. Jan | 17. Jan | | 11 |
Zelle | Formel |
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:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Torsden
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
23.02.2019, 12:42
(Dieser Beitrag wurde zuletzt bearbeitet: 23.02.2019, 12:42 von LCohen.)
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.
Registriert seit: 16.08.2017
Version(en): 2007 / 2010 / Web
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.
Bis dahin
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen,
- "in Functions verwendet man aber m.W. keine feststehenden Objekte" - würde ich nicht unterschreiben
- 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)