Страницы: 1
RSS
Исправление формата времени, Преобразование неправильного формата времени
 
            Добрый вечер форумчане прошу помощи в решении следующей, на самом деле думаю простой, почти решенной задачи.

           Есть столбец с неправильным представлением времени, значений несколько тысяч. Необходимо привести время к формату "чч:мм:сс,000". Задачу решил но есть нюансы. Часы, минуты и секунды приняли правильное значение а миллисекунды содержащие одно или два значения в итоге преобразования в другой формат приобретают не правильное значение (1 в 100 а не в 001, 66 в 660 а не в 066), что не позволяет в дальнейшем корректно работать со столбцом, вычитать значения и сортировать по возрастанию.  Файл с примером прилагаю.

Заранее, благодарю неравнодушных профессионалов Excel.
 
Сергей, с допстобцом B
=SUBSTITUTE(A5;":";"-";3)
результат в C
=--SUBSTITUTE(B5;"-";","&REPT("0";3-(LEN(B5)-SEARCH("-";B5))))
, можно и в одном но длинно получиться
Изменено: bigorq - 03.07.2026 08:23:46 (орфография)
 
Код
=SUMPRODUCT(
    FILTERXML("<x><y>" & SUBSTITUTE(A2, ":", "</y><y>") & "</y></x>", "//y"),
    1 / {24; 1440; 86400; 86400000}
)
Изменено: AlienSx - 02.07.2026 13:54:21
Пришелец-прораб.
 
Добрый вечер. Для новых офисов можно так
Код
=--(ТЕКСТДО(A2;":";3)&","&ПОВТОР("0";3-ДЛСТР(ТЕКСТПОСЛЕ(A2;":";3)))&ТЕКСТПОСЛЕ(A2;":";3))
 
Т.е. Ваша ошибка была в
"Замена
третьего
"":"" на "","" и преобразование
в число формулой"
Можно чуть короче
Код
=--(ТЕКСТДО(A2;":";3)&","&ПРАВСИМВ("000"&ТЕКСТПОСЛЕ(A2;":";3);3))
Изменено: Hugo - 01.07.2026 23:12:38
 
Большое спасибо всем кто откликнулся.
Вариант Bigorga подошел.
Второй вариант не подошел по причине старого офиса 2016.
Всё равно благодарю всех.
Если будут ещё варианты под старый офис буду очень признателен.
Благодарю всех  неравнодушных профессионалов Excel задача решена.

Всем большое спасибо, что откликнулись и помогли.
Всего Вам хорошего.
 
Цитата
ещё варианты
например:
=ЛЕВБ(ПОДСТАВИТЬ(A2;":";"    ";3);8)+ПРАВБ(ПОДСТАВИТЬ(A2;":";"  ";3);3)/86400000
или
=--ПОДСТАВИТЬ(A2;":";","&ПОВТОР(0;ЕСЛИОШИБКА(ПОИСК(":";ПРАВБ(A2;3));));3)
или
=СУММПРОИЗВ(ПСТР(ПОДСТАВИТЬ(A2;":";"    ";3);{1;9};{8;7})/{1;86400000})
 
ПавелW ,большое спасибо за дополнительные варианты решения задачи.
Всё работает осталось только разобраться с формулами. Некоторые вижу в первый раз, буду изучать.

Ещё раз спасибо, что откликнулись. Всего Вам самого наилучшего.

Тему можно закрывать Всем огромное спасибо.
 
AlientSx извините как то так получилось, что пропустил Ваш вариант.
Ваш вариант вообще какой-то мудрёный, буду изучать.

Ещё раз спасибо, что предложили свой вариант. Всего Вам самого наилучшего.
 
Сергей, Вы прям такой отзывчивый :) Вам медаль надо дать! "За отзывчивость"  :D Спасибо, что цените наш труд!
По делу: вариант не очень мудреный. Этот финт с FILTERXML известен и используется в старых версиях для того, чтобы получить из текста массив значений, разделенных тем знаком, которым они разделены (":" в данном случае). А далее дело техники - умножаем каждое значение на то, что нам нужно и суммируем - это работа SUMPRODUCT.
Пришелец-прораб.
 
AlientSx большое спасибо за разъяснение. Век живи век учись.
Труд людей которые откликаются и не остаются равнодушными к проблема других достоин благодарности к другому не привык.

Большое Вам спасибо и в Ваше лице Всем кто помогает таким как я, которым уже поздно учиться писать макросы которые что-то могут но к сожалению не всё но при этом пытаются учиться.
Страницы: 1
Читают тему
Наверх