Превышенное время в Excel как формула вычитания простых чисел

0

Для простоты ввода и предотвращения вставки в Excel ненужного времени суток и информации о AM / PM я использую этот пользовательский формат для ввода времени в минутах и ​​секундах: "00\:00"

Я пытаюсь рассчитать разницу во времени с этим типом данных, но Excel не распознает ее как базовую нумерацию 60. Есть ли способ сохранить этот формат и при этом вычислить результат?

Например, если A1 читает «00:30», а B1 - «01:21», как мне получить C1, чтобы вычислить и получить «00:51»?

этюды
источник
Я думаю, что это может быть проблема XY . Я знаю, что вы пытаетесь не допустить, чтобы Excel вставлял ненужную информацию, но какую информацию он вводит, которую нельзя исправить с помощью форматирования?
Брюс Уэйн
Никогда не знал эту концепцию. Кто-то предложил решение ниже, но я буду помнить об этом в будущем, спасибо.
этюды

Ответы:

2

Вот способ сделать это с формулой, хотя в этом уравнении так много скобок, что я собираюсь коснуться.

введите описание изображения здесь

Поскольку две самые правые цифры в вашем пользовательском формате представляют секунды, мы можем разделить их, используя RIGHT (). Затем вычитая это из исходного числа, вы получите «минуты» в вашем произвольном формате.

Я начну с кусочков, а затем построю формулу из ее частей.

Convert B to Seconds  =  (60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2)
Convert A to Seconds  =  (60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2)
Difference in Seconds  =  ((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2))

Now to convert back to the original format:
 1. Divide the difference by 60, truncate it, and multiply by 100 to get the minutes part.
 2. Divide the difference by 60, and take the modulus to get the seconds part.
 3. Add 1 and 2.

Minutes Part  =  100*(TRUNC((((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)
Seconds Part  =  MOD((((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2))),60)

And here's the entire formula:

=100*(TRUNC((((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2)))/60))+MOD((((60*(B2-RIGHT(B2,2))/100)+RIGHT(B2,2))-((60*(A2-RIGHT(A2,2))/100)+RIGHT(A2,2))),60)

Уф! Надеюсь это поможет.

Bandersnatch
источник
1
Ты как чертовски безумный ученый. Спасибо за то, что вы не только все продумали, но, что более важно, за объяснение. (Я знаю, что нет комментариев «спасибо», поэтому я удалю это позже, но это серьезно заслуживает благодарности!)
etudes
... да, что ты сказал! (Красиво сделано, вау).
Брюс Уэйн
0

Если вы используете 121и форматируете это 01:21значение (т.е. 1 минута и 21 секунда), вы можете использовать вспомогательный столбец для выполнения математических операций:

В столбце B поместите это и перетащите вниз:

=IF(LEN(A1)=4,TIME(0,LEFT(A1,2),RIGHT(A1,2)),IF(LEN(A1)=3,TIME(0,LEFT(A1,1),RIGHT(A1,2)),TIME(0,0,A1)))

Тогда B3вы можете сделать B2-B1.

Это должно работать на время от 00:01до 59:59я верю.

введите описание изображения здесь

Брюс Уэйн
источник
Спасибо! Однако с тем, как у меня все изложено, это будет проблематично. Это потребовало бы двух вспомогательных столбцов - я должен был бы указать более точно, A1 - 00:30, B1 - 01:21, и я хочу, чтобы C1 читал 00:51 (я обновляю это в моем оригинальном посте). Я использую данный шаблон Excel, поэтому, если я могу помочь, я не хочу добавлять какие-либо столбцы. Возможно ли сделать это в уравнении, которое берет первые два символа и преобразует его в основание 60, затем последние два символа и преобразует это?
этюды
@etudes - Будет ли это работать (преобразование первых двух символов)? Потому что, если у вас есть 30, он конвертирует это в базу 60. Но если у вас есть, 121он берет 12в базу 60. Что если у вас есть 4030, это займет 40? ... также, VBA (макрос) вариант?
Брюс Уэйн
О, я думаю, вы правы ... Формула была бы идеальной, потому что иногда мне приходится возвращаться назад и вносить коррективы во времена, но я думаю, что макрос будет следующей лучшей вещью. Будет ли это что-то, что я запускаю в конце, и оно будет выполнять вычисления?
этюды
@etudes - Вы можете иметь собственную формулу, которая будет работать как =get_time_difference(A1,A2)... или как угодно
Брюс Уэйн
Понятно Поэтому, как вы делали раньше, мне нужно было бы по формуле преобразовать числа в фактические данные времени, а затем выполнить вычитание, да? Вот где я застрял, я недостаточно знаю систему формул Excel, чтобы понять, как это сделать.
этюды