Mam następujący problem:
W G4 mam19/01/2016 10:00
W F4 mam wartość200 (units)
W E4 mam wartość38 (minutes)
Chcę obliczyć G4 + (E4*F4)
IE 19/1/16 10:00 + 7,600 minutes
, ale opiera się na tydzień roboczy:
Monday to Thursday 8am-5pm
I Friday 8am-1pm
dlatego pokazuje wartość 09/02/2016 13:40
microsoft-excel
worksheet-function
date-time
spitfireblue
źródło
źródło
Odpowiedzi:
Rozumiem problem:
KROK 1
Ustaw tabelę dla swojego harmonogramu
Stwórz tabelę z dwutygodniowym harmonogramem. Musimy to potrwać dwa tygodnie, ponieważ w ten sposób możemy wybrać pierwszą pasującą datę rozpoczęcia (jak wtorek), a następnie uwzględnić kolejne 7 wierszy i wiedzieć, że mamy pełny tydzień pracy (jak wtorek - poniedziałek). Jeśli nie miałeś harmonogramu dwa razy i zacząłeś w piątek, dostałeś jeden dzień, a potem kilka pustych wierszy. Pamiętaj, aby uwzględnić sobotę i niedzielę. Oto migawka tabeli, do której zadzwoniłem
tblSchedule
:... i wersja CSV (czas jest wyświetlany jako ułamek dnia):
KROK 2
Skonfiguruj tabelę dla przebiegów produkcyjnych
Masz już początek tego. Dodamy kilka pól i zakładam, że używasz rzeczywistej tabeli (Wstaw wstążkę> Tabela). Jeśli tego nie zrobisz, wszystko będzie nadal działać, ale zrozumienie formuł będzie trudniejsze, ponieważ będzie to wiązka odwołań do komórek zamiast nazw pól. Stoły są niesamowite. Oto migawka tego, co nazwałem
tblProduction
: (Zwróć uwagę, że mój system używa formatu innego niż ISO dla dat,m/d/yyyy
ponieważ Ameryka.)... i wiersz nagłówka CSV:
KROK 3
Dodaj swoje formuły
Czas produkcji (godz.)
Ten jest dość oczywisty. Jedyną sztuczką jest to, że konwertujemy z minut na godziny, ponieważ reszta matematyki wykorzysta godziny.
Tygodnie
To po prostu przekształca się z godzin w tygodnie pracy. Pamiętaj, że musimy podzielić sumę wszystkich godzin pracy w tygodniu przez 2, ponieważ nasz harmonogram to dwa tygodnie, a nie tylko jeden.
Dni
Ten jest wielkim potworem. Może to zostać podzielone na kilka części, jeśli to pomoże, ale starałem się zachować go jako fajny gotowy produkt i pomyślałem, że twój przyjaciel nie chciałby tam wszystkich dodatkowych kolumn. Jeśli masz zamiar to zrobić, może wyglądać mniej więcej tak:
... i wiersz nagłówka CSV:
Czas rozpoczęcia
Czas rozpoczęcia pracy
Godziny w zeszłym tygodniu
Godziny od początku ostatniego tygodnia
Ta ostatnia formuła jest tą, której naprawdę potrzebujemy. Jeśli rozwiniesz się do tych kolumn, formuła
Days
będzie następująca:Podstawową ideą jest znalezienie pierwszego dnia w harmonogramie, kiedy łączna liczba godzin pracy od dnia początkowego jest większa niż liczba godzin potrzebnych do zakończenia produkcji. Właśnie to
MATCH(TRUE,INDEX((SUBTOTAL()-[Hours Left])>=0,0),0)-1
robi.SUBTOTAL
Funkcja robi trochę magiiOFFSET
i zwraca tablicę wartości. Te wartości to łączna liczba godzin pracy do końca pierwszego dnia, drugiego dnia, trzeciego dnia itd. Odejmij liczbę godzin pozostałych do pracy, a otrzymasz liczbę dodatnią lub ujemną (lub zero, stąd>=0
zamiast po prostu>0
).INDEX
zwraca tablicęFALSE
iTRUE
takMATCH
znajduje pierwsząTRUE
wartość. Ponieważ zastanawiamy się, ile więcejdni, których potrzebujemy, niż tylko pierwszy dzień, odejmij jeden na końcu. Dotarcie do pojedynczej liczby od 0 do 6 to skomplikowany proces.godziny
Początek tego jest podobny do
Hours in Last Week
powyższej formuły.IF
Oświadczenie na koniec odejmuje się liczbę godzin pracy między pierwszym dniu i ostatnim dniu, wykluczają. Jeśli zaczniemy od wtorku do piątku, odejmijmy środę i czwartek. To daje nam godziny, które musimy przepracować ostatniego dnia (który może być taki sam jak pierwszego dnia).Koniec
Data rozpoczęcia + 7 * (liczba tygodni jako liczba całkowita, pomniejszona o ułamek) + dni + (godziny przeliczone na wartość dziesiętną dni) = data i godzina oraz koniec produkcji.
PODSUMOWANIE
Tak, to są wielkie formuły. Uczyniłem jednak dość łatwym utrzymanie i przetestowanie kilku różnych przypadków brzegowych, więc myślę, że wszystko działa poprawnie. Jeśli twój przyjaciel chce porządnego arkusza, użyj dużej formuły dla
Days
. Jeśli chce, może łatwiej wyjaśnić, użyj wersji z kilkoma formułami pomocniczymi.DODANIE
Za to, co jest warte, twój przyjaciel może również dodać w świecie rzeczywistym czynniki, takie jak oczekiwana szybkość złomowania i czas przestoju (w tym planowane przerwy). Oto przykład, który uwzględnia te, zanim zostaną wprowadzone do skomplikowanych formuł powyżej.
Reject Rate
Wpisane ręcznie jako wartości procentowe.
Czas produkcji (godz.)
Standardowe godziny pracy
Wpisano ręcznie. Te same wartości, które zastosowano w oryginalnych przykładach powyżej.
Przestoje
Wprowadzany ręcznie jako liczba godzin, a nie jako procent. Możesz go zmienić na procent, ale godziny były łatwiejsze do wyświetlenia.
Godziny pracy
Pamiętaj, że może to zepsuć faktyczny czas zakończenia ostatniego dnia produkcji. Formuły zakładają, że zaczynasz o 8 rano i pracujesz przez X godzin, kiedy naprawdę jest gdzieś przerwa w środku. Jednak nadal będzie działać w przybliżeniu.
źródło