Hỏi: Cách nhập dữ liệu ngày ddmmyyyy chuyển thành dd/mm/yyyy

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài
Trước tiên để trả lời bạn thì cho hỏi bạn đã học về LEAN chưa.
Không cần phải nói đến LEAN. Tôi đã từng kiếm cơm bằng Kaizen.
Trước khi về hưu, tôi vẫn thường là Quản Lý Đồ Án, Tư Vấn Quy Trình Quản Lý. Không biết ba cái trò múa rối kia thì tôi nói dối ăn tiền với thân chủ à?

Và GPE tạo ra không phải để giúp các thành viên về Excel hay sao. nếu đã có ý giúp thì vui. còn nếu không muốn giúp thì có thể bỏ qua
Bạn là người thứ mấy ngàn ở đây nói câu này với tôi.
Trước khi nói thì chịu khó tìm hiểu đối tượng nhé. Điển hình, nếu bảo #13 không nói về VBA thi bài ấy nói về cái gì? Trừ khi bạn quá dốt về VBA, không nhận ra.
Tôi chỉ khác với bạn là khi tôi ra tay, tôi giúp các bạn ở GPE tổng thể chứ ít khi chú vào chủ thớt. Thớt chỉ là chỗ tiện cho tôi ví dụ thôi.

Ngay ở bài #17, tôi đưa ra cái mánh khóe của thớt là để giúp cho các bạn GPE khác, mới chập chững vào nghề cách nhìn con số thống kê, chớ để cho mấy thằng nói dóc chúng mà mắt.

Gõ một phím mất 1 giây - trò hề
Nếu đã biết tiết kiệm thì nhìn cái lãng phí này đầu tiên.
LEAN LIẾC theo ý bạn giảm được 1 giây dấu / nhưng 9 giây ddmmyyyy+Enter thì không cần hỏi lại?
 
Dù có nhanh đến đâu đi nữa thì cũng hãy thêm nhịp / - . để ngăn cách.
Bản thân đã thử nhập kiểu này, và phải dừng lại đếm đủ số hay chưa?

Nếu muốn nhanh hơn và không lẫn lộn thì em đề nghị chỉ nhập 4 ký tự thôi, năm sẽ cố định trước khi nhập.

Và 1/1 và 0101 thì với em tốc độ chênh nhau rất nhiều đấy. Không phải 1s, 2s chỉ là gấp đôi đâu. Nếu được thì các bác có thể nhập mỗi thứ như thế 1000 lần và bấm giờ. --=0 --=0 --=0

Dù sao, em cũng sẽ ngâm cứu bổ sung kiểu nhập này vào hàm với tham số "dmy", "ymd", ...
 
Òh. Bác Vẹt Mini @VetMini là chuyên gia 5S Kaizen à. Phục bác quá, không biết lúc trước cty mình mời chuyên gia đến dậy 5S-Kaizen để hoàn thiện hệ thống ISO, phải là bác không, nhưng như vậy đã là giỏi rồi !
- Đới với mình. Quan trọng trong hệ thống qui trình này: ngăn nắp, tránh thao tác thừa là đã nâng cao năng suất rồi, áp dụng chủ yếu là ở khối sản xuất, còn khối văn phòng thì không nhiều, chủ yếu anh ngồi 1 chổ, tay phải anh là chứng từ gì, tay trái là chứng từ gì. Cứ vậy mà lấy, khỏi phải tìm.
- Còn vấn đề như bải, giảm gỏ phím để giảm bớt thời gian thì nó giảm được bao nhiêu đâu hè. Chủ yếu là kỷ năng người đánh chứ. Vấn đề chủ thớt có thể dùng code VBA cho sự kiện ở cột C.
1. Set dịnh dạng là ngày tháng năm dd/mm/yyyy
2. Đặt điều kiện if:
- dd <= 31
- mm <= 12
- nhập đủ 8 ký tự
Nếu thỏa thì nhập, không thì thông báo và xóa.
Còn 1 dụ nữa: ngày của tháng đó, năm đó phải thỏa điều kiện ngày. Thì các bạn chuyên Excel hướng dẫn thêm.
Ý tưởng mình là vậy, nhưng làm không được, chỉ đang nhất chân lên thôi, chưa chạy như bạn @cantl
 
Hôm trước cũng quan tâm về chủ đề này, hóng! Nhưng thắc mắc là nếu đã bỏ "/" thì chủ thớt sao không hỏi cách nhập ddmmyy, 231223 => 23/12/2023 nhỉ.? Mong là sẽ có cách giải thoát cho em chủ thớt! Nếu có cả công thức và VBA cho đa dạng sự lựa chọn. kkk!
 
Hôm trước cũng quan tâm về chủ đề này, hóng! Nhưng thắc mắc là nếu đã bỏ "/" thì chủ thớt sao không hỏi cách nhập ddmmyy, 231223 => 23/12/2023 nhỉ.? Mong là sẽ có cách giải thoát cho em chủ thớt! Nếu có cả công thức và VBA cho đa dạng sự lựa chọn. kkk!
Tôi trả lời câu này và cũng cho đại ý bài #23
Đọc cho kỹ phần 2 của bài #17.

Nhìn theo trước mắt thì dễ rồi. Tôi phần 2 của bài #17 là để trả lời cho bài #16, phân tích thế nào là "thực tế".
Đối với dân chuyên "triển khai đồ án/systems developing" thực tế, cái gì cũng có 3 kiểu:
1. Chỉ sơ sài; có thể chỉ vừa đúng yêu cầu thực trạng, không hẳn đã đáp ứng đủ yêu cầu bên B (nhiều trường hợp bên B, vì khong đủ kinh nghiệm cho nên có những đòi hỏi không xứng đáng đồng tiền bát gạo). không rườm rà gì thêm. Dĩ nhiên là các chọn lựa thêm thắt đều gạt ra ngoài.
2. Chỉ vừa đúng hết yêu cầu của hệ thống và hài lòng bên B (tuy rằng có thể bên B đòi những chuyện lãng nhách, chỉ chủ yếu làm dáng).
3. Bao hết các trường hợp linh tinh khác có thể xảy ra. Điều này dân viết code trên VBA rất thích; nhưng họ không có đủ kinh nghiệm về giao diện người dùng (user interface) cho nên viết những hàm/sub mà cách dùng rất phức tạp; do câu "nên thêm tính năng này, tính năng kia". Nên nhớ rằng các hàm chính của Excel chỉ dẫn hết sức cặn kẽ mà người dùng còn lười đọc. Bảo các hàm UDF viết không có chỉ dẫn thì ai dùng? Chỉ có dân viết code trên GPE với nhau mới đọc hiểu. Người không theo trường phái code GPE như tôi, không quen cách code của GPE mỗi lần đọc một đoạn code trên 20 dòng là tóe nổ con mắt. Hàm thì tính năng đủ thứ mà chỉ dẫn thì không thấy một lời.

Trở lại ý chính của bài. Trên thực tế, việc tiết kiệm thời gian xếp hạng dưới việc nhập cho chính xác. Trừ trường hợp bị bắt buộc phải khác hoặc cần cải tiến, nhập liệu theo kiểu quen thuộc bao giờ cũng ít lỗi hơn nhiều kiểu lạ. Vì vậy, cuối bài #17 là tôi nhắc nhở rằng trên thực tế, phải xét xem người dùng còn làm những gì nữa. Ví dụ công việc người dùng có sử dụng vài phần mềm khác mà nhập bắt buộc theo dạng dd/mm/yyyy (không thay đổi được) thì thêm tính năng ddmmyyyy (sửa theo ý muốn) cho bảng tính Excel này chỉ gây nhiều lỗi thêm thôi.

Chú thích về tiết kiệm thời gian nhập liệu, và tránh lỗi:
Có một số nơi, nhất là kế toán và quản ký kho, người ta lập ra cách ghi nhật ký chung bằng quy trình nhập liệu. Ví dụ mỗi dòng:
Ngày+Mã chứng từ+Mã khách hàng+Mã đơn đặt hàng+Mã hàng+số lượng+Doanhthu (triệu)+Vat (triệu)+Diễn giải
12112023+BN0123+KH0456+DD0777+H0501+100+225,15+2,2515+Giao hàng tại kho B
Bên trong, chương trình sẽ tự tách ra:
ngày: 12-11-2023
chứng từ: BN0123
mã khách hàng: KH0456
mã đơn đặt hàng: DD0777
mã hàng: H0501
số lượng: 100
thành tiền (triệu): 225,15
thuế VAT (triệu): 2,2515
diến giải: tùy thích, thường chép lại trong biên lai thâu tiền. Trong ví dụ trên, là lời dặn khách hàng đem biên lai đến kho B để bốc hàng. (kho B sẽ đóng dấu hàng đã giao tận tay).
Những chi tiết có thể bỏ qua thì người ta để trống (hai dấu cộng liên tiếp)
Sau khi tách xong, chương trình sẽ kiểm soát sự hợp lệ của từng món và bắt gõ lại nếu sai sót.

