Chào mừng đến với Diễn đàn Dân Kế Toán - Kế toán tổng hợp thực tế.
Kết quả 1 đến 8 của 8
  1. #1
    Ngày tham gia
    Aug 2015
    Bài viết
    0

    Macro định dạng ngày tháng năm

    Để chào mừng lễ 2/9/2012 tôi nêu lên 1 Macro đơn giản mà hiệu quả trong công việc.

    Trong nhập liệu, nhất là gom nhiều File vào 1 (do nhiều người nhập liệu) nhiều khi định dạng ngày tháng không đúng hoặc ngược (năm tháng ngày) dẫn đến tổng hợp số liệu có thể bị sai lệch.
    Để định dạng lại ngày tháng cho đúng các bạn sử dụng macro sau trong module để dùng chung cho tất cả các sheet (nhấn Alt+F11 > Insert > module, cửa sổ Code hiện ra) Copy và dán đoạn code sau vào module.



    Mã:
    Sub NgayThang()
    ' Macro2 Macro 2/9/2012 by be09
    'Định dạng ngày tháng năm
        Selection.NumberFormat = "mm/dd/yyyy"
    End Sub
    ''''''''''''''''''''''''''''''''''
    Sub ThangNgay()
    ' Macro1 Macro 2/9/2012 by be09
    'Định dạng tháng ngày năm
        Selection.NumberFormat = "dd/mm/yyyy"
    End Sub
    Nhấn Alt+F11 để trở về bảng tính, chọn cả cột cần định dạng.
    Vào Tools >Macro >Macro chọn NgayThang (sẽ định dạng ngày, tháng, năm).
    Chọn ThangNgay (sẽ định dạng tháng, ngày, năm).

    Chúc các bạn thực hiện tốt trong công việc.

  2. #2
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Macro định dạng ngày tháng năm

    Theo tôi , nếu ta kết hợp các hàm Text và Value trong một bộ dữ liệu cụ thể sẽ hiệu quả hơn trong việc điều chỉnh định dạng cho kiểu dữ liệu ngày tháng.

  3. #3
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Macro định dạng ngày tháng năm




    Trích dẫn Gửi bởi pqhung091965
    Theo tôi , nếu ta kết hợp các hàm Text và Value trong một bộ dữ liệu cụ thể sẽ hiệu quả hơn trong việc điều chỉnh định dạng cho kiểu dữ liệu ngày tháng.
    Dùng hàm thứ nhất là mất công Fill xuống, thứ 2 nếu sử dụng cho vài ngàn dòng thì nó nặng File và thao tác lại chậm chạp, nếu mình có cái gì đó nhanh hơn sẽ tốt hơn nhiều.

  4. #4
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Macro định dạng ngày tháng năm




    Trích dẫn Gửi bởi be09
    Dùng hàm thứ nhất là mất công Fill xuống, thứ 2 nếu sử dụng cho vài ngìn dòng thì nó nặng File và thao tác lại chậm chạp, nếu mình có cái gì đó nhanh hơn sẽ tốt hơn nhiều.
    Cái gì cũng có hiệu quả riêng của nó khi sử dụng miễn là ta biết phải sử dụng nó như thế nào và vào lúc nào . Đồng ý là việc sử dụng Macro cho phép tự động hóa cao độ, nhưng sẽ là bất cập khi sử dụng Macro nếu là bộ dữ liệu không đồng nhất. Mời bạn xem bộ dữ liệu trong ví dụ sau (chú ý trường ngày tháng):

  5. #5
    Ngày tham gia
    Nov 2015
    Bài viết
    0
    Ðề: Trước tiên cần biến về 1 kiểu dữ liệu ngày tháng qui chuẩn

    Do nhiều người nhập liệu 1 cách tùy tiện, nên dữ liệu nhiều chổ trên cột được excel hiểu là kiểu chuỗi (String) & còn lại là kiểu dữ liệu ngày tháng theo dạng "mm/dd/yyyy" (máy của mình đang như vậy)

    Điều này sẽ thấy rõ, một khi tại cột [G] ta thiết lập công thức (tại [G5] ) =MONTH(B5)

    Nếu ta dùng FillDown fát triển công thức trong toàn cột ta sẽ thấy lỗi ở rất nhiều ô;

    Sau đây là cách mình khác fục chuyện này như sau:

    Bước 1: Lập hàm tự tạo biến 1 chuỗi ngày tháng (như "12/3/2012") thành 03/12/2012 (Dạng ngày tháng kiểu của bọn Mẽo)

    Hàm tự tạo này có nội dung sau:



    Mã nguồn PHP:
    [COLOR=#000000]
    Option Explicit [/COLOR][COLOR=#007700]Function [/COLOR][COLOR=#0000BB]StringToDate[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]StrC [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]String[/COLOR][COLOR=#007700]) As [/COLOR][COLOR=#0000BB]Date [/COLOR][COLOR=#007700]Const [/COLOR][COLOR=#0000BB]PC [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]String [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]"/" [/COLOR][COLOR=#0000BB]Dim VT1 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Byte[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]VT2 [/COLOR][COLOR=#007700]As [/COLOR][COLOR=#0000BB]Byte VT1 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]InStr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]StrC[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]PC[/COLOR][COLOR=#007700]) If [/COLOR][COLOR=#0000BB]VT1 Then VT2 [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]InStr[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]VT1 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]StrC[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]PC[/COLOR][COLOR=#007700]) [/COLOR][COLOR=#0000BB]StringToDate [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]_ DateSerial[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]CInt[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Right[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]StrC[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]4[/COLOR][COLOR=#007700])), [/COLOR][COLOR=#0000BB]CInt[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Mid[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]StrC[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]VT1 [/COLOR][COLOR=#007700]+ [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]VT2 [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]VT1 [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700])), [/COLOR][COLOR=#0000BB]CInt[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]Left[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]StrC[/COLOR][COLOR=#007700], [/COLOR][COLOR=#0000BB]VT1 [/COLOR][COLOR=#007700]- [/COLOR][COLOR=#0000BB]1[/COLOR][COLOR=#007700]))) [/COLOR][COLOR=#0000BB]End [/COLOR][COLOR=#007700]If [/COLOR][COLOR=#0000BB]End [/COLOR][COLOR=#007700]Function [/COLOR
    Sau khi trong module ta có hàm này rồi, thì tại [H5] ta lập công thức sau:
    =IF(TYPE(MONTH(B5))=16,StringToDate(B5),B5)​


    Sau đó cũng dùng FillDown ta chép xuống cuối cột để toàn bộ cột này có ngày tháng theo chuẩn;


    (Cần thiết thì ta dịnh dạng cột này cho dễ nhìn theo kiểu Custom "dd/mm/yyyy" theo hệ Fáp)

    Hi vọng mình không fải làm cụ thể trong file!:danghi:

  6. #6
    Ngày tham gia
    Aug 2015
    Bài viết
    4
    Ðề: Macro định dạng ngày tháng năm




    Trích dẫn Gửi bởi pqhung091965
    Cái gì cũng có hiệu quả riêng của nó khi sử dụng miễn là ta biết phải sử dụng nó như thế nào và vào lúc nào . Đồng ý là việc sử dụng Macro cho phép tự động hóa cao độ, nhưng sẽ là bất cập khi sử dụng Macro nếu là bộ dữ liệu không đồng nhất. Mời bạn xem bộ dữ liệu trong ví dụ sau (chú ý trường ngày tháng):
    Cái này trong bài tôi có nói rồi do nhiều người nhập liệu, nhiều khi định dạng ngày tháng không đúng hoặc ngược hoặc có thể nhập ở kiểu chuỗi (String). cách khắc phục những sai sót này như sau:
    Ở kiểu chuỗi (String): sẽ có dấu tam giác màu xanh bên trái phía trên Cell, bạn cover nó bằng cách click vào Cell đó giữ phím xong kéo thanh cuộn xuống và chọn cell cuối cùng, rê chuột vào khung hình vuông có dấu chấm than màu đen nó sẽ hiện ra tam giác màu đen, click vào nó và chọn Conver to number thì tất cả các Cell kiểu chuỗi (String) sẽ chuyển sang kiểu số (Number).
    Đối với trường hợp nhập ngược tháng, ngày bạn dùng phương pháp sort tất cả các Cell nhập ngược nó sẽ chuyển lên trên cùng lúc này bạn chỉ cần chọn vùng bị nhập ngược và chọn Macro ThangNgay nó sẽ trả kết quả về cho bạn.
    Cách khác không cần sort: Bạn copy vùng nhập ngày tháng vào Edit > Paste Special > value để trả kiểu chuỗi (String) về kiểu Number và chọn Macro ThangNgay nó sẽ trả kết quả về ngày tháng năm cho bạn.
    Nói chung có nhiều cách để thực hiện việc sửa lỗi khi có nhiều người nhập chưa đúng định dạng, việc còn lại là ta sửa cách nào cho nhanh chóng.
    Ở đây tôi chỉ đưa ra giải pháp, còn vận dụng nó để áp dụng vào công việc như thế nào là tùy người sử dụng.

  7. #7
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Macro định dạng ngày tháng năm

    Bạn TQChanh chắc còn nhớ lần tôi nói về cách nhập dữ liệu của nhiều người chứ nhỉ và với cách sử dụng Excel như thế thì đối với các bạn ấy việc sử dụng các hàm có sẵn đã là vấn đề rồi huống gì nói đến việc sử dụng VBA .
    Chúng ta dù gì cũng có một kiến thức nhất định về Excel và đều biết sử dụng VBA để phục vụ công việc của mình , tuy nhiên VBA vẫn là cái gì đó tương đối khó tiếp cận với hầu hết kế toán chúng ta . Chính do đó , theo tôi, để mang tính đại chúng ta nên tính đến phương án tiếp cận sao cho dễ sử dụng, ít xảy ra sai sót, và hỗ trợ được nhiều người nhất .

  8. #8
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Ðề: Macro định dạng ngày tháng năm




    Trích dẫn Gửi bởi pqhung091965
    Bạn TQChanh chắc còn nhớ lần tôi nói về cách nhập dữ liệu của nhiều người chứ nhỉ và với cách sử dụng Excel như thế thì đối với các bạn ấy việc sử dụng các hàm có sẵn đã là vấn đề rồi huống gì nói đến việc sử dụng VBA .
    Chúng ta dù gì cũng có một kiến thức nhất định về Excel và đều biết sử dụng VBA để phục vụ công việc của mình , tuy nhiên VBA vẫn là cái gì đó tương đối khó tiếp cận với hầu hết kế toán chúng ta . Chính do đó , theo tôi, để mang tính đại chúng ta nên tính đến phương án tiếp cận sao cho dễ sử dụng, ít xảy ra sai sót, và hỗ trợ được nhiều người nhất .
    Ở trên tôi muốn đưa ra giải pháp dùng VBA, nếu bạn muốn đại chúng thì tôi đưa ra phương pháp dùng hàm định dạng đúng theo kiểu ngày tháng năm để các bạn nào chưa biết về VBA thì dùng nó, công thức tại cell D5 (theo File ví dụ của bạn) như sau:
    =RIGHT(TEXT(C5,"dd/mm/yyyy"),10)

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •