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

mabuap1

Thành viên mới
Tham gia
30/3/14
Bài viết
37
Được thích
8
Các Thầy giúp em cách nhập dữ liệu thời gian với ạ.
Nhập dữ liệu ở bất kỳ ô của cột "C" bằng cách nhập theo định dạng ddmmyyyy, ví dụ: 20102023. Khi chuyển ô khác hoặc bấm Enter thì dữ liệu tương ứng ở ô của cột "C" đó sẽ chuyển thành định dạng dd/mm/yyyy => 20/10/2023.
 

File đính kèm

  • Hoi cach nhap du lieu mc.xlsm
    15.3 KB · Đọc: 14
Hông, đã nói nhập ở C, và bấm enter mờ.
Anh giúp em cái ma-cơ-rô bắt sự kiện và chuyển dữ liệu ạ. Chứ bắt gõ thêm hai dấu trừ "-" hoặc chéo "/" em gãy tay mất.
Em cũng lười nhưng riêng ngày, giờ thì phải chèn thêm ký tự để rõ và dễ left, right. :cool: :cool: :cool:
 
các bạn ơi giúp mình với file excel của mình có hình khoá bảo vệ và hôm nay cài lại win xong ko mở được
 
Mỗi lần viết 1 sự kiện sẽ khá lãng phí tài nguyên
Bài đã được tự động gộp:

Với cả không viết được sự kiện kiểu như vậy, thế nên bế tắc
 
Nếu không dùng công thức thì dùng VBA bên dưới dán vào Editor VBA của Sheet đang làm việc.

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ngayD As Date
    Dim ngayNhap As Double

    ' Kiểm tra xem thay đổi có xảy ra tại ô D2 hay không
    If Target.Address = Range("D2").Address Then
        ' Lấy giá trị từ ô D2
        ngayNhap = Range("D2").Value

        ' Chuyển đổi ngày
        ngayD = DateSerial(Int(ngayNhap / 1) - Int(ngayNhap / 10000) * 10000, _
                           Int(ngayNhap / 10000) - Int(ngayNhap / 1000000) * 100, _
                           Int(ngayNhap / 1000000) - Int(ngayNhap / 100000000) * 100)

        ' Đặt giá trị vào ô C2
        Application.EnableEvents = False ' Tạm ngừng sự kiện để tránh lặp vô tận
        Range("C2").Value = ngayD
        Application.EnableEvents = True ' Kích hoạt lại sự kiện
    End If
End Sub
 

File đính kèm

  • Hoi cach nhap du lieu VBA.xlsm
    16.3 KB · Đọc: 8
Nếu không dùng công thức thì dùng VBA bên dưới dán vào Editor VBA của Sheet đang làm việc.

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ngayD As Date
    Dim ngayNhap As Double

    ' Kiểm tra xem thay đổi có xảy ra tại ô D2 hay không
    If Target.Address = Range("D2").Address Then
        ' Lấy giá trị từ ô D2
        ngayNhap = Range("D2").Value

        ' Chuyển đổi ngày
        ngayD = DateSerial(Int(ngayNhap / 1) - Int(ngayNhap / 10000) * 10000, _
                           Int(ngayNhap / 10000) - Int(ngayNhap / 1000000) * 100, _
                           Int(ngayNhap / 1000000) - Int(ngayNhap / 100000000) * 100)

        ' Đặt giá trị vào ô C2
        Application.EnableEvents = False ' Tạm ngừng sự kiện để tránh lặp vô tận
        Range("C2").Value = ngayD
        Application.EnableEvents = True ' Kích hoạt lại sự kiện
    End If
End Sub
Nếu thích công thức dài như thế thì nghiên cứu thêm các trường hợp thế này cho chuẩn nè.
1700109937154.png
 

File đính kèm

  • Tinh Ngay bang Date.xlsx
    11.1 KB · Đọc: 5
Nếu không dùng công thức thì dùng VBA bên dưới dán vào Editor VBA của Sheet đang làm việc.

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim ngayD As Date
    Dim ngayNhap As Double

    ' Kiểm tra xem thay đổi có xảy ra tại ô D2 hay không
    If Target.Address = Range("D2").Address Then
        ' Lấy giá trị từ ô D2
        ngayNhap = Range("D2").Value

        ' Chuyển đổi ngày
        ngayD = DateSerial(Int(ngayNhap / 1) - Int(ngayNhap / 10000) * 10000, _
                           Int(ngayNhap / 10000) - Int(ngayNhap / 1000000) * 100, _
                           Int(ngayNhap / 1000000) - Int(ngayNhap / 100000000) * 100)

        ' Đặt giá trị vào ô C2
        Application.EnableEvents = False ' Tạm ngừng sự kiện để tránh lặp vô tận
        Range("C2").Value = ngayD
        Application.EnableEvents = True ' Kích hoạt lại sự kiện
    End If
End Sub
mình thấy là chủ topic muốn hỏi cách nhập ở cột C thì cột C sẽ tự chuyển đổi thành ngày tháng và thêm /. chứ tạo thêm cột phụ thì cho dù dùng hàm hay VBA thì cũng quá đơn giản rồi
 