Dĩ nhiên, nếu dùng Form thì các dấu cộng là Tab. Tuy nhiên, gặp dân giỏi thì nhập diểu dòng như trên nhanh và ít lỗi hơn Form.
Dân viết chương trình nhập liệu có kinh nghiệm còn có phần batch totals để kiểm soát sau khi đã nhập hết các biên lai. Nhưng ngày nay, người nhập liệu có kinh nghiệm sẽ tự biết bôi đen các cột và check batch totals ở dòng status.
 
Tôi trả lời câu này và cũng cho đại ý bài #23
Đọc cho kỹ phần 2 của bài #17.

Nhìn theo trước mắt thì dễ rồi. Tôi phần 2 của bài #17 là để trả lời cho bài #16, phân tích thế nào là "thực tế".
Đối với dân chuyên "triển khai đồ án/systems developing" thực tế, cái gì cũng có 3 kiểu:
1. Chỉ sơ sài; có thể chỉ vừa đúng yêu cầu thực trạng, không hẳn đã đáp ứng đủ yêu cầu bên B (nhiều trường hợp bên B, vì khong đủ kinh nghiệm cho nên có những đòi hỏi không xứng đáng đồng tiền bát gạo). không rườm rà gì thêm. Dĩ nhiên là các chọn lựa thêm thắt đều gạt ra ngoài.
2. Chỉ vừa đúng hết yêu cầu của hệ thống và hài lòng bên B (tuy rằng có thể bên B đòi những chuyện lãng nhách, chỉ chủ yếu làm dáng).
3. Bao hết các trường hợp linh tinh khác có thể xảy ra. Điều này dân viết code trên VBA rất thích; nhưng họ không có đủ kinh nghiệm về giao diện người dùng (user interface) cho nên viết những hàm/sub mà cách dùng rất phức tạp; do câu "nên thêm tính năng này, tính năng kia". Nên nhớ rằng các hàm chính của Excel chỉ dẫn hết sức cặn kẽ mà người dùng còn lười đọc. Bảo các hàm UDF viết không có chỉ dẫn thì ai dùng? Chỉ có dân viết code trên GPE với nhau mới đọc hiểu. Người không theo trường phái code GPE như tôi, không quen cách code của GPE mỗi lần đọc một đoạn code trên 20 dòng là tóe nổ con mắt. Hàm thì tính năng đủ thứ mà chỉ dẫn thì không thấy một lời.

Trở lại ý chính của bài. Trên thực tế, việc tiết kiệm thời gian xếp hạng dưới việc nhập cho chính xác. Trừ trường hợp bị bắt buộc phải khác hoặc cần cải tiến, nhập liệu theo kiểu quen thuộc bao giờ cũng ít lỗi hơn nhiều kiểu lạ. Vì vậy, cuối bài #17 là tôi nhắc nhở rằng trên thực tế, phải xét xem người dùng còn làm những gì nữa. Ví dụ công việc người dùng có sử dụng vài phần mềm khác mà nhập bắt buộc theo dạng dd/mm/yyyy (không thay đổi được) thì thêm tính năng ddmmyyyy (sửa theo ý muốn) cho bảng tính Excel này chỉ gây nhiều lỗi thêm thôi.

Chú thích về tiết kiệm thời gian nhập liệu, và tránh lỗi:
Có một số nơi, nhất là kế toán và quản ký kho, người ta lập ra cách ghi nhật ký chung bằng quy trình nhập liệu. Ví dụ mỗi dòng:
Ngày+Mã chứng từ+Mã khách hàng+Mã đơn đặt hàng+Mã hàng+số lượng+Doanhthu (triệu)+Vat (triệu)+Diễn giải
12112023+BN0123+KH0456+DD0777+H0501+100+225,15+2,2515+Giao hàng tại kho B
Bên trong, chương trình sẽ tự tách ra:
ngày: 12-11-2023
chứng từ: BN0123
mã khách hàng: KH0456
mã đơn đặt hàng: DD0777
mã hàng: H0501
số lượng: 100
thành tiền (triệu): 225,15
thuế VAT (triệu): 2,2515
diến giải: tùy thích, thường chép lại trong biên lai thâu tiền. Trong ví dụ trên, là lời dặn khách hàng đem biên lai đến kho B để bốc hàng. (kho B sẽ đóng dấu hàng đã giao tận tay).
Những chi tiết có thể bỏ qua thì người ta để trống (hai dấu cộng liên tiếp)
Sau khi tách xong, chương trình sẽ kiểm soát sự hợp lệ của từng món và bắt gõ lại nếu sai sót.

Dĩ nhiên, nếu dùng Form thì các dấu cộng là Tab. Tuy nhiên, gặp dân giỏi thì nhập diểu dòng như trên nhanh và ít lỗi hơn Form.
Dân viết chương trình nhập liệu có kinh nghiệm còn có phần batch totals để kiểm soát sau khi đã nhập hết các biên lai. Nhưng ngày nay, người nhập liệu có kinh nghiệm sẽ tự biết bôi đen các cột và check batch totals ở dòng status.
Nếu như bài của chủ thớt thì sử dụng bắt sự kiện là được.
Khi đó chỉ cần nhập đúng và đủ: 01012023 -> 01/01/2023.
 
Mấy người bị thớt dùng bài toán dỏm ở #15 để gạt.
Thực sự tính số gõ phím nó như vầy:
(a) 01012023, 10102023 : luôn luôn là 8 ký tự
(b.1) 1~9/1~9/2003 : 8 ký tự -> 9 (ngày) * 9 (tháng) = 81 ngày trong năm
(b.2) 1~9/10.11.12/2023 : 9 ký tự -> 9 (ngày) * 3 (tháng) = 27 ngày trong năm
(b.3) 10~30/4.6.9/2023 : 9 ký tự -> 21 (ngày) * 3 (tháng) = 63 ngày trong năm
(b.4) 10~31/1.3.5.7.8/2023 : 9 ký tự -> 21 (ngày) * 6 (tháng) = 36 ngày trong năm
(b.5) 10~28(9)/2/2023 : 9 ký tự -> (19 (ngày) * 3 + 30 (ngày) * 1) / 4 (năm) = 21,75 ngày trong năm
(b.6) số ngày 9 ký tự -> 27 + 63 + 36 + 21,75 = 127,75
(b.7) 10~?/10.11.12/2023 : 10 ký tự -> 365,75 - 81 - 127,75 = 137
chú: tôi chưa xem kỹ lại, cho nên các con số trên chỉ tính đại khái, có thể gõ nhầm 1 vài chỗ nào đó, và công thức năm nhuần hơi đơn giản một chút.

Nếu không tính Enter, chỉ tính thuần số ký tự của dữ liệu thôi thì con số chính thức là:
(81*0 + 127,75 * 1 + 137 * 2) / 365,75 = 1097,25 ký tự.
Dẫu sợ gãy móng tay, dùng đầu cái stylus như thợ gõ của thớt (ngày xưa dùng đầu gôm bút chì) thì moi ký tự tốn 1 giây:
1097,25 * 100 = 109725 giây/năm
109725 / 3600 * 25 = 32 ngày/25 năm
(không hiểu thớt lấy thống kê ở đâu mà ra chuyện phần mềm có đời sống 25 năm)

Gặp người luôn gõ 01/01/2023 thì mới dài hơn 01012023 đến 2 ký tự
Gặp người gõ tắt thì chưa hẳn vậy.

Tôi là dân chuyên phát triển hệ thống phần mềm. Nói chuyện với bên B mà tính toán cẩu thả như thớt thì cũng không khó. Nhưng mình còn lương tâm nghề nghiệp, còn sĩ diện khi về sau có thằng nào nó đọc được cách tính, nó cười cho muối mặt.
 
1097,25 * 100 = 109725 giây/năm
109725 / 3600 * 25 = 32 ngày/25 năm
Tôi chưa tính để biết 109725 là đúng hay sai, nhưng mới chia 3600 thì mới thành số giờ, không phải số ngày. Theo kiểu tính bài 15 thì chia thêm 24 là 1.33 ngày/năm.

Nếu là tôi thì tính thế này:
Số ngày 8 ký tự ( không tiết kiệm gì): 81 ngày
Số ngày 9 ký tự (tiết kiệm 1 ký tự): =27 + 63 + 36 + 21.75 = 147.75 ngày
Số ngày 10 ký tự (tiết kiệm 2 ký tự): =365.25 - 81 - 147.75 = 136.5 ngày

Nếu mỗi ngày của năm gõ 1 lần, tiết kiệm: = (81*0 + 147,75 * 1 + 136.5 * 2) = 420.75 giây trong 1 năm
Nếu mỗi ngày của năm gõ 100 lần, tiết kiệm 42075 giây trong 1 năm = 1,051,875 giây trong 25 năm.
Quy ra ngày: = 1,051,875 / 3600 / 24 = 12.74 ngày (ngày đủ 24 giờ như bài 15)

Thực ra, tính đúng hay sai chẳng quan trọng gì cái con số tiết kiệm vài trăm giây cho 1 ngày. Một ngày uống cafe 15 phút không tính toán, hút 5 điếu thuốc 25 phút không tính, chat hẹn hò 15, 20 phút không tính, book trà sữa, rồi nhận, rồi uống nhâm nhi 15 phút không tính, tán gẫu nói xấu nhau, nói xấu sếp 30 phút không tính, mà cò kè tiết kiệm vài trăm giây (3, 4 phút).

Rồi suốt 25 năm (1 năm làm đủ 365 ngày), mà vẫn giữ mãi cái chân nhập liệu quèn à?
 
Lần chỉnh sửa cuối:
...

Thực ra, tính đúng hay sai chẳng quan trọng gì cái con số tiết kiệm vài trăm giây cho 1 ngày. Một ngày uống cafe 15 phút không tính toán, hút 5 điếu thuốc 50 phút không tính, chat hẹn hò 15, 20 phút không tính, book trà sữa, rồi nhận, rồi uống nhâm nhi 15 phút không tính, tán gẫu nói xấu nhau, nói xấu sếp 30 phút không tính, mà cò kè tiết kiệm vài trăm giây (3, 4 phút).

Rồi suốt 25 năm (1 năm làm đủ 365 ngày), mà vẫn giữ mãi cái chân nhập liệu quèn à?
Bạn hiểu lầm mục đích bài #29 ấy của tôi rồi.
Chuyện tính con số đúng hay sai không quan trọng.
Cái quan trọng là thớt dùng cách tính quá sơ đẳng, sơ đẳng đến mức gian lận để biện chứng cho mình. Và tôi chỉ phản biện chỗ sai ấy thôi. (tôi có chú thích là những kết quả con toán có thể do tôi gõ nhầm, nhưng cái thuật toán và các con số chuẩn (biểu kế) để tính thì không hề cố ý gian lận)

Cái quan trọng thứ hai là thớt chơi con số 25 năm để làm lớn con số phí của mình lên.
Người có căn bản hạng bét về báo cáo cũng biết là con số kiểu này chỉ dùng để hù người đọc ngây thơ thôi. Muốn tính phí thì con số chính là phần trăm.

2/8 (*) = 25%
Đem nó ra ngày thì phí phạm mỗi ngày là 100 (mẩu) * 8 (ký tự) * 0.25 (phí) * 1s = 200 giây/ngày
Đem ra giờ ngày cho mỗi năm thì là vân vân

Con toán ban đầu là 25% cho mỗi mẩu dữ liệu (piece of data) thì nó lớn, nhưng càng tính ra thì thấy nó càng nhỏ, thớt không có cái nhìn tổng thể nên ngỡ nó là lớn.
Con toán cuối cùng là 21 ngày cho 25 năm. Thớt quýnh quáng quá nên lấy đại con số 25 năm để tính tổng? Một phần tư thế kỷ bao nhiêu chyện xảy ra? 25 năm trước Excel là cái gì?

Không biết hiện giờ thớt có đang nghĩ đến việc vác cái máy chấm công đến kế bên bàn người gõ để tránh số bước chân từ cửa phòng đến bàn.

(*) đúng ra là 9 nhưng tôi không muốn rắc rối thêm.

(**) hay là mình sai từ đầu? thớt nói về những người thuộc diện làm ở nhà. Họ ăn lương theo số phím gõ? Trường hợp này thì tính từng cú gõ là đúng. Và tính 1 giây mỗi cú là thỏa thuận trong hợp đồng, có thể lương giờ của họ chỉ băng 1/4 dân chuyên nghiệp?
 
Web KT
Back
Top Bottom