Chuyển đổi từ dãy số sang ngày tháng năm sinh (1 người xem)

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

khaothibaclieu

Thành viên hoạt động
Tham gia
10/4/08
Bài viết
113
Được thích
14
Chào các bạn!
Mình có yêu cầu sau:
Cột B mình nhập một dãy số.
Cột C sẽ hiện ra thông tin ngày tháng năm theo yêu cầu sau:
Nếu cột B được nhập hai số thì cột C sẽ hiện ra 19 và 2 số đã nhập.
Ví dụ: Nhập 90 hiện ra 1990.
Nếu cột B được nhập ba số thì cột C sẽ tách số thứ nhất thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
Nếu cột B được nhập bốn số thì cột C sẽ tách hai thứ số dầu thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
Nếu cột B được nhập năm số thì cột C sẽ tách hai số đầu thành ngày, số thứ ba thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 12399 hiện ra 12/3/1999.
Nếu cột B được nhập sáu số thì cột C sẽ tách hai số đầu thành ngày, hai số tiếp theo thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 120299 hiện ra 12/02/1999.
Tuy nhiên, mình không thể kiểm soát được việc nhập sai thông tin. Ví dụ nhập ngày lớn hơn 31, nhập tháng lớn hơn 13. Ngoài ra mình yêu cầu nhập năm (tức 2 số cuối) phải trong khoản từ 90 đến 99. Mình nhờ các bạn góp ý chỉnh sửa công thức để bắt buộc người sử dụng nhập ngày tháng năm cho chính xác.
Bên dưới là file ví dụ.
P/S: các bạn đừng góp ý nhập định dạng date dd/mm/yyyy gì đó.
 

File đính kèm

Chào các bạn!
Mình có yêu cầu sau:
Cột B mình nhập một dãy số.
Cột C sẽ hiện ra thông tin ngày tháng năm theo yêu cầu sau:
Nếu cột B được nhập hai số thì cột C sẽ hiện ra 19 và 2 số đã nhập.
Ví dụ: Nhập 90 hiện ra 1990.
Nếu cột B được nhập ba số thì cột C sẽ tách số thứ nhất thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
Nếu cột B được nhập bốn số thì cột C sẽ tách hai thứ số dầu thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
Nếu cột B được nhập năm số thì cột C sẽ tách hai số đầu thành ngày, số thứ ba thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 12399 hiện ra 12/3/1999.
Nếu cột B được nhập sáu số thì cột C sẽ tách hai số đầu thành ngày, hai số tiếp theo thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 120299 hiện ra 12/02/1999.
Tuy nhiên, mình không thể kiểm soát được việc nhập sai thông tin. Ví dụ nhập ngày lớn hơn 31, nhập tháng lớn hơn 13. Ngoài ra mình yêu cầu nhập năm (tức 2 số cuối) phải trong khoản từ 90 đến 99. Mình nhờ các bạn góp ý chỉnh sửa công thức để bắt buộc người sử dụng nhập ngày tháng năm cho chính xác.
Bên dưới là file ví dụ.
P/S: các bạn đừng góp ý nhập định dạng date dd/mm/yyyy gì đó.
xem file xem có đúng ý không nhé. có cái tôi cho là đúng thì bạn cho là sai nên tôi làm thành 2 option 1&2
cái nào đúng thì tự chọn
2 góp ý thì bạn bảo đừng góp ý. vậy tôi chỉ giúp đúng 1 lần vào topic nay thôi gọi là có lòng
 

File đính kèm

Lần chỉnh sửa cuối:
Thế thì ... thôi vậy. Validation có thể làm được, nhưng tôi muốn góp ý đúng cái đó.

Chính xác là vậy!
Em rất ghét cái kiểu nhập liệu trong 1 cột mà tùm lum loại dữ liệu: 1990 rồi 3/1990 rồi 2/3/1990... vân vân...
Mai này chẳng biết tính toán trong cột ấy theo kiểu gì nữa
Chỉ có thể nói: Với dạng dữ liệu thế này thì có thể đánh giá "Ông cóc biết gì về Excel cả!"
Hic... tào lao!
 
Chào các bạn!
Mình có yêu cầu sau:
Cột B mình nhập một dãy số.
Cột C sẽ hiện ra thông tin ngày tháng năm theo yêu cầu sau:
Nếu cột B được nhập hai số thì cột C sẽ hiện ra 19 và 2 số đã nhập.
Ví dụ: Nhập 90 hiện ra 1990.
Nếu cột B được nhập ba số thì cột C sẽ tách số thứ nhất thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
Nếu cột B được nhập bốn số thì cột C sẽ tách hai thứ số dầu thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
Nếu cột B được nhập năm số thì cột C sẽ tách hai số đầu thành ngày, số thứ ba thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 12399 hiện ra 12/3/1999.
Nếu cột B được nhập sáu số thì cột C sẽ tách hai số đầu thành ngày, hai số tiếp theo thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 120299 hiện ra 12/02/1999.
Tuy nhiên, mình không thể kiểm soát được việc nhập sai thông tin. Ví dụ nhập ngày lớn hơn 31, nhập tháng lớn hơn 13. Ngoài ra mình yêu cầu nhập năm (tức 2 số cuối) phải trong khoản từ 90 đến 99. Mình nhờ các bạn góp ý chỉnh sửa công thức để bắt buộc người sử dụng nhập ngày tháng năm cho chính xác.
Bên dưới là file ví dụ.
P/S: các bạn đừng góp ý nhập định dạng date dd/mm/yyyy gì đó.

Theo quy trình trên, nhập 5 số: Nhập 11111 thì hiện ra 11/1/1911?
Nhưng nếu dữ liệu thực sự là 1/11/1911 thì quy trình trên sai.

Người sử dụng vừa nhập vừa cười trong bụng:
"Một cột mà ba bốn loại dữ liệu. Thiết kế bảng như vậy mà còn đòi chính xác"

Trước khi tìm cách đặt công thức. Hãy học cách thử nghiệm quy trình đã.
 
Theo quy trình trên, nhập 5 số: Nhập 11111 thì hiện ra 11/1/1911?
Nhưng nếu dữ liệu thực sự là 1/11/1911 thì quy trình trên sai.

Người sử dụng vừa nhập vừa cười trong bụng:
"Một cột mà ba bốn loại dữ liệu. Thiết kế bảng như vậy mà còn đòi chính xác"

Trước khi tìm cách đặt công thức. Hãy học cách thử nghiệm quy trình đã.

