Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Помогите ссумировать в столбике формат которых 1мин 3 сек - Страница 2 - Мир MS Excel

Старая форма входа
  • Страница 2 из 2
  • «
  • 1
  • 2
Модератор форума: китин, _Boroda_  
Помогите ссумировать в столбике формат которых 1мин 3 сек
nilem Дата: Среда, 02.02.2011, 19:52 | Сообщение № 21
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Две UDF в дополнение к формулам Michael_S.
К сообщению приложен файл: 3966198.zip (15.2 Kb)


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеДве UDF в дополнение к формулам Michael_S.

Автор - nilem
Дата добавления - 02.02.2011 в 19:52
Alex_ST Дата: Среда, 02.02.2011, 20:24 | Сообщение № 22
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Ну, вот, пока я свою UDF-ку писАл, которая просто преобразует глючную дату в ячейке в нормальный вид, а дальше с данными можно будет работать обычными формулами:
Code
Function NormTime(xCell As Range) As Date
     Dim Arr, i%
     Arr = Split(xCell.Value)
     For i = 0 To UBound(Arr) - 1 Step 2
         Select Case Arr(i + 1)
         Case "мин"
             NormTime = DateAdd("n", Arr(i), NormTime)
         Case "сек"
             NormTime = DateAdd("s", Arr(i), NormTime)
         End Select
     Next i
End Function

nilem уже давно практически тем же методом сумму всего диапазона нашёл.
Хотя, ИМХО, всё-таки преобразовывать данные КАЖДОЙ ячейки в отдельном вспомогательном столбце, как предлагал и сделал я, правильнее.



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 02.02.2011, 20:25
 
Ответить
СообщениеНу, вот, пока я свою UDF-ку писАл, которая просто преобразует глючную дату в ячейке в нормальный вид, а дальше с данными можно будет работать обычными формулами:
Code
Function NormTime(xCell As Range) As Date
     Dim Arr, i%
     Arr = Split(xCell.Value)
     For i = 0 To UBound(Arr) - 1 Step 2
         Select Case Arr(i + 1)
         Case "мин"
             NormTime = DateAdd("n", Arr(i), NormTime)
         Case "сек"
             NormTime = DateAdd("s", Arr(i), NormTime)
         End Select
     Next i
End Function

nilem уже давно практически тем же методом сумму всего диапазона нашёл.
Хотя, ИМХО, всё-таки преобразовывать данные КАЖДОЙ ячейки в отдельном вспомогательном столбце, как предлагал и сделал я, правильнее.

Автор - Alex_ST
Дата добавления - 02.02.2011 в 20:24
Alex_ST Дата: Среда, 02.02.2011, 22:01 | Сообщение № 23
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Вот, примерчик сделал чтобы проще было понять.
К стати:
1. Выяснил, что мой подход был правильным - лучше создавать дополнительный столбец, в ячейках которого время будет нормальным. Это позволит выявить, где сумма оператором связи была посчитана не правильно. А это в таблице, как выяснилось - в трёх местах. Пришлось на всякий случай сделать ещё один доп.столбец для выявления ошибок.
2. Я не понял, что там за странный тариф - 27,2944 руб. в минуту? Если это курс USD, то он что-то не тот и получать его лучше прямым запросом на сервак СБ РФ (я там в примере сделал для примера одну ячейку с запросом курса, а подробнее - см. в разделе "Есть готовое решение").
3. Приложенный pasha_malov файл имеет явное "ожирение" - 1,5 метра. Прогнал его фитнес-макросом ReduceSize, разместив макрос в Module2 файла и он сразу "похудел" почти в 8 раз - 210 кило вместе со всеми моими доработками.
К сообщению приложен файл: 4_pasha_malov.zip (41.7 Kb)



С уважением,
Алексей
MS Excel 2003 - the best!!!


Сообщение отредактировал Alex_ST - Среда, 02.02.2011, 22:09
 
