Cho em hỏi tí,em sửa như thầy nói thì ra đúng định dạng ngày tháng,nhưng nó lại để là AM PM, giờ em muốn để định dạng là 24h thì làm sao ạ
Híc!
Định dạng Time có AM-PM hay không là do trong Control Panel của bạn, bạn thử nhìn trong cột F,I,J sheet DATA của bạn xem có AM-PM không? (Xem trên thanh công thức bên trên nhé, không phải trên màn hình)
Nếu bạn quyết có kết quả như ý bạn thì thử lại Code này, tôi cũng "chìu" hết mức nhưng không ra cách gọn hơn.
[GPECODE=vb]Public Sub GPE_()
Application.ScreenUpdating = False
Dim Dic As Object, sArr(), dArr(), I As Long, J As Long, K As Long, Tem As String, Num As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("DATA")
sArr = .Range(.[A11], .[A1048576].End(xlUp)).Resize(, 19).Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 19)
For I = 1 To UBound(sArr, 1)
Tem = sArr(I, 2)
If Not Dic.Exists(Tem) Then
K = K + 1: dArr(K, 1) = K
Dic.Add Tem, K
For J = 2 To 19
If sArr(I, J) <> Empty Then dArr(K, J) = sArr(I, J)
Next J
dArr(K, 6) = "'" & Format(sArr(I, 6), "dd/mm/yyyy hh:mm:ss")
dArr(K, 9) = "'" & Format(sArr(I, 9), "dd/mm/yyyy hh:mm:ss")
dArr(K, 10) = "'" & Format(sArr(I, 10), "dd/mm/yyyy hh:mm:ss")
Else
Num = Dic.Item(Tem)
For J = 3 To 5
If sArr(I, J) <> Empty Then dArr(Num, J) = dArr(Num, J) & Chr(10) & sArr(I, J)
Next J
For J = 11 To 19
If sArr(I, J) <> Empty Then dArr(Num, J) = dArr(Num, J) & Chr(10) & sArr(I, J)
Next J
If sArr(I, 7) <> Empty Then dArr(Num, 7) = dArr(Num, 7) & Chr(10) & sArr(I, 7)
If sArr(I, 8) <> Empty Then dArr(Num, 8) = dArr(Num, 8) & Chr(10) & sArr(I, 8)
dArr(Num, 6) = dArr(Num, 6) & Chr(10) & Format(sArr(I, 6), "dd/mm/yyyy hh:mm:ss")
dArr(Num, 9) = dArr(Num, 9) & Chr(10) & Format(sArr(I, 9), "dd/mm/yyyy hh:mm:ss")
dArr(Num, 10) = dArr(Num, 10) & Chr(10) & Format(sArr(I, 10), "dd/mm/yyyy hh:mm:ss")
End If
Next I
With Sheets("GPE")
.[A11].Resize(10000, 19).ClearContents
.[A11].Resize(10000, 19).Borders.LineStyle = xlNone
.[A11].Resize(K, 19) = dArr
.[A11].Resize(K, 19).Borders.LineStyle = xlContinuous
.[B11].Resize(K, 18).Sort Key1:=.[B11]
.Range("A11:A" & K + 10).EntireRow.AutoFit
.[G9].Select
End With
Set Dic = Nothing
Application.ScreenUpdating = True
End Sub[/GPECODE]