Как да изчисля секцията за нощно работно време?
ЗДРАВЕЙТЕ! МОЛЯ ЗА СЪВЕТ! Това е таблица за заработка. Въпросът ми е свързан със секцията за изчисляване на нощното работно време( точка 3). Каква да е формулата за изчисляването му, като се вземат данните от 2., вместо да се въвеждат ръчно в 1 ( т.е. колоната от 1 да отпадне)? И се вземе под внимание , че нощният труд е в диапазон от 22,00ч- 06,00ч.
Ако има качено изображение на таблица, при мен не се вижда. Бихте ли обяснили по-подробно задачата.
Привет! Много се извинявам. Ето това е коректното изображение. Благодаря !
Здравейте, Теменужка. Разгледах много внимателно примера. Сигурно имате сериозна причина да се скрият колоните за нощния труд. Но тези колони са полезни, защото опростяват изчисленията. Ще споделя, че се опитах с вградените функции на Excel да съставя формула и така стигнах до 8 вложени IF в комбинация с AND и OR. Според мен скриването на колоните може да стане по 2 начина: 1. Просто да се скрият двете колони или да се преместят на друг лист. Тогава в таблицата ще се показва само нощния труд с референция към листа където се изчислява Нощен труд От, Нощен труд До. 2. Да се създаде UDF (User Defined Function), с която автоматично да се изчислява нощния труд. Веднага искам да отбележа, че създаването и използването на UDF изисква познания за VBA.
Ако имате още въпроси, моля пишете ми.
Димитринка, Здравейте! Много Ви благодаря за положените усилия и време. Желанието ми е да изчисля 3. , като се вземат данните от 2. Ако изобщо може да се случи.И така ще мога да махна 1.( не ми е нужна колоната). Дано ме разбирате правилно.
Разбирам те много добре. Според мен по-лесно е като скриеш ("hide") колоните, 1. При по-сложни изчисления, както е при теб, е по-добре да имаш колони с междинни резултати, които могат да се "скрият", ако не искаш да се показват или отпечатват.
Eто тук се вижда формулата , която е сполучлива за 1- работното време преминва през 0 часа. Но за 2. не изчислява правилно, защото работното време започва след 0 часа. Аз питам , може ли в показаната формуала да се направи корекция и директно с нея да се изчисли и в т.1и надолу в т. 2? Формулата е: =IF(B6<22/24;2/24;1-B6)+IF(C6<6/24;C6;6/24)
Много добро решение, браво! Както вече споменах трябва да се направят допълнителни проверки с IF, затова е по-добре да се използват междинни колони, които след това, ако искаш можеш да ги скриеш. Корекцията, за която споменаваш, по всяка вероятност означава да се прецизират изчисленията, за да стане формулата универсална, т.е. винаги да изчислява коректно. На изображението показвам пример, в който допълвам твоята формула като включвам още проверки с IF. Важното е, че формулите дават коректни изчисления, а на теб могат да ти подскажат и по-добри решения.
На изображението се вижда моето решение: колона start - показва началото, колона end - края. Тъй като формулите включват повече проверки, за да бъде коректен резултата, са показани над таблицата. Обърни внимание, че за 1 и 2 резултатите не са коректни, но за 3 и 4, тъй като часовете са извън нощния труд, резултатът е 0. С 5 е показана отрицателна. Надявам се, че това ще ти помогне.
По-добро решение е да се напише UDF (User Defined Function). Когато се правят по-сложни изчисления и формулите стават много "дълги", е по-добре изчисленията да се правят с UDF, както е в твоя пример. На първата картинка показвам функцията NightTime (UDF, която написах, за да изчислява нощното време), достатъчно е да се въведат два аргумента - начало и край! На втората картинка показвам част от кода на функцията NightTime. Тъй като процедурата е по-дълга, не се вижда целия код. Ако това решение ще ти свърши работа, изпрати ми на лично съобщение имейл, за да изпратя файла. За съжаление във форума няма възможност да се прикачват файлове.
Димитринка, здравей. Много ти благодаря за съдействието ти. Ще разледам подробно всичко и ако имам въпроси, ще попитам пак.