Cám ơn bác đã góp ý. Nhưng đây là thực tế dữ liệu ở đơn vị của em. Nếu bác có cao kiến gì thì chỉ cho e với.
 
Chính xác là vậy!
Em rất ghét cái kiểu nhập liệu trong 1 cột mà tùm lum loại dữ liệu: 1990 rồi 3/1990 rồi 2/3/1990... vân vân...
Mai này chẳng biết tính toán trong cột ấy theo kiểu gì nữa
Chỉ có thể nói: Với dạng dữ liệu thế này thì có thể đánh giá "Ông cóc biết gì về Excel cả!"
Hic... tào lao!

Bác ơi bác có cao kiến gì thì bác chỉ e làm đi. E bí mới đem lên diễn đàn mà hỏi. Trình độ excel của em đúng là cóc nhái như bác nói nên e không biết phải làm sao.
 
Lần chỉnh sửa cuối:
[ThongBao]
Mình có yêu cầu sau:Cột B mình nhập một dãy số.
Cột C sẽ hiện ra thông tin ngày tháng năm theo yêu cầu sau:
(1) Nếu cột B được nhập hai số thì cột C sẽ hiện ra 19 và 2 số đã nhập.
Ví dụ: Nhập 90 hiện ra 1990.
(2) Nếu cột B được nhập ba số thì cột C sẽ tách số thứ nhất thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
(3) Nếu cột B được nhập bốn số thì cột C sẽ tách hai thứ số dầu thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
(4)Nếu cột B được nhập năm số thì cột C sẽ tách hai số đầu thành ngày, số thứ ba thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 12399 hiện ra 12/3/1999.
Nếu cột B được nhập sáu số thì cột C sẽ tách hai số đầu thành ngày, hai số tiếp theo thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 120299 hiện ra 12/02/1999.
Tuy nhiên, mình không thể kiểm soát được việc nhập sai thông tin. Ví dụ nhập ngày lớn hơn 31, nhập tháng lớn hơn 13. Ngoài ra mình yêu cầu nhập năm (tức 2 số cuối) phải trong khoản từ 90 đến 99. Mình nhờ các bạn góp ý chỉnh sửa công thức để bắt buộc người sử dụng nhập ngày tháng năm cho chính xác.
Bên dưới là file ví dụ.
P/S: các bạn đừng góp ý nhập định dạng date dd/mm/yyyy gì đ[/thongBao]Mình nghỉ cái này có thể làm bang hàm tự tạo; & mình đang ở Bạc lieu đến sang mai!
 
Bác ơi bác có cao kiến gì thì bác chỉ e làm đi. E bí mới đem lên diễn đàn mà hỏi. Trình độ excel của em đúng là cóc nhái như bác nói nên e không biết phải làm sao.

Điều tôi muốn nói ở đây là:
- Nếu bạn nhận được dữ liệu tùm lum như trên và đang cố gắng đưa về dạng chuẩn Date thì đúng là điều đáng hoan nghênh (vì bạn rất có trách nhiệm với mớ dữ liệu này)
- Nếu bạn muốn tạo ra 1 chương trình nhằm giúp cho cái "sự lười" kia (nhập tắt, ra kết quả chính xác) thì đây là điều đáng chê trách
Chỉ vậy thôi
-----------
Việc chuyển hết mớ dữ liệu hổn độn kia về đúng chuẩn Date cũng đâu phải chuyện khó khăn gì (bằng công thức hoặc lập trình...)... Chỉ cần bạn nêu ra được QUY LUẬT, nhất là đối với những trường hợp đặc biệt (chẳng hạn trường hợp mà bạn VetMini đã nêu ở trên)
 
Lần chỉnh sửa cuối:
Điều tôi muốn nói ở đây là:
- Nếu bạn nhận được dữ liệu tùm lum như trên và đang cố gắng đưa về dạng chuẩn Date thì đúng là điều đáng hoan nghênh (vì bạn rất có trách nhiệm với mớ dữ liệu này)
- Nếu bạn muốn tạo ra 1 chương trình nhằm giúp cho cái "sự lười" kia (nhập tắt, ra kết quả chính xác) thì đây là điều đáng chê trách
Chỉ vậy thôi
-----------
Việc chuyển hết mớ dữ liệu hổn độn kia về đúng chuẩn Date cũng đâu phải chuyện khó khăn gì (bằng công thức hoặc lập trình...)... Chỉ cần bạn nêu ra được QUY LUẬT, nhất là đối với những trường hợp đặc biệt (chẳng hạn trường hợp mà bạn VetMini đã nêu ở trên)
Híc, theo mình, quy luật bạn í đã nói rất rõ trong bài rồi mà Thầy
Bài này, làm bằng công thức hay VBA đều được
Riêng chuyện này:
nhất là đối với những trường hợp đặc biệt (chẳng hạn trường hợp mà bạn VetMini đã nêu ở trên)
là do bạn VetMini chưa đọc kỹ đề bài thôi, không có chuyện
Theo quy trình trên, nhập 5 số: Nhập 11111 thì hiện ra 11/1/1911?
Nhưng nếu dữ liệu thực sự là 1/11/1911 thì quy trình trên sai.
Người sử dụng vừa nhập vừa cười trong bụng:
"Một cột mà ba bốn loại dữ liệu. Thiết kế bảng như vậy mà còn đòi chính xác"
Thứ nhất: năm sinh phải hạn chế từ 90 ==> 99
Thứ hai: khi nhập 5 số:
Nếu cột B được nhập năm số thì cột C sẽ tách hai số đầu thành ngày, số thứ ba thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 12399 hiện ra 12/3/1999.
Nên khi nhập 11111 ( 2 số cuối không bao giờ là 11), 3 số đầu sẽ cho kết quả ngày 11 tháng 1
Có chăng cái chưa chính xác trong bài này là dữ liệu nhập vào định dạng phải là "Text" để nhập đủ 6 ký tự thí dụ: 021199 ==> 02/ 11/ 1999
Túm lại, bài này dùng công thức hơi rắc rối, dùng VBA thì quá dễ
Híc, xỉn quá, có gì hổng trúng bỏ qua
 
Thứ hai: khi nhập 5 số:

Nên khi nhập 11111 ( 2 số cuối không bao giờ là 11), 3 số đầu sẽ cho kết quả ngày 11 tháng 1

2 số cuối không nói tới vì luôn luôn chỉ năm.

Nếu cột B được nhập năm số thì cột C sẽ tách hai số đầu thành ngày, số thứ ba thành tháng và hai số cuối thành năm (tự thêm vào 19)
Vấn đề là ngày 1 tháng 12 năm 99 thì nhập thế nào? Có phải 11299?
Ngày 11 tháng 2 năm 99 thì nhập thế nào? Có phải 11299?

