Giúp em về ngày tháng năm khi nhiều format (2 người xem)

Liên hệ QC

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

thanhduc_iit

Thành viên chính thức
Tham gia
2/4/11
Bài viết
55
Được thích
2
Em có dữ liệu rất lớn, cả chục ngàn mẫu tin. Nhưng tổng hợp từ nhiều nơi nên trường ngày tháng năm có vấn đề

E xin ví dụ như sau:

07/10/2012 dd/mm/yyyy
12/10/2012 mm/dd/yyyy
15/10/2012 dd/mm/yyyy

Gồm 3 dòng, nhưng lại có 2 cách định dạng (dd/mm/yyyy và mm/dd/yyyy)

Tuy là định dạng có khác, nhưng người nhập lại nhập đúng như hiển thị. Nên khi em đưa vào chương trình thì DÒNG 2 bị đổi lại làm sai dữ liệu. Từ 12/10/2012 sang 10/12/2012

Mấy bác giúp em làm sao chuyển sang định dạng dd/mm/yyyy mà giá trị ngày tháng năm k đổi với ạ. Dữ liệu rất lớn nên em k thể sửa từng cái,hic
 
Dùng cách hơi già một tí nhưng có thể hiệu quả
PHP:
Function FrmDay(a As Range)
FrmDay = Left(a.NumberFormat, 2)
 End Function
Sau đó dùng hàm kết hợp =IF(frmday(A1)="dd";A1;DATE(YEAR(A1);DAY(A1);MONTH(A1)))
 
Em có dữ liệu rất lớn, cả chục ngàn mẫu tin. Nhưng tổng hợp từ nhiều nơi nên trường ngày tháng năm có vấn đề

E xin ví dụ như sau:

07/10/2012 dd/mm/yyyy
12/10/2012 mm/dd/yyyy
15/10/2012 dd/mm/yyyy

Gồm 3 dòng, nhưng lại có 2 cách định dạng (dd/mm/yyyy và mm/dd/yyyy)

Tuy là định dạng có khác, nhưng người nhập lại nhập đúng như hiển thị. Nên khi em đưa vào chương trình thì DÒNG 2 bị đổi lại làm sai dữ liệu. Từ 12/10/2012 sang 10/12/2012

Mấy bác giúp em làm sao chuyển sang định dạng dd/mm/yyyy mà giá trị ngày tháng năm k đổi với ạ. Dữ liệu rất lớn nên em k thể sửa từng cái,hic

Giả sử dữ liệu của bạn là cột A
Thử dùng hàm này tại B1 =DATE(YEAR(A1),MONTH(A1),DAY(A1)) , Fill Cthức xuống
Định dạng lại cột B là dd/mm/yyyy
 
Giả sử dữ liệu của bạn là cột A
Thử dùng hàm này tại B1 =DATE(YEAR(A1),MONTH(A1),DAY(A1)) , Fill Cthức xuống
Định dạng lại cột B là dd/mm/yyyy
Cách này của bạn không dùng được, vì ý của bạn thanhduc_iit là phải đảo giá trị ngày thành tháng, tháng thành ngày cho những ô định dạng mm/dd/yyyy.
 
Tôi đã thử trên File, bạn xem
Rõ ràng là bạn chưa hiểu ý của bạn thanhduc_iit rồi.
Ý của bạn ấy như sau:
07/10/2012 dd/mm/yyyy-->đúng
12/10/2012 mm/dd/yyyy-->cần giá trị 12/10/2012 với định dạng dd/mm/yyyy
15/10/2012 dd/mm/yyyy-->đúng
Nghĩa là phần hiển thị "12/10/2012" nhưng vì bản chất giá trị là ngày 10 tháng 12 năm 2012 do định dạng là mm/dd/yyyy mà bạn thanhduc_iit muốn giá trị là ngày 12 tháng 10 năm 2012 với định dạng dd/mm/yyyy nên phải đảo ngày thành tháng, tháng thành ngày ở GIÁ TRỊ CON SỐ, giữa nguyên hiển thị như những gì NHÌN THẤY.
 
Lần chỉnh sửa cuối:
Rõ ràng là bạn chưa hiểu ý của bạn thanhduc_iit rồi.
Ý của bạn ấy như sau:
07/10/2012 dd/mm/yyyy-->đúng
12/10/2012 mm/dd/yyyy-->cần giá trị 12/10/2012 với định dạng dd/mm/yyyy
15/10/2012 dd/mm/yyyy-->đúng
Nghĩa là phần hiển thị "12/10/2012" nhưng vì bản chất giá trị là ngày 10 tháng 12 năm 2012 do định dạng là mm/dd/yyyy mà bạn thanhduc_iit muốn giá trị là ngày 12 tháng 10 năm 2012 với định dạng dd/mm/yyyy nên phải đảo ngày thành tháng, tháng thành ngày ở GIÁ TRỊ CON SỐ, giữa nguyên hiển thị như những gì NHÌN THẤY.
Vì kg thấy File nên chẳng biết hiểu kiểu nào, theo tôi đóan dữ liệu này do Convert từ fần mềm hoặc copy từ nhiều nguồn, chưa kể có thể ngày tháng kiểu Text ? Thôi chờ ý kiến của chủ Topic vậy!
 
Tôi đã thử trên File, bạn xem
Test code này xem thế nào. Kiểm tra định dạng cột A trước khi bấm nút và sau khi bấm nút
PHP:
Sub dinh_dang_ngay()
Dim cell, ngaymoi
For Each cell In Range([a1], [A65536].End(3))
   If cell.NumberFormat = "mm/dd/yyyy" Then
      ngaymoi = Application.Text(cell, "dd-mm-yyyy")
      cell.NumberFormat = "dd-mm-yyyy"
      cell.Value = ngaymoi
   End If
Next
End Sub

Nếu công thức thì chắc thế này
=IF(CELL("format",A1)="D1",DATE(YEAR(A1),MONTH(A1),DAY(A1)),DATE(YEAR(A1),DAY(A1),MONTH(A1)))
 

File đính kèm

Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom