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

Вход

Регистрация

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

 

= Мир MS Excel/Преобразовать значение в ячейке в часы и минуты - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразовать значение в ячейке в часы и минуты (Макросы/Sub)
Преобразовать значение в ячейке в часы и минуты
vider Дата: Среда, 06.07.2016, 21:39 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Собственно вопрос в названии темы. Подскажите как лучше преобразовать с помощью VBA значения в ячейках которые содержат "КВ:"? Пример данных во вложении.
К сообщению приложен файл: 9540686.xlsx (8.7 Kb)
 
Ответить
СообщениеСобственно вопрос в названии темы. Подскажите как лучше преобразовать с помощью VBA значения в ячейках которые содержат "КВ:"? Пример данных во вложении.

Автор - vider
Дата добавления - 06.07.2016 в 21:39
Nic70y Дата: Среда, 06.07.2016, 22:32 | Сообщение № 2
Группа: Друзья
Ранг: Экселист
Сообщений: 8761
Репутация: 2273 ±
Замечаний: 0% ±

Excel 2010
Ctrl+h записать рекордером
[vba]
Код
Sub ch__()
    u = Cells(1, 1).End(xlDown).Row
    Range("A1:A" & u).Replace What:="КВ:", Replacement:="", LookAt:=xlPart
    Range("A1:A" & u).Replace What:="час.", Replacement:=":", LookAt:=xlPart
    Range("A1:A" & u).Replace What:="мин.", Replacement:="", LookAt:=xlPart
    Range("A1:A" & u).Replace What:="С", Replacement:="", LookAt:=xlPart
    Range("A1:A" & u).Replace What:=" ", Replacement:="", LookAt:=xlPart
    Range("A1:A" & u).NumberFormat = "[h]:mm"
End Sub
[/vba]


ЮMoney 41001841029809
 
Ответить
СообщениеCtrl+h записать рекордером
[vba]
Код
Sub ch__()
    u = Cells(1, 1).End(xlDown).Row
    Range("A1:A" & u).Replace What:="КВ:", Replacement:="", LookAt:=xlPart
    Range("A1:A" & u).Replace What:="час.", Replacement:=":", LookAt:=xlPart
    Range("A1:A" & u).Replace What:="мин.", Replacement:="", LookAt:=xlPart
    Range("A1:A" & u).Replace What:="С", Replacement:="", LookAt:=xlPart
    Range("A1:A" & u).Replace What:=" ", Replacement:="", LookAt:=xlPart
    Range("A1:A" & u).NumberFormat = "[h]:mm"
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 06.07.2016 в 22:32
Manyasha Дата: Среда, 06.07.2016, 22:34 | Сообщение № 3
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
vider, если в ячейках всегда указаны и часы и минуты, то можно так:
[vba]
Код
Sub timeFormat()
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lr
        With CreateObject("VBScript.RegExp")
            .Global = True
            .Pattern = "\d+"
            Set objMatches = .Execute(Cells(i, 1))
            If objMatches.Count > 0 Then Cells(i, 1) = TimeSerial(objMatches.Item(0), objMatches.Item(1), 0)
        End With
    Next i
    [a1].Resize(lr).NumberFormat = "[hh]:mm"
End Sub
[/vba]

Преобразовывает все значения в 1-м столбце
К сообщению приложен файл: 9540686-1.xlsm (16.5 Kb)


ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеvider, если в ячейках всегда указаны и часы и минуты, то можно так:
[vba]
Код
Sub timeFormat()
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    For i = 1 To lr
        With CreateObject("VBScript.RegExp")
            .Global = True
            .Pattern = "\d+"
            Set objMatches = .Execute(Cells(i, 1))
            If objMatches.Count > 0 Then Cells(i, 1) = TimeSerial(objMatches.Item(0), objMatches.Item(1), 0)
        End With
    Next i
    [a1].Resize(lr).NumberFormat = "[hh]:mm"
End Sub
[/vba]

Преобразовывает все значения в 1-м столбце

Автор - Manyasha
Дата добавления - 06.07.2016 в 22:34
krosav4ig Дата: Среда, 06.07.2016, 23:03 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 2347
Репутация: 989 ±
Замечаний: 0% ±

Excel 2007,2010,2013
а можно немного поизвращаццо?
[vba]
Код
Sub dd()
    With [A1].CurrentRegion
        .Value = Application.IfError(Evaluate(Join(Array("mmult(MID(", _
            ",SEARCH({"":"","".""},", ")+2,2)/24/60^{0,1},{1;1})"), .Address(, , _
            Application.ReferenceStyle))), .Value)
        .NumberFormat = "[hh]:mm"
    End With
End Sub
[/vba]
К сообщению приложен файл: 9540686-2.xlsm (18.1 Kb)


email:krosav4ig26@gmail.com WMR R207627035142 WMZ Z821145374535 ЯД 410012026478460
 
Ответить
Сообщениеа можно немного поизвращаццо?
[vba]
Код
Sub dd()
    With [A1].CurrentRegion
        .Value = Application.IfError(Evaluate(Join(Array("mmult(MID(", _
            ",SEARCH({"":"","".""},", ")+2,2)/24/60^{0,1},{1;1})"), .Address(, , _
            Application.ReferenceStyle))), .Value)
        .NumberFormat = "[hh]:mm"
    End With
End Sub
[/vba]

Автор - krosav4ig
Дата добавления - 06.07.2016 в 23:03
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Преобразовать значение в ячейке в часы и минуты (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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