Và những trường hợp khác nữa:
Nếu cột B được nhập bốn số thì cột C sẽ tách hai thứ số dầu thành tháng và hai số cuối thành năm (tự thêm vào 19). Ví dụ: Nhập 399 hiện ra 03/1999.
1 tháng 2 năm 99 và tháng 12 năm 99, đều là 1299 cả.

Theo tôi:
- Quy luật không chặt chẽ, bị trùng lấp
- Tác giả muốn ràng buộc để nhập liệu đúng "quy luật" (từ giờ trở về sau), chứ không phải muốn sửa đống dữ liệu cũ.
 
2 số cuối không nói tới vì luôn luôn chỉ năm.

Nếu cột B được nhập năm số thì cột C sẽ tách hai số đầu thành ngày, số thứ ba thành tháng và hai số cuối thành năm (tự thêm vào 19)
Vấn đề là ngày 1 tháng 12 năm 99 thì nhập thế nào? Có phải 11299?
Ngày 11 tháng 2 năm 99 thì nhập thế nào? Có phải 11299?

.
Híc, theo đề bài, khi nhập 5 số ( 5 ký tự) 11299 ==> luôn luôn ra Ngày 11 tháng 2 năm 1999 ( 11/ 02/ 1999)
Vấn đề là ngày 1 tháng 12 năm 99 thì nhập thế nào? Có phải 11299?
Sẽ nhập 011299 ( 6 ký tự, nên phải chuyển định dạng text mới nhập được ký tự zero ở vị trí số 1 - Td: 010299 ==> 01/ 02/ 1999)
Nếu cột B được nhập năm số thì cột C sẽ tách hai số đầu thành ngày, số thứ ba thành tháng và hai số cuối thành năm (tự thêm vào 19)
số thứ ba thành tháng ==> luôn luôn nhỏ hơn 10
Híc +-+-+-++-+-+-++-+-+-+
 
Phải chọc cho cò già tỉnh hẳn mới được.

1. tại sao tháng nhỏ hơn 10 thì nhập 1 ký số, mà ngày nhỏ hơn 10 phải nhập 2 ký số với số 0 đầu? Vậy thôi nhập phứt ddmmyy cho rồi? Nhưng cách này thì tác giả yêu cầu "đừng góp ý"

2. Vứn đề tác giả lo ngại và yêu cầu là:

không thể kiểm soát được việc nhập sai thông tin. Ví dụ nhập ngày lớn hơn 31, nhập tháng lớn hơn 13. Ngoài ra mình yêu cầu nhập năm (tức 2 số cuối) phải trong khoản từ 90 đến 99.Mình nhờ các bạn góp ý chỉnh sửa công thức để bắt buộc người sử dụng nhập ngày tháng năm cho chính xác.

Chứ không phải tác giả cần công thức chuyển đổi.
 
Tôi chỉ đọc thấy phần "nhập cho chính xác" thì tôi nêu ra là "vói yêu cầu trên chính xác là điều bất khả thi"

Còn nếu muốn ý kiến thì tôi chịu thua. Tôi chỉ góp kinh nghiệm thực tiễn (quy luật thông dụng) như sau:

>> Đối với năm sinh trong dạng yy muốn đổi thành yyyy người ta đặt ra một con số mốc, dưới số đó là 20xx và trên số đó là 19xx. Ví dụ chọn số 30 thì số 39 sẽ trở thành 1939 và 29 sẽ trở thành 2029. Tuỳ thoe môi trường mà người ta chọn con số mốc này.

>> Đối với việc nhập không đủ tối thiểu 6 ký tự thì người ta ưu tiên 2 ký tự cho tháng chứ không phải ưu tiên cho ngày như chủ đề yêu cầu.
 
Bạn nên đưa File thực nhập lên để anh em đưa ra giải pháp nhanh lẹ chính xác, đỡ mất nhiều thời gian của bạn và của các thành viên khác, bài viết với dữ liệu giả định và không đính kèm File tôi ít khi nào trả lời.
 
Với yêu cầu bắt buộc người sử dụng nhập ngày tháng năm cho chính xác, theo tôi góp ý sử dụng calendar để nhập liệu là đáp ứng được yêu cầu (do bạn nêu sử dụng hàm nên tôi không đưa ra giải pháp).

Tốt nhất khi hỏi 1 vấn đề gì đó, nên kèm theo File với dữ liệu thật, thì mới nhận được giải pháp đúng và sẽ được trả lời nhanh nhất, còn dữ liệu giả định và không kèm File, thì bạn thấy đến đây đã là bài 15 rồi nhưng bạn vẫn chưa được kết quả khả quan.
 
Lần chỉnh sửa cuối:
Phải chọc cho cò già tỉnh hẳn mới được.

1. tại sao tháng nhỏ hơn 10 thì nhập 1 ký số, mà ngày nhỏ hơn 10 phải nhập 2 ký số với số 0 đầu? Vậy thôi nhập phứt ddmmyy cho rồi? Nhưng cách này thì tác giả yêu cầu "đừng góp ý"

2. Vứn đề tác giả lo ngại và yêu cầu là:

không thể kiểm soát được việc nhập sai thông tin. Ví dụ nhập ngày lớn hơn 31, nhập tháng lớn hơn 13. Ngoài ra mình yêu cầu nhập năm (tức 2 số cuối) phải trong khoản từ 90 đến 99.Mình nhờ các bạn góp ý chỉnh sửa công thức để bắt buộc người sử dụng nhập ngày tháng năm cho chính xác.

Chứ không phải tác giả cần công thức chuyển đổi.
Híc, đã có quy luật rõ ràng rồi mà Thầy, với số lượng ký tự trong cell:
1) Nếu có 2 ký tự ==> Giá trị 2 ký tự í phải lớn hơn 89
2) Nếu 3 ký tự ==> Giá trị 2 ký tự cuối lớn hơn 89
3) Nếu 4 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 13 & Giá trị 2 ký tự cuối lớn hơn 89
4) Nếu 5 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 32 (hoặc 31, 30, 29) & Gía trị ký tự thứ 3 không quan tâm & Giá trị 2 ký tự cuối lớn hơn 89
5) Nếu 6 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 32 (hoặc 31, 30, 29), giá trị 2 ký tự [3& 4] phải nhỏ hơn 13 & Giá trị 2 ký tự cuối lớn hơn 89
Cái "rắc- rối- rắm" nằm ở chỗ ( Cell chứa 5, 6 ký tự) là phải xét tháng là tháng mấy để khống chế ngày theo tháng chính xác _ tránh trường hợp Ngày 30 tháng 2 chẳng hạn. Hihi, đi kiếm cái gì bỏ vô bụng cái á, đói quá.
Híc
 
Híc, đã có quy luật rõ ràng rồi mà Thầy, với số lượng ký tự trong cell:
1) Nếu có 2 ký tự ==> Giá trị 2 ký tự í phải lớn hơn 89
2) Nếu 3 ký tự ==> Giá trị 2 ký tự cuối lớn hơn 89
3) Nếu 4 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 13 & Giá trị 2 ký tự cuối lớn hơn 89
4) Nếu 5 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 32 (hoặc 31, 30, 29) & Gía trị ký tự thứ 3 không quan tâm & Giá trị 2 ký tự cuối lớn hơn 89
5) Nếu 6 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 32 (hoặc 31, 30, 29), giá trị 2 ký tự [3& 4] phải nhỏ hơn 13 & Giá trị 2 ký tự cuối lớn hơn 89
Cái "rắc- rối- rắm" nằm ở chỗ ( Cell chứa 5, 6 ký tự) là phải xét tháng là tháng mấy để khống chế ngày theo tháng chính xác _ tránh trường hợp Ngày 30 tháng 2 chẳng hạn. Hihi, đi kiếm cái gì bỏ vô bụng cái á, đói quá.
Híc
Híc! HÍc! Còn 1 cái khó nữa là khi xuất ra, lúc là số (1989) lúc là text (02/1989) lúc là date (28/02/1989) vậy format cột này thế nào để nó ra đúng dạng???
Cứ cho nó là Text hết rồi tính sau.
-Bắt buộc nếu có ngày thì phải nhập đủ 2 ký số.
 

File đính kèm

Lần chỉnh sửa cuối:
Híc, đã có quy luật rõ ràng rồi mà Thầy, với số lượng ký tự trong cell:
1) Nếu có 2 ký tự ==> Giá trị 2 ký tự í phải lớn hơn 89
2) Nếu 3 ký tự ==> Giá trị 2 ký tự cuối lớn hơn 89
3) Nếu 4 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 13 & Giá trị 2 ký tự cuối lớn hơn 89
4) Nếu 5 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 32 (hoặc 31, 30, 29) & Gía trị ký tự thứ 3 không quan tâm & Giá trị 2 ký tự cuối lớn hơn 89
5) Nếu 6 ký tự ==> Giá trị 2 ký tự đầu nhỏ hơn 32 (hoặc 31, 30, 29), giá trị 2 ký tự [3& 4] phải nhỏ hơn 13 & Giá trị 2 ký tự cuối lớn hơn 89
Cái "rắc- rối- rắm" nằm ở chỗ ( Cell chứa 5, 6 ký tự) là phải xét tháng là tháng mấy để khống chế ngày theo tháng chính xác _ tránh trường hợp Ngày 30 tháng 2 chẳng hạn. Hihi, đi kiếm cái gì bỏ vô bụng cái á, đói quá.
Híc

Tôi nhìn nhận là chủ đưa ra quy luật rất rõ ràng. Tôi chỉ cảnh báo rằng quy luật ấy không đi với nguyên tắc kiểm soát dung sai của dữ liệu

Theo nguyên tắc dữ liệu số, bên trái quan trọng hơn bên phải, chữ số hàng trăm quan trọng hơn hàng chục quan trọng hơn hàng đơn vị.
Dữ liệu ngày tháng thì ngược lại, năm quan trọng hơn tháng và tháng quan trọng hơn ngày.

Quy trình như nêu ra từ đầu bài chỉ bảo đảm đến độ chính xác của năm.

Híc! HÍc! Còn 1 cái khó nữa là khi xuất ra, lúc là số (1989) lúc là text (02/1989) lúc là date (28/02/1989) vậy format cột này thế nào để nó ra đúng dạng???
Cứ cho nó là Text hết rồi tính sau.
-Bắt buộc nếu có ngày thì phải nhập đủ 2 ký số.

Dữ liệu xuất ra chỉ dùng để đọc, nó hoàn toàn không giúp được cho tính toán một công thức nào. Vì vậy đặt nó làm text là đúng nhất.

Nếu muốn tính toán thì bắt buộc quy trình phải thêm trị mặc định (default values). Ví dụ không có tháng thì coi như 0101 và không có ngày thì coi như 01. Tuy nhiên cách này sẽ không phân biệt được kết quả ấy là trị thật hay trị mặc định.

Trên thực tế, cách người ta thường dùng nhất là lộn ngược text thành dạng yyyymmdd. Khi ấy các trị chỉ toàn năm hay năm + tháng vẫn có thể làm việc chung với các trị kia.

Tôi đã nói từ đầu là chủ đề bài cần tìm hiểu thêm những quy luật chung khi làm việc với dữ liệu mà!
 
Híc, theo mình, quy luật bạn í đã nói rất rõ trong bài rồi mà Thầy
Bài này, làm bằng công thức hay VBA đều được
Riêng chuyện này:

là do bạn VetMini chưa đọc kỹ đề bài thôi, không có chuyện

Thứ nhất: năm sinh phải hạn chế từ 90 ==> 99
Thứ hai: khi nhập 5 số:

Nên khi nhập 11111 ( 2 số cuối không bao giờ là 11), 3 số đầu sẽ cho kết quả ngày 11 tháng 1
Có chăng cái chưa chính xác trong bài này là dữ liệu nhập vào định dạng phải là "Text" để nhập đủ 6 ký tự thí dụ: 021199 ==> 02/ 11/ 1999
Túm lại, bài này dùng công thức hơi rắc rối, dùng VBA thì quá dễ
Híc, xỉn quá, có gì hổng trúng bỏ qua

Bạn đã nói đúng ý mình. Cám ơn bạn nhiều.
 
=

Trên thực tế, cách người ta thường dùng nhất là lộn ngược text thành dạng yyyymmdd. Khi ấy các trị chỉ toàn năm hay năm + tháng vẫn có thể làm việc chung với các trị kia.

Chính xác là cách này và cũng là cách viết tắt hiệu quả nhất
 
