1 cách:Hiện tại phần mềm bên em xuất ra file excel cảnh báo sự cố nhưng phần ngày tháng năm được gộp chung kiểu "HT: 27/08/2019 16:00:00, CT= 27/08/2019 15:51:24". Anh chị có hàm nào tách riêng được các chỉ số ngày tháng năm này ra 2 ô riêng biệt thì giúp em với ạ
Sub Test()
Dim a
a = Split(Range("A1"), Chr(10))
Cells(2, 3) = Replace(Split(a(1), ",")(0), "HT:", "")
Cells(2, 4) = Replace(Split(a(1), ",")(1), "CT=", "")
End Sub
dạ anh/chị cho em hỏi là em muốn chỉnh sửa để tách n ô như thế này thì sửa kiểu gì ạ1 cách:
PHP:Sub Test() Dim a a = Split(Range("A1"), Chr(10)) Cells(2, 3) = Replace(Split(a(1), ",")(0), "HT:", "") Cells(2, 4) = Replace(Split(a(1), ",")(1), "CT=", "") End Sub
Bạn phải nói rõ dữ liệu đầu vào của bạn là thế nào? Đầu ra ra sao, thì tôi mới biết được chứ.dạ anh/chị cho em hỏi là em muốn chỉnh sửa để tách n ô như thế này thì sửa kiểu gì ạ
đây là file của em xuất ra ạ. Hiện tại em muốn tách riêng ngày tháng ở từng ô ra 1 sheet mới để liên kết công thức qua sheet khác ạBạn phải nói rõ dữ liệu đầu vào của bạn là thế nào? Đầu ra ra sao, thì tôi mới biết được chứ.
Bạn thử:đây là file của em xuất ra ạ. Hiện tại em muốn tách riêng ngày tháng ở từng ô ra 1 sheet mới để liên kết công thức qua sheet khác ạ
Sub Test2()
Dim a, sp, i, c
Worksheets.Add(After:=Worksheets(1)).Name = "KQ"
Application.ScreenUpdating = False
For Each c In Sheet1.Range("B10:B" & Cells(Rows.Count, "B").End(xlUp).Row)
a = Split(c, Chr(10))
For i = LBound(a) To UBound(a)
Sheets("KQ").Cells(Rows.Count, 2).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(0), "HT:", "")
Sheets("KQ").Cells(Rows.Count, 3).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(1), "CT=", "")
Sheets("KQ").Cells.EntireColumn.AutoFit
Exit For
Next i
Next c
Application.ScreenUpdating = True
End Sub
Em cảm ơn anh. Dạ hiện tại em ấn thêm 1 lần nữa thì sẽ báo lỗi do sheet KQ đã tồn tại ạ, anh cho em hỏi là nếu em muốn kết quả lần ấn tiếp theo KQ mới sẽ chèn vào dữ liệu KQ cũ(vẫn trên sheet KQ) được không anhBạn thử:
PHP:Sub Test2() Dim a, sp, i, c Worksheets.Add(After:=Worksheets(1)).Name = "KQ" Application.ScreenUpdating = False For Each c In Sheet1.Range("B10:B" & Cells(Rows.Count, "B").End(xlUp).Row) a = Split(c, Chr(10)) For i = LBound(a) To UBound(a) Sheets("KQ").Cells(Rows.Count, 2).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(0), "HT:", "") Sheets("KQ").Cells(Rows.Count, 3).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(1), "CT=", "") Sheets("KQ").Cells.EntireColumn.AutoFit Exit For Next i Next c Application.ScreenUpdating = True End Sub
Để khăc phục lỗi, bạn dùng:Em cảm ơn anh. Dạ hiện tại em ấn thêm 1 lần nữa thì sẽ báo lỗi do sheet KQ đã tồn tại ạ, anh cho em hỏi là nếu em muốn kết quả lần ấn tiếp theo KQ mới sẽ chèn vào dữ liệu KQ cũ(vẫn trên sheet KQ) được không anh
Sub Test3()
Dim a, sp, i, c
If SheetExists("KQ") Then
MsgBox ("Sheet nay da ton tai! Du lieu da duoc cap nhat!")
Else
Worksheets.Add(After:=Worksheets(1)).Name = "KQ"
End If
Application.ScreenUpdating = False
Sheet1.Select
For Each c In Sheet1.Range("B10:B" & Cells(Rows.Count, "B").End(xlUp).Row)
a = Split(c, Chr(10))
For i = LBound(a) To UBound(a)
Sheets("KQ").Cells(Rows.Count, 2).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(0), "HT:", "")
Sheets("KQ").Cells(Rows.Count, 3).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(1), "CT=", "")
Sheets("KQ").Cells.EntireColumn.AutoFit
Exit For
Next i
Next c
Application.ScreenUpdating = True
End Sub
Public Function SheetExists(SheetName As String) As Boolean
Dim ws As Worksheet
SheetExists = False
For Each ws In ThisWorkbook.Worksheets
If ws.Name = SheetName Then SheetExists = True
Next ws
End Function
Ý tưởng của em là khi em sửa đổi, thay thế ngày tháng ở bảng dữ liệu(sheet1) rồi sau đó ấn nút "click me" thì dữ liệu mới sẽ chèn luôn vào dữ liệu cũ được không ạĐể khăc phục lỗi, bạn dùng:
PHP:Sub Test3() Dim a, sp, i, c If SheetExists("KQ") Then MsgBox ("Sheet nay da ton tai! Du lieu da duoc cap nhat!") Else Worksheets.Add(After:=Worksheets(1)).Name = "KQ" End If Application.ScreenUpdating = False Sheet1.Select For Each c In Sheet1.Range("B10:B" & Cells(Rows.Count, "B").End(xlUp).Row) a = Split(c, Chr(10)) For i = LBound(a) To UBound(a) Sheets("KQ").Cells(Rows.Count, 2).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(0), "HT:", "") Sheets("KQ").Cells(Rows.Count, 3).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(1), "CT=", "") Sheets("KQ").Cells.EntireColumn.AutoFit Exit For Next i Next c Application.ScreenUpdating = True End Sub Public Function SheetExists(SheetName As String) As Boolean Dim ws As Worksheet SheetExists = False For Each ws In ThisWorkbook.Worksheets If ws.Name = SheetName Then SheetExists = True Next ws End Function
Hoàn toàn được mà bạn, chỉ cần bỏ dòng:Ý tưởng của em là khi em sửa đổi, thay thế ngày tháng ở bảng dữ liệu(sheet1) rồi sau đó ấn nút "click me" thì dữ liệu mới sẽ chèn luôn vào dữ liệu cũ được không ạ
'Worksheets.Add(After:=Worksheets(1)).Name = "KQ"
Bạn thêm dòng dưới đây vào:@phulien1902 Anh cho em hỏi thêm với ạ. Hiện tại em có file excel đầu vào như thế.
Đầu ra em muốn tính khoảng thời gian đang chêch lệch giữa thời gian "HT" và thời gian "CT"
Em muốn export được khoảng thời gian ra 1 sheet khác nhưng em muốn khi export giữ liệu thì giữ liệu mới sẽ chèn vào giữ liệu cũ theo cách ghi đề là
Ví dụ: Giữ liệu cũ xuất ra sheet KQ từ ô A1>A100 thì giữ liệu mới xuất ra sẽ chèn vào luôn vào ô A1>A100. Vì em muốn sử dụng công thức để lấy kết quả thời gian cảnh báo từ ô A1 ạ
Sheets("KQ").Range("B2:C1000").ClearContents
Sub Test3()
Dim a, sp, i, c
Application.ScreenUpdating = False
Sheet1.Select
Sheets("KQ").Range("B2:C1000").ClearContents
For Each c In Sheet1.Range("B10:B" & Cells(Rows.Count, "B").End(xlUp).Row)
a = Split(c, Chr(10))
For i = LBound(a) To UBound(a)
Sheets("KQ").Cells(Rows.Count, 2).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(0), "HT:", "")
Sheets("KQ").Cells(Rows.Count, 3).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(1), "CT=", "")
Sheets("KQ").Cells.EntireColumn.AutoFit
Exit For
Next i
Next c
Application.ScreenUpdating = True
End Sub
+ Vậy Code cần sửa 2 dòng này:@phulien1902 anh ơi hiện tại em đã sử dụng các công thức trong excel để tính được khoảng thời gian chênh lệch giữa 2 thời điểm HT và CT nhưng đều báo lỗi #VALUE!. Em đang sử dụng các công thức sau ạ
=TIME(HOUR(A2), MINUTE(A2), SECOND(A2)) - TIME(HOUR(B2), MINUTE(B2), SECOND(B2))
=INT(B2-A2) & ” days, ” & HOUR(B2-A2) & ” hours, ” & MINUTE(B2-A2) & ” minutes and ” & SECOND(B2-A2) & ” seconds”
Sheets("KQ").Cells(Rows.Count, 1).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(0), "HT:", "")
Sheets("KQ").Cells(Rows.Count, 2).End(xlUp).Offset(1) = Replace(Split(a(1), ",")(1), "CT=", "")
Sheets("KQ").Cells(Rows.Count, 1).End(xlUp).Offset(1) = Trim(Replace(Split(a(1), ",")(0), "HT:", ""))
Sheets("KQ").Cells(Rows.Count, 2).End(xlUp).Offset(1) = Trim(Replace(Split(a(1), ",")(1), "CT=", ""))
D2=IF(A2>B2,TIME(HOUR(A2), MINUTE(A2), SECOND(A2)) - TIME(HOUR(B2), MINUTE(B2), SECOND(B2)),"")
E2=IF(B2>A2,(DAY(B2-A2)&" Days "&HOUR(B2-A2)&" Hours "&MINUTE(B2-A2)&" Minutes "&SECOND(B2-A2)&" Seconds"),"")