Nhận biết dữ liệu định dạng date như thế nào?

Liên hệ QC

Người Đưa Tin

Hạt cát sông Hằng
Thành viên danh dự
Tham gia
12/12/06
Bài viết
3,661
Được thích
18,158
Do các em nhập liệu không chuẩn dẫn đến việc kiểm tra khó, mình xin được nhờ hướng dẫn cách nhận dạng dữ liệu định dạng date như thế nào? Xin công thức kiểm tra dữ liệu date?

Xin cám ơn
 
Do các em nhập liệu không chuẩn dẫn đến việc kiểm tra khó, mình xin được nhờ hướng dẫn cách nhận dạng dữ liệu định dạng date như thế nào? Xin công thức kiểm tra dữ liệu date?

Xin cám ơn
Bác dùng hàm ISNUMBER để kiểm tra thử xem, nếu đúng là dạng ngày tháng thì trả về True, ngược lại False
 
Bác dùng hàm ISNUMBER để kiểm tra thử xem, nếu đúng là dạng ngày tháng thì trả về True, ngược lại False

Gặp dân dốt đặc công thức mà sao tiếc thay một lời ví dụ, minh hoạ vậy chời. Hụ hụ hụ
Ước gì minh hoạ bằng table thì tuyệt
 

File đính kèm

  • Date.xls
    13.5 KB · Đọc: 148
..... sao tiếc thay một lời ví dụ, minh hoạ vậy chời. Hụ hụ hụ
Ước gì minh hoạ bằng table thì tuyệt
Bác ơi đừng khóc nữa. Bác thử hàm này xem sao nhé.
Nếu ô A1 là ô cần kiểm tra định dạng ngày tháng:
Giá trị trả về của ô B1 là "D1" thì ô A1 đó có định dạng là ngày tháng đó bác. Em kèm thêm file đính kèm rồi nghe!
 

File đính kèm

  • KiemTraDinhDangNgayThang.xls
    27.5 KB · Đọc: 115
Bác cần kiểm tra ô B3 chẳng hạn, bác gõ công thức:

=DATE(YEAR(B3),MONTH(B3),DAY(B3))

Nếu nó không thể hiện ngày nữa là sai. Cần kiểm tra ô khác bác thay B3 bằng địa chỉ.
 
Đây là file mà các em nhập liệu vừa rồi để import vào HTKKT2.5.2 mà bị báo lỗi, sau đó em phải kiểm tra thủ công bằng cách nhập liệu lại từng ngày