Cám ơn các bạn đã quan tâm đến chủ đề này. Đúng là mình ít có kinh nghiệm. Mình thiết kế bản để các trường học gửi dữ liệu về cho thống nhất. Tuy nhiên, trước giờ cái vụ nhập ngày tháng năm sinh làm mình rất đau đầu. Vì mình đưa mẫu là một chuyện, nhưng người nhập lại có tuân theo hay không lại là một chuyện. Mình đã từng ràng buộc mọi người nhập định dạng là dd/mm/yyyy thì có khi dữ liệu khi mình tổng hợp bị đảo ngược thành mm/dd/yyyy. Chưa kể là có nhiều học sinh chỉ có năm sinh, hoặc chỉ có tháng và năm sinh. Sau này mình lại bị yêu cầu nhập cho đúng để in các mẫu giấy chứng nhận theo quy định (ngày nhỏ hơn 10 thì phải là hai số, tháng 01, 02 thì phải hai số, nhưng tháng từ 3 đến 9 thì một số). Rất là đau đầu. Cuối cùng mình nghĩ ra một cách là nhập ngày, tháng, năm mỗi thứ 1 cột và dùng validation để ràng buộc. Sau đó mình ghép lại. Cách này khỏe cho mình nhưng những người nhập liệu lại k thích. Vì vậy mình mới nghĩ đến yêu cầu nhập dữ liệu theo kiểu làm biếng như trên để xử lý thành ngày tháng năm sinh. Tuy nhiên mình suy nghĩ chưa thấu đáo vì cách nhập này cũng có quá nhiều sơ hở. Chắc là phải quay lại cách nhập mỗi thứ 1 cột. Rất vui vì các bạn đã góp ý. Mình hiện đang loay hoay tìm cách gỡ đây.
 
Lần chỉnh sửa cuối:
Vì mình đưa mẫu là một chuyện, nhưng người nhập lại có tuân theo hay không lại là một chuyện. Mình đã từng ràng buộc mọi người nhập định dạng là dd/mm/yyyy thì có khi dữ liệu khi mình tổng hợp bị đảo ngược thành mm/dd/yyyy.

Cái này không đúng nha!
Chỉ yêu cầu nhập đúng chuẩn Date là được, còn chuyện nó hiển thị ngày trước hay tháng trước lại chẳng liên quan gì đến chuyện nhập cả mà do ta Format Cells trong Excel mà ra
Nói tóm lại:
- Nhập liệu phải đúng chuẩn Date. Nhập ngày trước tháng sau hay tháng trước ngày sau là do tùy thiết lập của từng máy (cụ thể là trong Control Panel) ---> Điều này có nghĩa là: Nếu bạn buộc ngày ta nhập theo quy định dd/mm/yyyy nghĩa là bạn cũng sai luôn (tùy từng máy)
- Excel chỉ có thể can thiệp việc hiển thị (ngày trước hay tháng trước) chứ không quản vụ nhập liệu
 
Lần chỉnh sửa cuối:
Cái này không đúng nha!
Chỉ yêu cầu nhập đúng chuẩn Date là được, còn chuyện nó hiển thị ngày trước hay tháng trước lại chẳng liên quan gì đến chuyện nhập cả mà do ta Format Cells trong Excel mà ra
Nói tóm lại:
- Nhập liệu phải đúng chuẩn Date. Nhập ngày trước tháng sau hay tháng trước ngày sau là do tùy thiết lập của từng máy (cụ thể là trong Control Panel) ---> Điều này có nghĩa là: Nếu bạn buộc ngày ta nhập theo quy định dd/mm/yyyy nghĩa là bạn cũng sai luôn (tùy từng máy)
- Excel chỉ có thể can thiệp việc hiển thị (ngày trước hay tháng trước) chứ không quản vụ nhập liệu

Vậy thì bạn chỉ cho mình với. Cái này mình hơi bị ngu đây. Tại sao "buộc người ta nhập theo quy định dd/mm/yyyy nghĩa là bạn cũng sai luôn (tùy từng máy)?".
Yêu cầu của mình là chính đáng mà. Mình đâu thể yêu cầu mọi người chỉnh Control Panel cho thống nhất với máy của mình. Hơn nữa mình cũng đã nói dữ liệu cũng khá lộn xộn, trong đó có học sinh chỉ có năm sinh, có học sinh chỉ có tháng và năm sinh. Trên GPE cũng đã có một bạn có nhu cầu tương tự như mình nhưng hình như cuối cùng cũng chưa được toại nguyện. (http://www.giaiphapexcel.com/forum/showthread.php?20764-Định-dạng-ngày-tháng-năm-theo-chuẩn)
Mình cũng không muốn người ta phải nhớ quy ước nhập yyyymmdd. Nếu vậy chẳng thà nhập mỗi thứ một cột còn dễ nhớ cho người nhập hơn.
 
Hay là cứ quy ước nhập dạng text ("000000"). Sau đó sẽ chuyển về dd/mm/yyyy (nếu là tháng 01, 02, 10, 11, 12) hoặc chuyển về dd/m/yyyy (nếu từ tháng 3 đến tháng 9). Nếu ngày không có thì nhập 00, khi đó chỉ có tháng và năm thì chỉ ra mm/yyyy (có thể cho các con số 00 của dd thành màu trắng được không?). Tương tự nếu chỉ có năm thì sẽ hiện ra yyyy.
Nhưng nếu vậy thì phải kiểm soát thêm thông tin nhập ngày tháng cho chính xác. Ví dụ ngày không lớn hơn 31 (các tháng 01, 3, 5, 7, 8, 10, 12), hoặc không lớn hơn 30 (các tháng còn lại, trừ tháng 02). Tháng 02 thì không lớn hơn 28 (năm không nhuận) hoặc 29 (năm nhuận). Năm thì theo yêu cầu từ năm (19)90 đến (19)99.
Dữ liệu xuất ra ở dạng text là được.
Cám ơn các bạn quan tâm. Bên dưới là file ví dụ.
P/s: Các đơn vị của mình vẫn còn xài MS Excel 2003.
 

File đính kèm

Lần chỉnh sửa cuối:
Vậy thì bạn chỉ cho mình với. Cái này mình hơi bị ngu đây. Tại sao "buộc người ta nhập theo quy định dd/mm/yyyy nghĩa là bạn cũng sai luôn (tùy từng máy)?".
.

Tức là thế này: Nếu Control Panel của Windows thiết lập kiểu gì (dd/mm/yyyy hay mm/dd/yyy) thì BẮT BUỘC phải nhập đúng thứ tự như vậy.
Vậy nên trên máy mà Control Panel đang thiết lập mm/dd/yyyy nhưng bạn lại kêu người ta nhập theo chuẩn dd/mm/yyyy thì sai tét tè lè rồi còn gì
Yêu cầu của mình là chính đáng mà. Mình đâu thể yêu cầu mọi người chỉnh Control Panel cho thống nhất với máy của mình. Hơn nữa mình cũng đã nói dữ liệu cũng khá lộn xộn, trong đó có học sinh chỉ có năm sinh, có học sinh chỉ có tháng và năm sinh. Trên GPE cũng đã có một bạn có nhu cầu tương tự như mình nhưng hình như cuối cùng cũng chưa được toại nguyện. (http://www.giaiphapexcel.com/forum/showthread.php?20764-Định-dạng-ngày-tháng-năm-theo-chuẩn)
Mình cũng không muốn người ta phải nhớ quy ước nhập yyyymmdd. Nếu vậy chẳng thà nhập mỗi thứ một cột còn dễ nhớ cho người nhập hơn.
Có 2 cách nhập luôn luôn đúng với mọi thiết lập trong Control Panel, đó là:
- Nhập theo định dạng: yyyy/mm/dd
- Nhập theo định dạng: dd-MMM-yyyy (ví dụ: 15-Jul-2013)
Chỉ có 2 cách đó thôi, ngoài ra không có cách nào khác (đương nhiên là ngoài trừ cách mà thông thường ta vẫn nhập Date hàng ngày thì bắt buộc phải là người biết đôi chút về Windows, Control Panel)
--------------------------------------
Ở đây tôi đang bàn về chuyện làm sao để nhập cho đúng... Còn nếu bạn đang có mở dữ liệu lộn xộn và muốn đưa nó về "chuẩn" thì đấy lại là chuyện khác
--------------------------------------
Nếu cảm thấy khó khăn quá trong chuyện nhập liệu, vậy thôi ta làm luôn chương trình có cái Calendar: Nó hiện ra và ta chỉ việc chọn ngày (khỏi nhập gì cả)... Bảo đảm với cách này thì khỏi sợ nhập sai rồi
Nói thêm 1 chút về cái file của bạn đưa ở trên: Dữ liệu như thế là không CHUẨN rồi (vì không lý nào không 1 cột lại có quá trời kiểu dữ liệu ----> Mai này tính toán làm sao đây?)
 
Dữ liệu như thế là không CHUẨN rồi (vì không lý nào không 1 cột lại có quá trời kiểu dữ liệu ----> Mai này tính toán làm sao đây?)
Mình chỉ cần hiển thị cho đúng theo yêu cầu như trên là được. Không cần phải tính toán gì.
Bạn có thể chỉ cho mình cách tô màu trắng của ba ký tự 00/ trong một ô excel có dãy kí tự 00/03/1995 được không? Nghĩa là mình chỉ cần hiển thị 03/1995.
 
Hay là cứ quy ước nhập dạng text ("000000"). Sau đó sẽ chuyển về dd/mm/yyyy (nếu là tháng 01, 02, 10, 11, 12) hoặc chuyển về dd/m/yyyy (nếu từ tháng 3 đến tháng 9). Nếu ngày không có thì nhập 00, khi đó chỉ có tháng và năm thì chỉ ra mm/yyyy (có thể cho các con số 00 của dd thành màu trắng được không?). Tương tự nếu chỉ có năm thì sẽ hiện ra yyyy.
Nhưng nếu vậy thì phải kiểm soát thêm thông tin nhập ngày tháng cho chính xác. Ví dụ ngày không lớn hơn 31 (các tháng 01, 3, 5, 7, 8, 10, 12), hoặc không lớn hơn 30 (các tháng còn lại, trừ tháng 02). Tháng 02 thì không lớn hơn 28 (năm không nhuận) hoặc 29 (năm nhuận). Năm thì theo yêu cầu từ năm (19)90 đến (19)99.
Dữ liệu xuất ra ở dạng text là được.
Cám ơn các bạn quan tâm. Bên dưới là file ví dụ.
P/s: Các đơn vị của mình vẫn còn xài MS Excel 2003.
Nếu bạn chịu nghe góp ý chứ không phải như bài 1 "đừng góp ý",. thí có vô vàn cách. Bạn cứ buộc người dùng nhập đủ 6 ký số ddmmyy hoặc mmddyy. Bạn sẽ xử lý sau. Đơn giản cho người dùng và đơn giản cho bạn. Thang không có thì quy định tháng 1, ngày không có quy đinh ngày 1. 2003 hay 2007, 2010, chẳng phải vấn đề.
 
Đúng là "chưa thấy quan tài, chưa đổ lệ!"

[thongBao]Thang không có thì quy định tháng 1, ngày không có quy đinh ngày 1.
2003 hay 2007, 2010, chẳng phải vấn đề.[/thongBao]

Trước tiên sẽ gặp khó cho học sinh (hay học viên), khi cầm giấy tốt nghiệp đi làm việc khác cho cuộc đời; Vì "Chủ nghĩa Lí lịch" nước ta chưa bỏ được lề thói đối chiếu với tài liệu gốc, như chứng mình thư, hay hộ khẩu,. . .
Lúc đó thì quýt làm cam chịu. là cái chắc.

Đừng có thiếu í thức & trách nhiệm như thế với các em học sinh (Học viên); chủ nhân tương lai của đất nước.
 
[thongBao]Thang không có thì quy định tháng 1, ngày không có quy đinh ngày 1.
2003 hay 2007, 2010, chẳng phải vấn đề.[/thongBao]

Trước tiên sẽ gặp khó cho học sinh (hay học viên), khi cầm giấy tốt nghiệp đi làm việc khác cho cuộc đời; Vì "Chủ nghĩa Lí lịch" nước ta chưa bỏ được lề thói đối chiếu với tài liệu gốc, như chứng mình thư, hay hộ khẩu,. . .
Lúc đó thì quýt làm cam chịu. là cái chắc.

Đừng có thiếu í thức & trách nhiệm như thế với các em học sinh (Học viên); chủ nhân tương lai của đất nước.

Bác không biết rồi, có những em khai sinh không có, ngày tháng không biết, nên khai lý lịch như thế. Hộ khẩu cũng như thế, CMND cũng sẽ như thế. Làm gì có tài liệu gốc nào?
 
Nếu nhập đủ 6 số, chứ không phải nhập 2, 3, 4, 5 số rồi định dạng, thì dùng công thức này:

C4 =IF(RIGHT(B4;2)*1<90;"sai năm";IF(MID(B4;3;2)*1>12;"sai tháng";IF(B4*1<100;1900+B4;IF(B4*1<10000;TEXT(INT(B4/100);"00")&"/"&RIGHT(B4;2)+1900;IF(TEXT(DATE(1900+RIGHT(B4;2);MID(B4;3;2);LEFT(B4;2));"mm")*1=MID(B4;3;2)*1;TEXT(DATE(1900+RIGHT(B4;2);MID(B4;3;2);LEFT(B4;2));"dd/mm/yyyy");"sai ngày")))))
 
Lần chỉnh sửa cuối:
Nếu nhập đủ 6 số, chứ không phải nhập 2, 3, 4, 5 số rồi định dạng, thì dùng công thức này:

C4 =IF(RIGHT(B4;2)*1<90;"sai năm";IF(MID(B4;3;2)*1>12;"sai tháng";IF(B4*1<100;1900+B4;IF(B4*1<10000;TEXT(INT(B4/100);"00")&"/"&RIGHT(B4;2)+1900;IF(TEXT(DATE(1900+RIGHT(B4;2);MID(B4;3;2);LEFT(B4;2));"mm")*1=MID(B4;3;2)*1;TEXT(DATE(1900+RIGHT(B4;2);MID(B4;3;2);LEFT(B4;2));"dd/mm/yyyy");"sai ngày")))))

Mình đã kiểm tra. Vẫn chưa đúng lắm. Bạn kiểm tra lại dùm mình với (file đính kèm).
 

File đính kèm

Mình đã kiểm tra. Vẫn chưa đúng lắm. Bạn kiểm tra lại dùm mình với (file đính kèm).

Điều kiện ban đầu tôi yêu cầu là: Nếu nhập đủ 6 số, chứ không phải nhập 2, 3, 4, 5 số rồi định dạng, thì ...

Do đó ô B4 phải là 000090 chứ không phải 90
 
Điều kiện ban đầu tôi yêu cầu là: Nếu nhập đủ 6 số, chứ không phải nhập 2, 3, 4, 5 số rồi định dạng, thì ...

Do đó ô B4 phải là 000090 chứ không phải 90

Mình hiểu rồi. Phải format dạng text ở ô B4. Cám ơn bạn rất nhiều.
 
Lần chỉnh sửa cuối:
Nếu nhập đủ 6 số, chứ không phải nhập 2, 3, 4, 5 số rồi định dạng, thì dùng công thức này:

C4 =IF(RIGHT(B4;2)*1<90;"sai năm";IF(MID(B4;3;2)*1>12;"sai tháng";IF(B4*1<100;1900+B4;IF(B4*1<10000;TEXT(INT(B4/100);"00")&"/"&RIGHT(B4;2)+1900;IF(TEXT(DATE(1900+RIGHT(B4;2);MID(B4;3;2);LEFT(B4;2));"mm")*1=MID(B4;3;2)*1;TEXT(DATE(1900+RIGHT(B4;2);MID(B4;3;2);LEFT(B4;2));"dd/mm/yyyy");"sai ngày")))))

Trước giờ mình xài công thức này rất ổn. Nhưng bây giờ đã có học sinh có năm sinh 2000 nên công thức này bị sai năm sinh. Ví dụ nhập "010100" thì sẽ ra ngày sinh "01/01/1990" chứ không phải là "01/01/2000" như mình mong muốn. Các bạn giúp mình sửa công thức với (xem file gửi kèm)
 
Trước giờ mình xài công thức này rất ổn. Nhưng bây giờ đã có học sinh có năm sinh 2000 nên công thức này bị sai năm sinh. Ví dụ nhập "010100" thì sẽ ra ngày sinh "01/01/1990" chứ không phải là "01/01/2000" như mình mong muốn. Các bạn giúp mình sửa công thức với (xem file gửi kèm)
Thử công thức này:
=TEXT(DATE(1900+RIGHT(B4,2)+(RIGHT(B4,2)*1<90)*100,MID(B4,LEN(B4)-3,2),LEFT(B4,LEN(B4)-4)),"dd/mm/yyyy")
 
Công thức của bạn chỉ đúng với trường hợp sinh năm 2000, nhưng còn các năm khác thì vẫn chưa đúng.
Công thức này đúng trong trường hợp năm sinh từ 1990 đến 2014
Nếu ngày sinh từ 1 dến 9 chỉ cần nhập 1 số, ví dụ 09/10/2001 chỉ cần nhập 91001 (5 số)
 

File đính kèm

Công thức này đúng trong trường hợp năm sinh từ 1990 đến 2014
Nếu ngày sinh từ 1 dến 9 chỉ cần nhập 1 số, ví dụ 09/10/2001 chỉ cần nhập 91001 (5 số)
Vậy có thể làm cho đúng trong mọi trường hợp năm sinh không bạn? Thứ hai là nếu học sinh chỉ có năm sinh mà không có ngày tháng sinh thì công thức của bạn vẫn chưa đúng (cái vụ chỉ có năm sinh không thì ở địa phương tui vẫn còn nhiều học sinh trong khai sinh chỉ có năm sinh).
 
Vậy có thể làm cho đúng trong mọi trường hợp năm sinh không bạn? Thứ hai là nếu học sinh chỉ có năm sinh mà không có ngày tháng sinh thì công thức của bạn vẫn chưa đúng (cái vụ chỉ có năm sinh không thì ở địa phương tui vẫn còn nhiều học sinh trong khai sinh chỉ có năm sinh).
Công thức này chỉ đúng trong trường hợp nhỏ hơn 100 tuổi:
=IF(B4<=YEAR(TODAY()),B4,TEXT(DATE(1900+MOD(B4,100)+(MOD(B4,100)<=MOD(YEAR(TODAY()),100))*100,INT(MOD(B4,10000)/100),INT(B4/10000)),"dd/mm/yyyy"))
 
Công thức này chỉ đúng trong trường hợp nhỏ hơn 100 tuổi:
=IF(B4<=YEAR(TODAY()),B4,TEXT(DATE(1900+MOD(B4,100)+(MOD(B4,100)<=MOD(YEAR(TODAY()),100))*100,INT(MOD(B4,10000)/100),INT(B4/10000)),"dd/mm/yyyy"))

Những vẫn chưa giải quyết được cái vụ chỉ có năm sinh mà không có ngày tháng sinh. Ví dụ nhập 000079 thì phải ra 1979, hoặc 000000 thì phải ra 2000. Bạn giúp mình với.
 
Những vẫn chưa giải quyết được cái vụ chỉ có năm sinh mà không có ngày tháng sinh. Ví dụ nhập 000079 thì phải ra 1979, hoặc 000000 thì phải ra 2000. Bạn giúp mình với.
Hy vọng lần này đúng:
=IF(B4*1<100,IF(B4*1>15,1900,2000)+B4,TEXT(DATE(1900+MOD(B4,100)+(MOD(B4,100)<=MOD(YEAR(TODAY()),100))*100,INT(MOD(B4,10000)/100),INT(B4/10000)),"dd/mm/yyyy"))
Hoặc:
=IF(B4*1>100,TEXT(INT(B4/100),"00""/""00")&"/","")&IF(MOD(B4,100)>15,1900,2000)+MOD(B4,100)
 
Lần chỉnh sửa cuối:
Vậy thì bạn chỉ cho mình với. Cái này mình hơi bị ngu đây. Tại sao "buộc người ta nhập theo quy định dd/mm/yyyy nghĩa là bạn cũng sai luôn (tùy từng máy)?".
Yêu cầu của mình là chính đáng mà. Mình đâu thể yêu cầu mọi người chỉnh Control Panel cho thống nhất với máy của mình. Hơn nữa mình cũng đã nói dữ liệu cũng khá lộn xộn, trong đó có học sinh chỉ có năm sinh, có học sinh chỉ có tháng và năm sinh. Trên GPE cũng đã có một bạn có nhu cầu tương tự như mình nhưng hình như cuối cùng cũng chưa được toại nguyện. (http://www.giaiphapexcel.com/forum/showthread.php?20764-Định-dạng-ngày-tháng-năm-theo-chuẩn)
Mình cũng không muốn người ta phải nhớ quy ước nhập yyyymmdd. Nếu vậy chẳng thà nhập mỗi thứ một cột còn dễ nhớ cho người nhập hơn.
Đọc đi đọc lại thì thấy vấn đề ở bài 24 với trích dẫn trên.
Tôi nghĩ lý do chính là phần chữ đỏ (tôi tô màu), tức là lỗi do hệ thống không thống nhất.
Nếu không thể chỉ dẫn mọi người chỉnh Control panel thì nên chỉ cho mọi người biết một phần "môi trường" của máy đang dùng:
a. Nhập vô ô A1 nội dung 1-1-2000
b. Nhập vôi ô B1: =A1+1
c. Nếu thấy kết quả là 2-1-200 thì máy đang dùng sử dụng định dạng dd-mm-yyyy. Còn nếu thấy 1-2-2000 thì định dạng mm-dd-yyyy.
Từ đó người nhập phải tuân theo nhận biết trên.

Tôi thường kiểm tra trên máy lạ và phải làm theo máy, vì nếu chỉnh sửa sẽ bị người dùng máy đó phản đổi (mất thói quen)
 
Đọc đi đọc lại thì thấy vấn đề ở bài 24 với trích dẫn trên.
Tôi nghĩ lý do chính là phần chữ đỏ (tôi tô màu), tức là lỗi do hệ thống không thống nhất.
Nếu không thể chỉ dẫn mọi người chỉnh Control panel thì nên chỉ cho mọi người biết một phần "môi trường" của máy đang dùng:
a. Nhập vô ô A1 nội dung 1-1-2000
b. Nhập vôi ô B1: =A1+1
c. Nếu thấy kết quả là 2-1-200 thì máy đang dùng sử dụng định dạng dd-mm-yyyy. Còn nếu thấy 1-2-2000 thì định dạng mm-dd-yyyy.
Từ đó người nhập phải tuân theo nhận biết trên.

Tôi thường kiểm tra trên máy lạ và phải làm theo máy, vì nếu chỉnh sửa sẽ bị người dùng máy đó phản đổi (mất thói quen)

Cám ơn bạn nhiều. Mình biết thêm một cách để kiểm tra máy tính nữa.
 
Hy vọng lần này đúng:
=IF(B4*1<100,IF(B4*1>15,1900,2000)+B4,TEXT(DATE(1900+MOD(B4,100)+(MOD(B4,100)<=MOD(YEAR(TODAY()),100))*100,INT(MOD(B4,10000)/100),INT(B4/10000)),"dd/mm/yyyy"))
Hoặc:
=IF(B4*1>100,TEXT(INT(B4/100),"00""/""00")&"/","")&IF(MOD(B4,100)>15,1900,2000)+MOD(B4,100)

Hay thiệt. Công thức bạn rất ngắn gọn. Cám ơn bạn nhiều.
 
em có danh sách ngày tháng năm sinh chuẩn rồi, giờ chỉ có chuyển từ dãy số sang định dạng dd/mm/yyyy thôi thì làm thế nào các bác (vd: 20090721 --> 21/07/2009)
đây là file của e, nhờ các bác giúp ak
 

File đính kèm

Đọc đi đọc lại thì thấy vấn đề ở bài 24 với trích dẫn trên.
Tôi nghĩ lý do chính là phần chữ đỏ (tôi tô màu), tức là lỗi do hệ thống không thống nhất.
Nếu không thể chỉ dẫn mọi người chỉnh Control panel thì nên chỉ cho mọi người biết một phần "môi trường" của máy đang dùng:
a. Nhập vô ô A1 nội dung 1-1-2000
b. Nhập vôi ô B1: =A1+1
c. Nếu thấy kết quả là 2-1-200 thì máy đang dùng sử dụng định dạng dd-mm-yyyy. Còn nếu thấy 1-2-2000 thì định dạng mm-dd-yyyy.
Từ đó người nhập phải tuân theo nhận biết trên.

Tôi thường kiểm tra trên máy lạ và phải làm theo máy, vì nếu chỉnh sửa sẽ bị người dùng máy đó phản đổi (mất thói quen)

Đầu cần 2 ô. Chỉ cần gõ 13/1 vào 1 ô và enter. Nếu nó vẫn là 13/1 và bên trái thì hệ thống tháng trước ngày sau. Nếu nó biến thành 13/1/2015 hoặc Jan 13 thì hệ thống của máy là ngày trước tháng sau.
 
để cột nào cũng được mà bạn mình muốn chuyển cho nhanh khỏi phải nhập bằng tay cột có số liệu là ô b2 mình đặt công thức này được không:
=DATE(LEFT(B2,4),MID(B2,5,2),RIGHT(B2,2))
 
để cột nào cũng được mà bạn mình muốn chuyển cho nhanh khỏi phải nhập bằng tay cột có số liệu là ô b2 mình đặt công thức này được không:
=DATE(LEFT(B2,4),MID(B2,5,2),RIGHT(B2,2))
Cách này chuẩn rồi, có thể rút gọn như sau
=--TEXT(B2,"0000""/""00""/""00")
Định dạng dd/mm/yyyy
 

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

Back
Top Bottom