Hỏi cách tách ngày tháng năm đang nằm 1 ô trong excel (1 người xem)

  • Thread starter Thread starter kht191
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

kht191

Thành viên mới
Tham gia
1/6/15
Bài viết
14
Được thích
0
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 ạ
 

File đính kèm

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 ạ
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
 

File đính kèm

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
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ì ạ
 
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ứ.
đâ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 ạ
 

File đính kèm

đâ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 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
 

File đính kèm

Bạ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
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
 
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
Để 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
 
Để 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
Ý 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 ạ
 
Ý 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 ạ
Hoàn toàn được mà bạn, chỉ cần bỏ dòng:
PHP:
'Worksheets.Add(After:=Worksheets(1)).Name = "KQ"
là được. Bạn kiểm tra File
 

File đính kèm

@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 ạ
 

File đính kèm

@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 ạ
Bạn thêm dòng dưới đây vào:
PHP:
 Sheets("KQ").Range("B2:C1000").ClearContents
Cụ thể:
PHP:
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
 
@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”
 
@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”
+ Vậy Code cần sửa 2 dòng này:
PHP:
  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=", "")
thành:
PHP:
  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=", ""))

+ Về công thức của bạn, thử:
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"),"")

+ Chú ý: Định dạng cột D là hh:mm:ss
 

File đính kèm

Lần chỉnh sửa cuối:
Nếu chỉ với yêu cầu ban đầu, và nếu không muống dùng VBA thì công thức này cũng ra kết quả
- Lấy ngày HT =IFERROR(MID(A1,SEARCH("HT: ",A1)+4,10),"")
- Lấy ngày CT =IFERROR(MID(A1,SEARCH("CT= ",A1)+4,10),"")
(Còn muốn lấy luôn giờ thì thay 10 bằng 19)
 

File đính kèm

Web KT

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

Back
Top Bottom