Я полностью застрял на этом, ваша помощь будет высоко оценена! Допустим, у меня есть 2 смены на электростанции, смена 1 = 10 вечера - 4 часа утра и смена 2 = 8 утра - 4 часа дня. С 4 до 8 утра на заводе не ведется никакой работы. Ячейка A1 = Входящее время, Ячейка B1 = Исходящее время и Ячейка C1 = Время обработки (или работы). Я пытаюсь найти формулу, которая может рассчитать время обработки, скажем, например, входящее время (в ячейке A2) составляет 6:00 утра, а исходящее время (в ячейке B2) - 15:00, тогда мое время обработки в ячейке C2 должно быть 6 ,

IF((IF 4:00<A2<8:00,"0", ??)

Синтаксис времени полностью смущает меня. Я думал о вложенном операторе IF, в котором есть 4 случая: 1) входящее и исходящее время попадают между обоими диапазонами сдвига, 2) исходящий находится не в пределах диапазона, а входящий, 3) наоборот 2, 4) оба раза не в зоне

Точно так же, как насчет написания макроса? (значения времени, вероятно, всегда будут в часах, например, 2:00, 3:00, 4:00 и в 24-часовом формате). Я определил переменные, и я думаю, что метод, чтобы показать часы часов для входящих и исходящих, но я застрял

sub time() 
dim inbound as string 
dim outbound as string 
dim processing as string 
inbound = Thisworkbook.Sheets("Sheet1").Range("A:A").Value 
outbound = Thisworkbook.Sheets("Sheet1").Range("B:B").Value 
processing = Thisworkbook.Sheets("Sheet1").Range("C:C").Value 
IF Len(inbound) = 2 Then 
   inbound = "00:" & inbound 
ELSEIF Len(inbound) = 3 Then 
   inbound = "0" & Left(inbound,1) & ":" & Right(inbound,2) 
ELSEIF Len(inbound) = 4 Then inbound = Left(val,2) & ":" & Right  (inbound,2)  
ELSE inbound = "Not a valid time"

(то же самое, если еще операторы впоследствии для исходящих также)

Пожалуйста, ваша помощь будет принята с благодарностью!

2 ответа2

0

Эта формула охватывает вакансии, поступившие после окончания работы вчера и завершенные сегодня. Также 15:00-8:00 = 7 часов, а не 6. Есть ли час обеда?

=(IF(VALUE(A1)>VALUE("16:00"),VALUE("24:00")-IF(VALUE(A1)<VALUE("22:00"),VALUE("22:00"),VALUE(A1)),0)+IF(VALUE(B1)>VALUE("16:00"),VALUE("16:00"),VALUE(B1))-IF(VALUE(A1)<VALUE("8:00"),VALUE("8:00"),VALUE(A1))+IF(VALUE(A1)<VALUE("4:00"),VALUE("4:00")-VALUE(A1),0))*24
0

Вероятно, проще всего иметь пару расчетных ячеек.

Сделайте E2 перекрытием нижней стороны A2 с временем простоя: =MIN(MAX(A2,"4:00"),"8:00")

Сделайте F2 перекрытием нижней стороны B2 с временем простоя: =MAX(MIN(B2,"8:00"),"4:00")

Тогда вычисления в C2 просты: =B2-A2-(F2-E2)

Например:

| |   A   |   B   |   C   |   D   |   E   |   F   |
|1|  In   |  Out  |  Work |       |  Min  |  Max  |
|2|  6:00 | 10:00 |   2h  |       |  6:00 |  8:00 |
|3|  9:00 | 10:00 |   1h  |       |  8:00 |  8:00 |
|4|  2:00 | 10:00 |   4h  |       |  4:00 |  8:00 |

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .