Страницы: 1
RSS
Подсчет длительности времени в Таблицах Гугл (Google Sheets), делаем подсчёт длительности времени в формате ММ:СС.000 в Таблицах Гугл (Google Sheets)
 
Всем привет.
проблема с подсчётом времени...

есть таблица с ячейками "время-1" и "время-2" в формате ММ:СС.000 - то есть, минуты:секунды.долисекунды (три цифры после точки).

время-1                время-2                сумма
00:30.001              02:30.123                 ?
00:20.191              05:30.001                 ?
01:10.000              02:20.341                 ?


Задача подсчитать ячейку временем-1 + временем-2 и поставить результат в ячейку СУММА.

Проблема в том что формула =СУММ тут не работает, так как формат ММ:СС.000 почему-то считается за текст....

В интернете нашел только такое решение:
Код
=ArrayFormula(ТЕКСТ(СУММ(ЕСЛИОШИБКА(ВРЕМЗНАЧ(I6;K6)));"mm:ss.000"))

Но оно тоже не работает  :cry:
Может я что-то не так делаю?
 
Цитата
написал:
Но оно тоже не работает
может потому, что для ЕСЛИОШИБКА задан только один аргумент в то время, когда функция требует 2, а ВРЕМЗНАЧ требует 1, а Вы 2 указываете?
Вы не в ChatGP эти формулы подсмотрели, случаем?

P.S. Есть мнение, что если выкладывать ссылку на файл с данными - то решение можно получить быстрее.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
...я понятия не имею где взять этот чатGPT.
эта тема прошла как-то мимо меня.


прочитав одну статью, пример взял тут:
https://docs.google.com/spreadsheets/d/1zOWy919I6lLgOvAIF6fMyxoPTjGA9psnd-QJt9vmlW0/edit#gid=9686104...
(прямо в статье ссылка на этот пример)

но он же тут как-то работает и тоже без других аргументов...
Изменено: Данил И - 26.04.2023 11:11:06
 
Цитата
написал:
но он же тут как-то работает и тоже без других аргументов
ЕСЛИОШИБКА - да. Правда смысла в ней тогда мало. А вот ВРЕМЗНАЧ точно требует только один аргумент, а у Вас их два...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
А вот ВРЕМЗНАЧ точно требует только один аргумент, а у Вас их два...
что-то я совсем запутался…
мне надо сложить две ячейки и получить результат в третьей ячейке….
два - так как надо сложить две ячейки.
пока ничего не понимаю…  :D

попробовал поставить один аргумент ВРЕМЗНАЧ для ячейки в которой будет результат - и тишина, как было 00:00.000, так и осталось
Изменено: Данил И - 26.04.2023 15:04:41
 
Мы еще меньше понимаем - файл, в котором Вы что-то хотите получить так и не видно. Сидеть и гадать что и где Вы хотите получить от неправильно записанной формулы так себе занятие...
Цитата
Данил И написал:
мне надо сложить две ячейки
так складывайте. Зачем Вы их обе в функцию ВРЕМЗНАЧ записываете?
Код
=ТЕКСТ(I6+K6;"mm:ss.000")
Изменено: Дмитрий(The_Prist) Щербаков - 26.04.2023 16:23:56
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
Мы еще меньше понимаем - файл, в котором Вы что-то хотите получить так и не видно.
сделал: https://docs.google.com/spreadsheets/d/1RMjBiFFmSPdFmYR2ICAL_cHOh_71xF9dJADCqJFN­QDs/edit?usp=sharing

Цитата
написал:
так складывайте.
складываю по вашему примеру... что-то не попёрло.
Пишет ошибку ЗНАЧ:
"Аргумент Параметр 1 в функции ADD поддерживает только значения типа "число". Тип значения "00:30.001" – текст, поэтому его нельзя привести к типу "число"."
 
Все верно пишет.Написал функцию ConvrtTime() , она преобразует  текст в секунды
 
Цитата
doober написал:
складываю по вашему примеру... что-то не попёрло
и не попрёт при таких исходных данных:
Цитата
Данил И написал:
Тип значения "00:30.001"
Вот поэтому и нужны примеры реальных данных - такое значение нельзя напрямую конвертировать в число или время.
Выше doober уже предложил решение.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Да, работает.
Я немного подкорректировал формулу добавив =ЕСЛИОШИБКА

Однако работает "микс" из этих формул только на ПК в браузере.
На мобильных устройствах с использованием приложения "ГуглТаблицы" - работает наполовину...
То есть, при открытии таблицы в программе - постоянно горит надпись ЗАГРУЗКА ДАННЫХ. Но после того, как я обернул формулы в =ЕСЛИОШИБКА стало отображаться пустота... Однако, пересчёт(работа) формул сразу начинается если сделать любое изменение времени: добавив в существующее время 001 долю секунды.
Очень странная работа формул в приложении... дурь какая-то.

Может кто знает, как решить эту проблему? чтобы эти формулы работали и в приложении "ГуглТаблицы" для iOS и Android ?
 
Попробуйте без скриптов - вот такой формулой:
Код
=ЕСЛИОШИБКА((((ИНДЕКС(SPLIT(I4;":");1)*60+ИНДЕКС(SPLIT(ИНДЕКС(SPLIT(I4;":");2);".");1)+ИНДЕКС(SPLIT(I4;".");2)/1000)+(ИНДЕКС(SPLIT(K4;":");1)*60+ИНДЕКС(SPLIT(ИНДЕКС(SPLIT(K4;":");2);".");1)+ИНДЕКС(SPLIT(K4;".");2)/1000))/86400);"")

в файл вписал.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Да, спасибо.
Вот теперь работает на мобильных устройствах в приложении ГуглТаблицы.

А можно пояснить логику работы формулы. Пока что-то не понял. Но судя по всему Сплитом мы соединяем цифры, а Индексом ищем строку в ячейке с временем…

Я пытался изменить формулу под ДВЕ цифры после точки(на всякий), но не понимая логики работы формулы, так и не смог.
 
Цитата
написал:
Написал функцию ConvrtTime() , она преобразует  текст в секунды
спасибо.
в дебаге функция не может выполнится и пишет ошибку:
TypeError: Cannot read properties of undefined (reading 'split')

может по этому функция не работала в приложении Гугл Таблицы?
 
Цитата
Данил И написал:
пояснить логику работы формулы
Опишу только то, что может быть самым непонятным:
SPLIT - разбивает строку по указанному символу, создавая массив значений. Т.е. в данном случае, если взять строку "00:30.002" и указать символ ".", то будет создан массив из двух элементов - до точки и после: {"00:30","002"}. Чтобы обращаться к этим элементам мы и используем ИНДЕКС - подсовываем ему массив от функции SPLIT и отбираем элемент: ИНДЕКС({"00:30","002"};1) - это первый элемент, т.е. "00:30", ИНДЕКС({"00:30","002"};2) - это второй элемент, т.е. "002".
Все остальное основано именно на этом и логику можно проследить пошагово.
А умножение на 60 и деление - это чтобы полученные числа перевести в правильное "время".
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Спасибо. Теперь более-менее понятно. То есть, функции всё равно сколько цифр после точки?


Но у меня ко что-то не получается.
Посмотрите, в таблице, время напротив красных галочек, там ВРЕМЯ написано 02:30.122 (ММ:СС.ссс), а в результатах (рядом красные цифры) формула пересчитала как 24:02.122


Почему так?

PS
конкретно в этом примере формула нужна для нормальной работы ранжирования занятых мест. Иначе места не проставляются.
 
Цитата
Данил И написал:
а в результатах (рядом красные цифры) формула пересчитала как 24:02.122
нигде не увидел подобного. Возможно где-то с форматами напутали.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
написал:
нигде не увидел подобного. Возможно где-то с форматами напутали.
да, сейчас всё нормально отображается. наверно был глюк с форматами ячейки.

спасибо. формула работает - вставил формулу куда надо  ;)  и всё сразу заработало без глюков.
Всё чётко работает на ПК в браузере и на мобильных устройствах в приложении ГуглТаблицы.
 
Продолжение следует...

в общем эксперимент привел к выводу, что либо у Гугла проблема с числом 11 (одиннадцать), либо у меня в коде что-то не так.

проблема заключается в том, что если ДОЛИ СЕКУНДЫ ставить цифры 11, то что-то странное происходит с кодом, и он сходит с ума.


Задача (напомню):
(пример специально показан на одном листе)

- на одном листе вводим время спортсмена по маске AA:BB.XX,
ГДЕ:
АА - минуты,
BB - секунды,
XX - доли секунды

- на другом листе автоматически появляется преобразования этого времени по формуле:
Код
=ЕСЛИОШИБКА((((ИНДЕКС(SPLIT(C4;":");1)*60+ИНДЕКС(SPLIT(ИНДЕКС(SPLIT(C4;":");2);".");1)+ИНДЕКС(SPLIT(C4;".");2)/100))/86400);"")
для подсчёта занятого места.


Замечено, что если ДОЛИ СЕКУНДЫ в себе содержать цифру 11 ( на пример 00:11.11 ),
то мы получаем вместо правильно введенного времени 00:11.11 вот такую преобразованную ерунду - 40:07.11

Посмотрите пожалуйста, что у меня в коде не так...?
https://docs.google.com/spreadsheets/d/1EG40YLxYqhM7BZa4jP4cbh9KG4VEfPd_aYk8rQw8­qjY/edit?usp=sharing
 
просто 11.11 или  все что подходит под дату преобразуется в дату хоть вы этого и не хотели, замените . на запятую или что либо иное и работайте с этим.
INDEX(SPLIT(INDEX(SPLIT(substitute(C4;".";";");":");2);";");1)
Изменено: БМВ - 22.12.2024 22:26:02
По вопросам из тем форума, личку не читаю.
 
пока не совсем понял.

в примере вы подставили
Код
INDEX(SPLIT(INDEX(SPLIT(substitute(C4;".";";");":");2);";");1)
и там также отображается ерунда в виде 40:16.11

пробовал вот так
0:20,11 (запятая)
0:20;11 (точка с запятой)
0:20:11 (двоеточие)

в таком виде расчёт вообще исчезает.
 
Я в примере все поставил и все работает.
По вопросам из тем форума, личку не читаю.
Страницы: 1
Наверх