Vấn đề ở đây là Chủ bài đăng tiết kiệm được bao nhiêu cú mổ cò trong 1 năm?
Mỗi 1 ngày cần nhập tiết kiệm được 2 cú gõ bàn phím?
Trong khi đó đến 9 tháng trong năm sẽ bớt đi 1 cú gõ khi nhập tháng (cần nhập)
& 1/3 số ngày trong tháng cần nhập sẽ bớt đi 1 lần gõ;
& trên hết là người nhập phải hình thành 2 kiểu gõ ngày tháng:
1 là nhập (dữ liệu) vô trang tính này
2 là nhập ngày tháng năm cho bất kỳ ở đâu đó cần nhập bằng bàn phím vi tính?
Hay Chủ bài đănjg cần có 1 sáng kiến để được lên lương trước hạn trong năm chăng?
 
Nếu không dùng công thức thì dùng VBA bên dưới dán vào Editor VBA của Sheet đang làm việc.

Mã:
...
    Dim ngayNhap As Double
...
        ' Chuyển đổi ngày
        ngayD = DateSerial(Int(ngayNhap / 1) - Int(ngayNhap / 10000) * 10000, _
                           Int(ngayNhap / 10000) - Int(ngayNhap / 1000000) * 100, _
                           Int(ngayNhap / 1000000) - Int(ngayNhap / 100000000) * 100)
...
End Sub
Code này viết tính toán luộm thuộm lắm.
ngayNhap không có lý do gì để phải là Double. Làm toán với Double tổn năng lượng hơn Long rất nhiều.
Và bởi bạn chỉ chú tâm làm toán bới Double cho nên không biết sử dụng các con toán số nguyên.

Nếu ngayNhap chứa con số tượng trưng cho ddmmyyyy thì:
năm = ngayNhap Mod 10000
tháng = (ngayNhap \ 10000) Mod 100
ngày =(ngayNhap \ 1000000

Nếu ngayNhap chứa chuỗi ở dạng ddmmyyyy thì:
ngayD = CDate(Application.Replace(Application.Replace(StrReverse(ngayNhap), 7, 0, "-"), 5, 0, "-"))
Đảo ngịch chuỗi, chèn "-" vào vị trí 7 và 5, CDate sẽ biết cách chuyển nó thành dạng date.
 
Đính chính bài #13.
Biểu thức tính chuỗi không dùng được vì nó sai. Điển hình năm 2023 sẽ thành 3202

Nếu dùng chuỗi, bắt buộc phải dùng cách tách nối nghiêm chỉnh:
ngayNhap = Right("00" & ngayNhap, 8)
ngayD = CDate(Right(ngayNhap, 4) & "-" & Mid(ngayNhap, 3, 2) & "-" & Left(ngayNhap, 2))
 
Vấn đề ở đây là Chủ bài đăng tiết kiệm được bao nhiêu cú mổ cò trong 1 năm?
Mỗi 1 ngày cần nhập tiết kiệm được 2 cú gõ bàn phím?
Trong khi đó đến 9 tháng trong năm sẽ bớt đi 1 cú gõ khi nhập tháng (cần nhập)
& 1/3 số ngày trong tháng cần nhập sẽ bớt đi 1 lần gõ;
& trên hết là người nhập phải hình thành 2 kiểu gõ ngày tháng:
1 là nhập (dữ liệu) vô trang tính này
2 là nhập ngày tháng năm cho bất kỳ ở đâu đó cần nhập bằng bàn phím vi tính?
Hay Chủ bài đănjg cần có 1 sáng kiến để được lên lương trước hạn trong năm chăng?
1 cú mổ cò dấu "/" = 1s
Nhập ngày/tháng/năm 2 cú mổ cò = 2s
Một ngày nhập 100 lượt = 200s
Một năm 365 x 200s = 7.200s
25 Năm đi làm = 7.200s x 25 =1.800.000s
Quy đổi ra phút, giờ, ngày: ((1.800.000/60)/60)/24 = 20,8 ngày
 
Đối với nhân viên nhập liệu số lượng chứng từ lớn (chưa kể yêu cầu phải nhập một số lượng lớn chứng từ trong một khoảng thời gian qui định) thì ứng dụng càng giảm được thao tác bàn phím, chuột nhiều càng tốt. Do đó tôi thấy nhu cầu này là có thực và thực tế đó bác SA_DQ.
 
1 cú mổ cò dấu "/" = 1s
Nhập ngày/tháng/năm 2 cú mổ cò = 2s
Một ngày nhập 100 lượt = 200s
Một năm 365 x 200s = 7.200s
25 Năm đi làm = 7.200s x 25 =1.800.000s
Quy đổi ra phút, giờ, ngày: ((1.800.000/60)/60)/24 = 20,8 ngày
Thống kê kiểu này gạt tay mơ chứ chằng qua được mắt nhà nghề đâu.
Một cái / tốn 1 giây thì đuổi việc đi.
Gõ hai cái / thì tốn hơn 2/9 thì giờ -> +22% (tại sao 9 mà không phải là 8 thì tự hiểu lấy, không biết thì không xứng đáng nói chuyện gõ dữ liệu)
Với mảng 9 nét gõ thì một người tay mơ thì gõ 30 mảng/phút; người trung bình (như tôi) 60; người kinh nghiệm 100 hoặc hơn.
Trung bình nhập 11 (dd/mm/yyyy) nét gõ chỉ tốn hơn 9 nét (ddmmyyyy) 0,22 giây.

Chú thích: nói chuyện máy tính bàn thôi. Chứ máy láp tốp thì ông nội ai biết được mấy anh chàng ỏn ẻn với bàn phím ra sao. Công ty nào cấp láp tốp cho dân nhập liệu thì cũng là công ty ỏn ẻn.

Đối với nhân viên nhập liệu số lượng chứng từ lớn (chưa kể yêu cầu phải nhập một số lượng lớn chứng từ trong một khoảng thời gian qui định) thì ứng dụng càng giảm được thao tác bàn phím, chuột nhiều càng tốt. Do đó tôi thấy nhu cầu này là có thực và thực tế đó bác SA_DQ.
Cái bạn nói thuộc về Form.
Ở đây thớt muốn gõ thẳng trên bảng tính cho nên chỉ có cách dùng VBA bắt sự kiện. Và giải pháp chỉ giúp thâu con số gõ phím từ 11 xuống 9.

Đối với dữ liệu khủng thì nhập chứng từ phần lớn thời gian thuộc về soạn chứng từ.
Với đám chứng từ khủng thì quy trình soạn, đọc, gõ, đánh dấu đã gõ xong, vv... quan trọng hơn ba cái lẻ lẻ này.
 
Lần chỉnh sửa cuối:
mình thấy tranh cãi việc bớt được bao nhiêu s để làm gì nhĩ, Những tập hàng đầu thế giới đều áp dụng sản xuất tinh gọn (LEAN) vào sản xuất. trong đó có rất nhiều ý tưởng để giảm thời gian tăng hiệu suất, ngay cả việc rê chuột quá nhiều củng nằm trong danh mục cần phải hạn chế để tiết kiệm thời gian. thì cái việc chủ thớt muốn giảm số lần nhập củng là ý tưởng rất tốt, mình ủng hộ.
 
mình thấy tranh cãi việc bớt được bao nhiêu s để làm gì nhĩ, Những tập hàng đầu thế giới đều áp dụng sản xuất tinh gọn (LEAN) vào sản xuất. trong đó có rất nhiều ý tưởng để giảm thời gian tăng hiệu suất, ngay cả việc rê chuột quá nhiều củng nằm trong danh mục cần phải hạn chế để tiết kiệm thời gian. thì cái việc chủ thớt muốn giảm số lần nhập củng là ý tưởng rất tốt, mình ủng hộ.
rê chuột khác với gõ phím.
Ý tưởng giảm số "-" hoặc "/" khi gõ nhập trực tiếp vào bảng tính là không thực tế.

Tuy nhiên, với cái công ty là gõ phím mất 1 giây như công ty thớt thì tôi không tranh cãi nữa. Vì công ty này mướn toàn người ngồi dũa móng tay.

Những tập hàng đầu thế giới
Tôi tạm tin rằng bạn muốn nói "Những tập đoàn hàng đầu thế giới"
Trước khi nói đến chuyện LEAN, bạn có biết đòi hỏi của họ cho người gõ phím là bao nhiêu từ một phút không?
 
rê chuột khác với gõ phím.
Ý tưởng giảm số "-" hoặc "/" khi gõ nhập trực tiếp vào bảng tính là không thực tế.

Tuy nhiên, với cái công ty là gõ phím mất 1 giây như công ty thớt thì tôi không tranh cãi nữa. Vì công ty này mướn toàn người ngồi dũa móng tay.


Tôi tạm tin rằng bạn muốn nói "Những tập đoàn hàng đầu thế giới"
Trước khi nói đến chuyện LEAN, bạn có biết đòi hỏi của họ cho người gõ phím là bao nhiêu từ một phút không?
Trước tiên để trả lời bạn thì cho hỏi bạn đã học về LEAN chưa. Nếu chưa thì bạn nên đi học để hiểu về nó trước khi hỏi. Và chắc chắn khi đi học bạn sẽ biết những tập đoàn nào đang áp dụng LEAN, lí do vì sao mà tôi dùng "HÀNG ĐẦU THẾ GIỚI". Mục đích của đào tạo LEAN là tìm ra lãng phí để cắt giảm chi phí tăng lợi nhuận, lãng phí đến từ rất nhiều thứ (vật liệu, tài nguyên, thời gian, con người....). Ngay cả 1 động tác cúi người hoặc xoay người để lấy 1 đồ vật ở vị trí không thuận lợi củng là 1 loại lãng phí. Lãng phí đến từ rất nhiều thứ nhỏ nhặt, ở đây đang nói tới chuyện gõ phím. Chủ thớt thấy phải nhập đi nhập lại 1 phím nhiều lần thì tìm cách loại bỏ là ý tưởng tốt. đem lên đây thứ nhất giúp cho công việc, thứ 2 học thêm về excel. 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
 
Web KT
Back
Top Bottom