Code VBA quy đổi thời gian ra số giờ

Liên hệ QC

Phương Phương mito

Thành viên thường trực
Tham gia
1/5/19
Bài viết
275
Được thích
65
Kính gửi ANh chị và các bạn,
Em có File xuất ra tự hệ thống mà thời gian thực hiện nó thế hiện theo kiểu hh:mm:ss ạ. Có code gì mà nó tự quy đổi ra Tổng số giờ được không ạ (THeo File là Thời gian thực hiện tại cột B ra giờ thực hiên hiện tại cột H ạ). Em cảm ơn anh chị và mọi người ạ.
 

File đính kèm

Mã:
H2=B2*24

PHP:
Dim i as long
With sheet1
For i =2 To 5
  .Range("H" & i).value = .Range("B" & i).value * 24
Next i
End with
Dear Anh,
Em muốn thay giá trị i =5 bằng một biến là dòng cuối cùng có số liệu em làm như vầy mà sao không được ạ.



Sub Quydoi()
Dim i As Long
Dim Dong As Long 'them bien nay

With Sheet1

Dong = Cells(Rows.Count, 2).End(xlUp).Row

For i = 2 To Dong
.Range("H" & i).Value = .Range("B" & i).Value * 24
Next i
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Dear Anh,
Em muốn thay giá trị i =5 bằng một biến là dòng cuối cùng có số liệu em làm như vầy mà sao không được ạ.



Dim i as long
Dim Dong as long "them bien nay

With sheet1
dong = .Cells(.Rows.Count, "B").End(xlUp).Row
For i =2 To dong
.Range("H" & i).value = .Range("B" & i).value * 24
Next i
File bài #1, Cột B, không canh lề, để mặc định xem dữ liệu mặt mũi nó ra sao?
 
Upvote 0
Dear Anh,
Em muốn thay giá trị i =5 bằng một biến là dòng cuối cùng có số liệu em làm như vầy mà sao không được ạ.



Dim i as long
Dim Dong as long "them bien nay

With sheet1
dong = .Cells(.Rows.Count, "B").End(xlUp).Row
For i =2 To dong
.Range("H" & i).value = .Range("B" & i).value * 24
Next i
Mã:
Sub doi_thoi_gian()
Dim i As Long
Dim Dong As Long
With Sheet1
Dong = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 2 To Dong
.Range("H" & i).Value = .Range("B" & i).Value * 24
Next i
End With
End Sub
 
Upvote 0
Mã:
Sub doi_thoi_gian()
Dim i As Long
Dim Dong As Long
With Sheet1
Dong = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 2 To Dong
.Range("H" & i).Value = .Range("B" & i).Value * 24
Next i
End With
End Sub
Chị ơi nó báo là Type Mismatch chị ạ (Cái đoạn này bị bôi vàng ạ .Range("H" & i).Value = .Range("B" & i).Value * 24)
 
Upvote 0
Upvote 0

File đính kèm

Upvote 0
File bài #1, Cột B, không canh lề, để mặc định xem dữ liệu mặt mũi nó ra sao?
Chú xem giúp cháu lỗi câu lệnh mà Anh Befaint và Chị Huonglien1901 đã giúp cháu nhưng vẫn bị báo lỗi Mismatch là sao ạ. Cháu cảm ơn ạ.
 

File đính kèm

Upvote 0
Chú xem giúp cháu lỗi câu lệnh mà Anh Befaint và Chị Huonglien1901 đã giúp cháu nhưng vẫn bị báo lỗi Mismatch là sao ạ. Cháu cảm ơn ạ.
Bạn thử:
PHP:
Sub Test()
    Dim Dong As Long
    With Sheet1
        Dong = .Cells(.Rows.Count, "B").End(xlUp).Row
        With Range("H2:H" & Dong)
            .Formula = "=RC[-6]*24"
            .Value = .Value
        End With
    End With
End Sub
 
