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

Liên hệ QC

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.
 
Web KT

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

Back
Top Bottom