Các em nó nhập liệu không có dấu nháy (') hoặc " gì cả, nó canh dữ liệu ở cột ngày tháng là center toàn bộ. Thật sự dữ liệu date là mặc nhiên là canh phải, phải không?
 

File đính kèm

  • test_date.xls
    23.5 KB · Đọc: 36
Đây là file mà các em nhập liệu vừa rồi để import vào HTKKT2.5.2 mà bị báo lỗi, sau đó em phải kiểm tra thủ công bằng cách nhập liệu lại từng ngày

Các em nó nhập liệu không có dấu nháy (') hoặc " gì cả, nó canh dữ liệu ở cột ngày tháng là center toàn bộ. Thật sự dữ liệu date là mặc nhiên là canh phải, phải không?
Dữ liệu trong file của bác là dữ liệu ngày tháng rồi còn gì? Nếu không định dạng canh lề thì dữ liệu ngày tháng năm sẽ canh theo lề phải. Nhưng nếu người dùng canh lề khác thì vẫn được.
 
Bác cần kiểm tra ô B3 chẳng hạn, bác gõ công thức:

=DATE(YEAR(B3),MONTH(B3),DAY(B3))

Nếu nó không thể hiện ngày nữa là sai. Cần kiểm tra ô khác bác thay B3 bằng địa chỉ.

@sealand Domfootwear: Nếu ô B3 em gõ số 13, các hàm kiểm tra của hai anh đều cho giá trị đúng, nhưng nó có phải là định dạng ngày tháng đâu?
 
Tại ô E15 (Ngày tháng năm phát hành) Trong ô có comment ghi là nhập liệu phải là dạng dd/mm/yyyy mà. Anh xem lại định dạng trên máy của Anh xem sao. vào control panel ấy.
 
Dữ liệu trong file của bác là dữ liệu ngày tháng rồi còn gì? Nếu không định dạng canh lề thì dữ liệu ngày tháng năm sẽ canh theo lề phải. Nhưng nếu người dùng canh lề khác thì vẫn được.

Thưa Thầy, cái này là em đã chỉnh lại qua date toàn bộ rồi. Tiếc phải còn file gốc của các em để Thầy chỉ cho em cái sai

Tại ô E15 (Ngày tháng năm phát hành) Trong ô có comment ghi là nhập liệu phải là dạng dd/mm/yyyy mà. Anh xem lại định dạng trên máy của Anh xem sao. vào control panel ấy.

Thế mới có chuyện nói đó bác Công ạ, em đã vấp phải nên đang cần được sự hướng dẫn đây
 
@sealand Domfootwear: Nếu ô B3 em gõ số 13, các hàm kiểm tra của hai anh đều cho giá trị đúng, nhưng nó có phải là định dạng ngày tháng đâu?
Ẹc... Ẹc... nhưng cho dù có dùng CELL(...) thì cũng đâu có chính xác tuyệt đối
Trong file của Kiệt, thử gõ vào cell A2 số này xem: 76445674567
Nói tóm lại: Dù là dùng phương pháp gì thì cũng chỉ mang tính tương đối ---> thực chất DATE mà ta nhìn thấy cũng chỉ là Number do Excel convert ra thôi!
 
Ẹc... Ẹc... nhưng cho dù có dùng CELL(...) thì cũng đâu có chính xác tuyệt đối
Trong file của Kiệt, thử gõ vào cell A2 số này xem: 76445674567
Nói tóm lại: Dù là dùng phương pháp gì thì cũng chỉ mang tính tương đối ---> thực chất DATE mà ta nhìn thấy cũng chỉ là Number do Excel convert ra thôi!
Hàm Cell("format",A2) trả về giá trị là "G" với A2=76445674567 , nghĩa là không phải định dạng Date mà anh. Em chưa hiểu nó không chính xác chỗ nào?
--------------------------------------------------------
À, thì ra nó chỉ lấy format định dạng mà thôi... hix...
 
Lần chỉnh sửa cuối:
Hàm Cell("format",A2) trả về giá trị là "G" với A2=76445674567 , nghĩa là không phải định dạng Date mà anh. Em chưa hiểu nó không chính xác chỗ nào?
Tức là hàm CELL(..) cùng lắm chỉ biết 1 cell đang được format theo dạng gì chứ không biết bản chất thật sự của dữ liệu
Ta thí nghiệm thế này:
- Gõ chữ ndu vào cell A1
- Cell B1 tôi gõ công thức =CELL("format",A1)
- Kết quả nhận được ="G"
- Giở Custom Format cell A1 dạng: d/m/yyyy
- Bấm F9 để cập nhật ---> cell B1 nhận kết quả ="D1"
-----------
Bạn thấy sao?
 
Vậy chắc mình gom hai điều kiện kiểm tra vào luôn quá, đại khái như:
=NOT(ISERROR(YEAR(A1)))*(LEFT(CELL("format",A1))="D")
Gái trị trả về là 1: định dạng ngày tháng
Gái trị trả về là 0: không phải định dạng ngày tháng
 
Với dữ liệu kiểu Date thì những người làm việc với excel nếu không để ý thì gặp thường xuyên. Đó là việc nhập sai với định dạng trong cấu hình hệ thống. Nếu việc nhập sai nhưng vẫn tuân theo 1 nguyên tắc thống nhất thì vẫn có khả năng để cứu, còn không thống nhất cách nhập thì chịu không có cách nào. Ví dụ cấu hình hệ thống yêu cầu nhập vào theo định dạng m/d/y(Tháng trước, đến ngày, đến năm), khi đó nếu người dùng nhập theo định dạng là d/m/y(ngày trước, đến tháng, đến năm) thì sẽ xảy ra 2 trường hợp. Nếu ngày nhập vào <=12, khi đó ta vẫn được 1 giá trị kiểu ngày nhưng bị sai(ngày và tháng thay đổi cho nhau), nếu nhập vào ngày > 12 khi đó ta được 1 giá trị là Text. Khi đó ta có thể chuyển về dữ liệu chuẩn theo nguyên tắc. Nếu là Text(dùng hàm ISTEXT để kiểm tra) thì dùng phương pháp xử lý chuỗi để xử lý. Nếu là 1 ngày thì thay ngày thành tháng sẽ được dữ liệu chuẩn. Đây là cách tôi hay sử dụng, tuy nhiên thì như tôi đã nói là phải xác định đúng lỗi và dữ liệu phải nhập thống nhất.
 
Vậy chắc mình gom hai điều kiện kiểm tra vào luôn quá, đại khái như:
Gái trị trả về là 1: định dạng ngày tháng
Gái trị trả về là 0: không phải định dạng ngày tháng
Mình thì có ý tưởng thế này:
- Đàng nào thì DATE cũng chính là NUMBER
- Giả sử ta biết trước ngày tháng đang xét nằm trong 1 khoảng nào đó, ví dụ từ 1/1/2000 đến 31/12/2011
- 2 mốc thời gian này tương đương với số nguyên dương từ 36526 đến 40908
- Vậy chỉ cần xét cell có phải là Number và nằm trong khoảng 2 mốc ấy không là được rồi
Đại khái thế này:
=AND(B3>=36526,B3<=40908)
Với B3 là dữ liệu cần check
(xét thêm trường hợp B3 là số nguyên nếu cần)
 
Mình có một cách là dùng đoạn code để kiểm tra định dạng, chẳng hạn:
Msgbox(Selection.NumberFormat) nhưng chưa biết làm sao ghi vào cột bên cạnh.
 
Đây là file mà các em nhập liệu vừa rồi để import vào HTKKT2.5.2 mà bị báo lỗi, sau đó em phải kiểm tra thủ công bằng cách nhập liệu lại từng ngày

Các em nó nhập liệu không có dấu nháy (') hoặc " gì cả, nó canh dữ liệu ở cột ngày tháng là center toàn bộ. Thật sự dữ liệu date là mặc nhiên là canh phải, phải không?
Đầu tiên cứ phải kiểm tra định dạng hệ thống cái đã: Ctrl + : hiện thị ngay tại ô hiện hành. từ đó biết được định dạng của mình cái đã rồi làm gì mới làm (tránh trường hợp máy khác được máy mình không, rồi sửa lại cuối cùng công toi)
Cách làm mọi người đã ghóp ý như trên.
Em ghóp ý thêm chút. Bác tạo một file dạng temp chuẩn Nếu nhập sai định dạng nó sẽ không cho nhập
Các bạn cứ thế làm, cần thêm dòng thì chèn sau đó sao chép định dạng xuống rồi nhập liệu tiếp.
Gửi bác 2 file dạng temp. hàng tháng cứ lấy nó ra dùng thôi.

File temp kê khai mua vào bán ra
 
Chỉnh sửa lần cuối bởi điều hành viên:
Đầu tiên cứ phải kiểm tra định dạng hệ thống cái đã: Ctrl + : hiện thị ngay tại ô hiện hành. từ đó biết được định dạng của mình cái đã rồi làm gì mới làm (tránh trường hợp máy khác được máy mình không, rồi sửa lại cuối cùng công toi)

Tôi không rõ chỗ đoạn tô màu nâu bác trình bày. Tôi dùng Ctrl + nó ra là Insert bác ơi
 
Web KT
Back
Top Bottom