Upvote 0
Bạn thử:
PHP:
Sub Test()
    Dim Dong As Long
    With Sheet1
        Dong = .Cells(.Rows.Count, "B").End(xlUp).Row
        With Range("H2:H" & Dong)
            .Formula = "=RC[-6]*24"
            .Value = .Value
        End With
    End With
End Sub
Nó chạy được rồi ạ. Chị thật Pro. E lại học thêm được một ít. Em cảm ơn chị ạ.
 
Upvote 0
Nó chạy được rồi ạ. Chị thật Pro. E lại học thêm được một ít. Em cảm ơn chị ạ.
Từ bài #4 đã phát hiện, sao không "ngâm kiếu"?
Tại sao hàm Excel làm được mà VBA lại sai?
PHP:
.Formula = "=RC[-6]*24"
.Value = .Value
 
Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub doi_thoi_gian()
    Const gio As Long = 24
    Dim i As Long, dong_cuoi As Long
    With Sheet1
        dong_cuoi = .Cells(.Rows.Count, "B").End(xlUp).Row
        For i = 2 To dong_cuoi
            .Range("H" & i).Value = CDate(.Range("B" & i).Value2) * gio
        Next i
    End With
End Sub
 
Upvote 0
Chị ơi em làm phiền chị chút nữa ạ. Giả sử e cho vùng dữ liệu vào Table. Khi em xóa giờ tại cột B (Chẳng hạn em xóa B5) nó vẫn tính giờ ra cột H tương ứng ạ. Mặc dù em đã làm đoạn code chỉ tính khi Len tại B khác rỗng ạ. Và đoạn Code này của em nếu chạy số liệu dài nó mãi không dừng toàn phải bấm nút ESC mới dừng được ạ.
Sub Test()
Dim Dong As Long, i As Long
Dim Gio As String
With Sheet1
Dong = .Cells(.Rows.Count, "B").End(xlUp).Row
For i = 2 To Dong
Gio = .Range("B" & i).Value
If Len(Gio) > 0 Then
With Range("H2:H" & Dong)
.Formula = "=RC[-6]*24"
.Value = .Value
End With
End If
Next i
End With
End Sub

Và nếu em có thêm đoạn Code này để Resize bảng Table thì cũng không được ạ.
Dim ws As Worksheet
Dim tbl As ListObject


Application.ScreenUpdating = False
For Each ws In ThisWorkbook.Worksheets
For Each tbl In ws.ListObjects
tbl.Resize tbl.Range.CurrentRegion
Next tbl
Next ws
Application.ScreenUpdating = True
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
PHP:
Sub doi_thoi_gian()
    Const gio As Long = 24
    Dim i As Long, dong_cuoi As Long
    With Sheet1
        dong_cuoi = .Cells(.Rows.Count, "B").End(xlUp).Row
        For i = 2 To dong_cuoi
            .Range("H" & i).Value = CDate(.Range("B" & i).Value2) * gio
        Next i
    End With
End Sub
Code này em dùng vẫn bị lỗi báo Mismatch ạ.
 
Upvote 0
Code này em dùng vẫn bị lỗi báo Mismatch ạ.
Chỉnh lại
Mã:
Sub doi_thoi_gian()
    Const gio As Long = 24
    Dim i As Long, dong_cuoi As Long
    With Sheet1
        dong_cuoi = .Cells(.Rows.Count, "B").End(xlUp).Row
        For i = 2 To dong_cuoi
            .Range("H" & i).Value = TimeValue(CStr(.Range("B" & i).Value)) * gio
        Next i
    End With
End Sub
 
Upvote 0
Cảm ơn anh
Chỉnh lại
Mã:
Sub doi_thoi_gian()
    Const gio As Long = 24
    Dim i As Long, dong_cuoi As Long
    With Sheet1
        dong_cuoi = .Cells(.Rows.Count, "B").End(xlUp).Row
        For i = 2 To dong_cuoi
            .Range("H" & i).Value = TimeValue(CStr(.Range("B" & i).Value)) * gio
        Next i
    End With
End Sub
Em cảm ơn anh ạ. Em cũng đã khắc phục được nhờ trợ giúp của các Anh chị ạ !!!
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom