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

Вход

Регистрация

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

 

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

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

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

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

Excel 2013
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]


ЯД(poison) 41001841029809
+7 978 049 98 74 (мтс)
 
Ответить
Сообщение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
Группа: Модераторы
Ранг: Старожил
Сообщений: 1586
Репутация: 661 ±
Замечаний: 0% ±

Excel 2007, 2010
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(16Kb)


marinamorozova_box@mail.ru
ЯД: 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
Группа: Друзья
Ранг: Старожил
Сообщений: 1340
Репутация: 533 ±
Замечаний: 0% ±

Excel 2007, 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(18Kb)


(_)Õvõ(_)
 
Ответить
Сообщениеа можно немного поизвращаццо?
[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 из 11
Поиск:

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