In een Excel bereken ik de uren waarmee ik drie verschillende diensten (Shift 1 t/m 3) kan vullen. Shift 1 heeft vaak uren over die ik ook kan inzetten voor Shift 2 en 3. In een oogopslag is vaak te zien of dat past, maar ik wil die excercitie automatiseren.
Een randvoorwaarde is dat Shift 1 minder waard is dan Shift 2 en 3 met een factor 2. Met andere woorden: 1 uur doorschuiven van Shift 1 levert maar 0,5 uur op in Shift 2 of 3. Een aantal voorbeelden ter illustratie:
Voorbeeld 1: Uit de eerste berekening komt dat Shift 1 +30 uren over heeft en Shift 2 en 3 resp. -10 en -5 te kort komen (B4 t/m D4). Met een factor 2 (in D1) heeft Shift 1 precies genoeg om Shift 2 en Shift 3 te vullen. Regel 5 bevat hulpcellen en geven de delta's aan door verschuiving. Het resultaat (B6 t/m D6) is netto nul.
:fill(white):strip_exif()/f/image/kHK0lToL6vfB3yfa5Sa63KUu.png?f=user_large)
Voorbeeld 2: Als Shift 1 maar +10 uren over heeft is dat slechts voldoende om een deel van Shift 2 te vullen.
:fill(white):strip_exif()/f/image/kXKomEG9lqdfQnoWBzXs3gZe.png?f=user_large)
Voorbeeld 3: Maar stel de factor wordt 0,10 dan past het makkelijk en houden we over.
:fill(white):strip_exif()/f/image/8Wg81Fx1iug0sZ0nf8ixfTgj.png?f=user_large)
Voorbeeld 4: Of als Shift 2 ook ineens +10 over heeft past het.
:fill(white):strip_exif()/f/image/nR3qUbXCSBL0qmtQ1v9FEz6C.png?f=user_large)
Ik heb dit nu opgelost met in C5 de formule:
En in D5:
Dat werkt prima, maar is verre van elegant en is niet makkelijk uit te breiden voor extra shifts. Mijn vraag is of jullie nog creatieve oplossingen weten, los van VBA gebruiken. Ik zit er te dicht op en kan wel een frisse blik gebruiken.
Een randvoorwaarde is dat Shift 1 minder waard is dan Shift 2 en 3 met een factor 2. Met andere woorden: 1 uur doorschuiven van Shift 1 levert maar 0,5 uur op in Shift 2 of 3. Een aantal voorbeelden ter illustratie:
Voorbeeld 1: Uit de eerste berekening komt dat Shift 1 +30 uren over heeft en Shift 2 en 3 resp. -10 en -5 te kort komen (B4 t/m D4). Met een factor 2 (in D1) heeft Shift 1 precies genoeg om Shift 2 en Shift 3 te vullen. Regel 5 bevat hulpcellen en geven de delta's aan door verschuiving. Het resultaat (B6 t/m D6) is netto nul.
:fill(white):strip_exif()/f/image/kHK0lToL6vfB3yfa5Sa63KUu.png?f=user_large)
Voorbeeld 2: Als Shift 1 maar +10 uren over heeft is dat slechts voldoende om een deel van Shift 2 te vullen.
:fill(white):strip_exif()/f/image/kXKomEG9lqdfQnoWBzXs3gZe.png?f=user_large)
Voorbeeld 3: Maar stel de factor wordt 0,10 dan past het makkelijk en houden we over.
:fill(white):strip_exif()/f/image/8Wg81Fx1iug0sZ0nf8ixfTgj.png?f=user_large)
Voorbeeld 4: Of als Shift 2 ook ineens +10 over heeft past het.
:fill(white):strip_exif()/f/image/nR3qUbXCSBL0qmtQ1v9FEz6C.png?f=user_large)
Ik heb dit nu opgelost met in C5 de formule:
code:
1
| =IF(AND(B4>0;C4<0);IF(ABS(C4)<B4/D1;C4;-B4/D1);0) |
En in D5:
code:
1
| =IF(D4<0;IF(IF(B4/D1+C5>0;(B4/D1+C5)*-1;0)<D4;D4;IF(B4/D1+C5>0;(B4/D1+C5)*-1;0));0) |
Dat werkt prima, maar is verre van elegant en is niet makkelijk uit te breiden voor extra shifts. Mijn vraag is of jullie nog creatieve oplossingen weten, los van VBA gebruiken. Ik zit er te dicht op en kan wel een frisse blik gebruiken.
Ultrawide gaming setup: AMD Ryzen 7 2700X | NVIDIA GeForce RTX 2080 | Dell Alienware AW3418DW