Ответить
СообщениеВот, примерчик сделал чтобы проще было понять.
К стати:
1. Выяснил, что мой подход был правильным - лучше создавать дополнительный столбец, в ячейках которого время будет нормальным. Это позволит выявить, где сумма оператором связи была посчитана не правильно. А это в таблице, как выяснилось - в трёх местах. Пришлось на всякий случай сделать ещё один доп.столбец для выявления ошибок.
2. Я не понял, что там за странный тариф - 27,2944 руб. в минуту? Если это курс USD, то он что-то не тот и получать его лучше прямым запросом на сервак СБ РФ (я там в примере сделал для примера одну ячейку с запросом курса, а подробнее - см. в разделе "Есть готовое решение").
3. Приложенный pasha_malov файл имеет явное "ожирение" - 1,5 метра. Прогнал его фитнес-макросом ReduceSize, разместив макрос в Module2 файла и он сразу "похудел" почти в 8 раз - 210 кило вместе со всеми моими доработками.

Автор - Alex_ST
Дата добавления - 02.02.2011 в 22:01
Serge_007 Дата: Четверг, 03.02.2011, 00:40 | Сообщение № 24
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
Quote (pasha_malov)
если я выделяю определенное кол-во ячеек в столбце? надо наверное в место диапозона ячеек ввести ссылку на буфер, куда сохраняется выделенный отрезок?

Абсолютно верно smile

Quote (pasha_malov)
и как это выглядет?

См. вложение
К сообщению приложен файл: pasha_malov_2.xls (35.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Quote (pasha_malov)
если я выделяю определенное кол-во ячеек в столбце? надо наверное в место диапозона ячеек ввести ссылку на буфер, куда сохраняется выделенный отрезок?

Абсолютно верно smile

Quote (pasha_malov)
и как это выглядет?

См. вложение

Автор - Serge_007
Дата добавления - 03.02.2011 в 00:40
Alex_ST Дата: Четверг, 03.02.2011, 19:08 | Сообщение № 25
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3213
Репутация: 609 ±
Замечаний: 0% ±

2003
Чуть "подполировал" свою ЮДФ-ку
Теперь не мешают лишние пробелы, имеющиеся в текстовом варианте времени. И обозначения единиц измерения теперь могут быть не строго "мин" и "сек", а только начинаться с этих трёх букв (мин., минут, сек., секунд)
Code
Function NormTime(xCell As Range) As Date
     Dim Arr, i%
     Arr = Split(Application.WorksheetFunction.Trim(xCell(1).Value))  ' "расщепить" текст первой ячейки в одномерный массив, считая пробел разделителем данных
     For i = 0 To UBound(Arr) Step 2
         Select Case Left(Arr(i + 1), 3)
         Case "мин"
             NormTime = DateAdd("n", Arr(i), NormTime)
         Case "сек"
             NormTime = DateAdd("s", Arr(i), NormTime)
         End Select
     Next i
End Function



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеЧуть "подполировал" свою ЮДФ-ку
Теперь не мешают лишние пробелы, имеющиеся в текстовом варианте времени. И обозначения единиц измерения теперь могут быть не строго "мин" и "сек", а только начинаться с этих трёх букв (мин., минут, сек., секунд)
Code
Function NormTime(xCell As Range) As Date
     Dim Arr, i%
     Arr = Split(Application.WorksheetFunction.Trim(xCell(1).Value))  ' "расщепить" текст первой ячейки в одномерный массив, считая пробел разделителем данных
     For i = 0 To UBound(Arr) Step 2
         Select Case Left(Arr(i + 1), 3)
         Case "мин"
             NormTime = DateAdd("n", Arr(i), NormTime)
         Case "сек"
             NormTime = DateAdd("s", Arr(i), NormTime)
         End Select
     Next i
End Function

Автор - Alex_ST
Дата добавления - 03.02.2011 в 19:08
  • Страница 2 из 2
  • «
  • 1
  • 2
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!