Tham chiếu giữa hợp đồng và bản chấm công

Thảo luận trong 'Tìm kiếm, dò tìm và tham chiếu' bắt đầu bởi suzuki tadayoshi, 16 Tháng ba 2017.

  1. Chào các anh chị trong diễn đàn!
    Trong quá trình làm CHẤM CÔNG công trường (giống như file đính kèm) em gặp vấn đề như thế này ạ:
    -NGÀY CHẤM CÔNG KHÔNG KHỚP với ngày thực hiện trong hợp đồng, ví dụ anh "số 3" hợp đồng làm từ ngày 10/1 nhưng chấm công từ ngày 9/1 (vô lý). Vấn đề này nếu chỉnh thủ công lên đến cả trăm người, chấm công 12 tháng trong năm sẽ rất lâu và dễ sai sót. EM nghĩ có 1 cách Khắc phục bằng cách trên bảng chấm công sự hiển thị anh "số 3" làm từ ngày nào đến ngày nào(tô màu, đánh dấu..) cho ta biết, sau đó ta đánh thủ công trong phạm vi đó sẽ không sai được
    -Nâng cao hơn Em có ý tưởng này ví dụ anh A làm tháng 1 được 20 công, có code nào để bảng chấm công tháng 1 ĐÁNH DẤU X NGẪU NHIÊN 20 dấu không ạ.
    Mong các anh chị diễn đàn giúp đỡ, chỉ dẫn cho em những ý tưởng khả thi về vấn đề này nếu không tự động hóa hoàn toàn thì cũng để cho người làm đỡ mất sức.
    Trân trọng cám ơn.
     
    Last edited: 17 Tháng ba 2017
  2. befaint

    befaint |||||||||||||

    1/ Quản lý kho hàng hóa, nhân sự, công cán mà không có MÃ của đối tượng đó (duy nhất) là phá sản rồi, khỏi phải nghĩ ý tưởng nào nữa cho mệt.

    2/ Làm sao mà xảy ra chỗ màu đỏ được? Vì nhầm họ tên? Đã hết năm đâu mà 12 tháng rồi?

    Áp hình thức phạt vào lỗi chấm công sai, đảm bảo hết vô lý.

    Số lượng nhân sự tới trăm người thì ăn thua gì ở đây?

    3/ Tham khảo file và bài viết sau:
    http://www.giaiphapexcel.com/forum/showthread.php?121318-Hỏi-về-file-tính-tương
     
  3. cám ơn bạn befaint đã xem giúp mình... Có lẽ vấn đề của mình hơi khác một chút. Ở đây mình làm lại chứng từ nhân công công trường để ĐỐI PHÓ QUYẾT TOÁN THUẾ năm 2016 ( có đủ 12 tháng, nhiều công trường khác nhau, cũng không áp dụng hình thức phạt được (có mình làm thôi còn ai nữa đâu), nên mới phải làm lại chia nhỏ hợp đồng lao động dưới 3 tháng dấn đến chấm công loạn cả lên, chứ ở công trường thì chấm công trả tiền lương đầy đủ rồi...
    Nghĩa là ở đây mình đang làm BÀI TOÁN NGƯỢC, thay vì bình thường là làm hợp đồng, chấm công rồi trả lương thì ở đây mình áp cho nó 1 số công nhất định trong khoảng thời gian dưới 3 tháng, sau đó mới làm hợp đồng trong khoảng thời gian đó.
    Vấn đề ở đây là sao cho các khoảng thời gian khớp nhau, đánh dấu bảng chấm công nhanh nhất thôi bạn à
    Mình không ở công trường lại phải làm chứng từ ở công trường nên mới khó khăn vậy. Mong bạn hiểu và giúp đỡ mình
     
    Last edited: 17 Tháng ba 2017
  4. Hoang2013

    Hoang2013 Active Member

    Đây chắc là bảng chấm công ma để đối phó thôi!

    Đúng là nên tạo mã & làm việc với mã NV; không nên làm việc với [Họ Tên] là chính xác;
    Mình đề xuất bộ mã như sau:
    Column1
    [TR]
    [TD]NVK00[/TD]
    [TD]Nguyễn Văn Khánh[/TD]
    [/TR]
    [TR]
    [TD]NVT00[/TD]
    [TD]Nguyễn Văn Thái[/TD]
    [/TR]
    [TR]
    [TD]NVT01[/TD]
    [TD]Nguyễn Văn Thái[/TD]
    [/TR]
    [TR]
    [TD]NVT02[/TD]
    [TD]Nguyễn Văn Thuận[/TD]
    [/TR]
    [TR]
    [TD]NVT03[/TD]
    [TD]Nguyễn Văn Tín[/TD]
    [/TR]
    [TR]
    [TD]NVT04[/TD]
    [TD]Nguyễn Tú Vũ Tuấn[/TD]
    [/TR]
    [TR]
    [TD]NXN00[/TD]
    [TD]Nguyễn Xuân Nhật[/TD]
    [/TR]
    [TR]
    [TD]PXT00[/TD]
    [TD]Phan Xuân Thúy[/TD]
    [/TR]
    [TR]
    [TD]TMH00[/TD]
    [TD]Thiều Vũ Minh Hùng[/TD]
    [/TR]
    [TR]
    [TD]TTL00[/TD]
    [TD]Thiều Thị Thanh Loan[/TD]
    [/TR]
    [TR]
    [TD]TVN00[/TD]
    [TD]Trương Văn Nam[/TD]
    [/TR]
    [TR]
    [TD]TVT00[/TD]
    [TD]Trương Văn Tài[/TD]
    [/TR]
    [TR]
    [TD]TVT01[/TD]
    [TD]Trương Văn Thiều[/TD]
    [/TR]
    [TR]
    [TD]TVT02[/TD]
    [TD]Trương Văn Tưởng[/TD]
    [/TR]
    [TR]
    [TD]TJV00[/TD]
    [TD]Trần Vịnh[/TD]
    [/TR]


    (1) Sẽ thực hiện được bỡi VBA, 1 khi có 12 BCC các tháng

    (2) Cũng sẽ làm được, tuy khó sẽ gặp phải trong 2 tháng đầu & cuối vô làm việc của nhân viên đó.

    Ngoài lề: Tên trang tính quá dài, chỉ cần T01, T02, . . . ,T12 là được rồi!
     
    Last edited: 17 Tháng ba 2017
  5. Cám ơn bạn hoang2013 đã chỉ dẫn, mình sẽ hiệu chỉnh lại trang tính, còn phần VBA mình chưa biết, mong bạn chỉ dẫn thêm:
    - Cụ thể là "anh số 1" theo bảng chấm công tháng 1 bắt đầu làm từ ngày mùng 9 (ngày đầu tiên có đánh dấu x); ô ngày bắt đầu hợp đồng trong bảng DATA lập hàm thế nào để là 9/1/2016?
    - "anh số 1" ngày cuối cùng làm việc trong bảng chấm công của tháng 3 là ngày 16 => ô kết thúc hợp đồng trong bảng DATA lập hàm thế nào ạ?
     
    Last edited: 17 Tháng ba 2017
  6. Hoang2013

    Hoang2013 Active Member

    Bạn xem & kiểm theo số liệu trong file

    Rất vui được tiếp tục trao đổi thêm cùng bạn. --=0
     
    Last edited: 22 Tháng ba 2017
  7. Cám ơn bạn Hoang2013, mình đã sử dụng thử (đã mở enable all macros), báo cáo bạn như sau:
    - Sau khi thay đổi ngày tháng bắt đầu và kết thúc hợp đồng, chạy macro thì đánh dấu trong bảng chấm công tùm lum lắm (cái có cái không)
    Bạn xem lại giúp mình nhé.
     
    Last edited: 17 Tháng ba 2017
  8. Hoang2013

    Hoang2013 Active Member

    À!, chưa có đoạn mã lệnh để xóa những ô đã tô màu do lần chạy trước

    PHP:
    Option Explicit
    Const MyErr As Double vbObjectError 512
    Sub NgayCQ
    ()
     
    Dim Sh As WorksheetCls As Range
     Dim SoNgay 
    As IntegerfDat As DateAs IntegertDat As DatelDat As Date
     Dim ShName 
    As String
     On Error 
    GoTo LoiCT
     
    For Each Sh In ThisWorkbook.Worksheets     '|=>'
        
    If Left(Sh.Name1) = "T" And IsNumeric(Right(Sh.Name1)) Then
            J 
    Sh.[c8].CurrentRegion.Rows.Count
            Sh
    .[c8].Resize(J31).Interior.ColorIndex 0
        End 
    If
    11 Next Sh                    '<=|'
     
    Sheets("Data").Select
     
    For Each Cls In Range([B4], [B4].End(xlDown))
        
    fDat Cls.Offset(, 2).Value
        lDat 
    Cls.Offset(, 3).Value
        
    If Year(lDat) > Year(fDatThen lDat DateSerial(Year(fDat), 1231)
        
    SoNgay lDat fDat
        
    If SoNgay 366 Then SoNgay 366
        
    For 0 To SoNgay
            tDat 
    fDat
    2        ShName 
    "T" Right("0" CStr(Month(tDat)), 2)
    3        Set Sh ThisWorkbook.Worksheets(ShName)
            If 
    Year(tDat) <> Sh.[c4].Value Then
                
    Exit For
            Else
                
    Sh.Cells(Cls.Row 4Day(tDat)).Interior.ColorIndex 35
            End 
    If
    GPE:    Next J
     Next Cls
    Err_
    :           Exit Sub
    LoiCT
    :
        If 
    Err 9 Then
            
    GoTo GPE
        
    ElseIf Err MyErr Then
            MsgBox Err
    :                 GoTo Err_
        
    Else
            
    MsgBox Err, , Erl:          Resume Next
        End 
    If
    End Sub 
     
  9. Hay quá bạn ơi! Thế nhưng mình vẫn còn chút vướng mắc:
    - tháng 1, tháng 3...(hình như là những tháng lẻ) không có làm mà vẫn tô màu hết cột ngày 31.
    -Vì là hợp đồng ngắn hạn nên trong 1 năm mỗi người đều phải ký 2 hợp đồng, mỗi hợp đồng cách nhau khoảng 1 tháng, mình đã chèn thêm 2 cột ngày tháng bạn cũng giải quyết như vậy giùm mình với.
    - Vì sheet DATA có những cột thông tin làm hợp đồng lao động, trước mình xóa đi cho dễ nhìn nay chèn lại nhiều cột đằng trước cột ngày tháng thì macro không còn chạy được nữa, bạn có thể giúp mình vụ này không?
    -sheet GPE, link, những ô bạn tô màu là có ý đồ gì không bạn.
    Thân ái!
     
    Last edited: 28 Tháng ba 2017
  10. Hoang2013

    Hoang2013 Active Member

    [thongbao](-) Vì là hợp đồng ngắn hạn nên trong 1 năm mỗi người đều phải ký 2 hợp đồng, mỗi hợp đồng cách nhau khoảng 1 tháng, mình đã chèn thêm 2 cột ngày tháng bạn cũng giải quyết như vậy giùm mình với.[/thongbao]
     
    Last edited: 18 Tháng ba 2017
  11. Hoang2013

    Hoang2013 Active Member

    [Bài đăng lại] . . . . (Chả hiểu sao lại không thấy ở đây?)

    (-) Bạn kiểm tra theo các trang tính của file.

    (*) Chuyện này không khó, nêu biết trước được bạn sẽ dời 4 cột này về đâu ở đằng sau?

    (?) Còn iêu cầu thứ 2 thì làm theo tháng hay làm theo cả năm? & nếu vậy cần có danh sách công ấn định trước của mỗi người theo từng tháng; Danh sách đó sẽ ở đâu trong file & sẽ như thế nào?
     
    Last edited: 22 Tháng ba 2017
  12. Cám ơn bạn hoang2013 rất nhiều, nhờ bạn nhiệt tình giúp đỡ, ý tưởng bảng kết hợp hợp đồng, chấm công, lương công trường dần thành hình (như file mình đính kèm dưới đây).
    Tuy nhiên do sự yếu kém về VBA nên có 1 số vấn đề mình chưa tự xử lý được, mong bạn giúp đỡ:
    - Mình chèn thêm cột ở sheet DATA rồi đấy, lại phải nhờ bạn chỉnh lại macro ( mình còn muốn chèn thêm hàng nữa cơ nhưng sợ loạn cái bảng).
    - Mình chèn thêm sheet bảng lương và bảng thanh toán lương (mình mới ví dụ cho tháng 1) có vẻ không ảnh hưởng đến macro. Nhưng mà workbook này có 12 sheet công, 12 sheet lương, 12 sheet thanh toán lương,1 sheet data tổng cộng 37 sheet có phải quá ư công kềnh? bạn có thể góp ý cho mình ý tưởng nào cho gọn bớt không.
    - Nếu được bạn có thể chỉ cho mình cách tự chỉnh macro nhửng thứ nhỏ nhỏ như thêm hàng thêm cột vào sheet DATA, sheet chấm công, không mấy cái nhỏ nhỏ cứ làm phiền bạn thật ngại quá.
    Thân ái.
     
    Last edited: 19 Tháng ba 2017
  13. Hoang2013

    Hoang2013 Active Member

    Chỉnh macro theo cột rồi đây:

    Bạn chép hết nội dung này đè lên cái cũ & chạy thử
    PHP:
    Option Explicit
    Const Col As Byte 8                                   '*'
    Const MyErr As Double vbObjectError 512
    Sub NgayCQ
    ()
     
    Dim Sh As WorksheetCls As Range
     Dim SoNgay 
    As IntegerAs IntegerMyColor As Byte   '*'
     
    Dim fDat As DatetDat As DatelDat As Date           ' '
     
    Dim ShName As String
     On Error 
    GoTo LoiCT
     
    For Each Sh In ThisWorkbook.Worksheets
        
    If Left(Sh.Name1) = "T" And IsNumeric(Right(Sh.Name1)) Then
            J 
    Sh.[c8].CurrentRegion.Rows.Count
            Sh
    .[c8].Resize(J32).Interior.ColorIndex 0
        End 
    If
    2 Next Sh
     Sheets
    ("Data").Select
     
     
    For Each Cls In Range([B4], [B4].End(xlDown))
        
    fDat Cls.Offset(, Col 2).Value                  '*'
        
    lDat Cls.Offset(, Col 3).Value                  '*'
        
    If Year(lDat) > Year(fDatThen lDat DateSerial(Year(fDat), 1231)
        If 
    lDat Date Then lDat Date
        SoNgay 
    lDat fDat
        
    If SoNgay 365 Then SoNgay 365
        
    For 0 To SoNgay
            tDat 
    fDat
            ShName 
    "T" Right("0" CStr(Month(tDat)), 2)
            
    Set Sh ThisWorkbook.Worksheets(ShName)
            If 
    Year(tDat) <> Sh.[c4].Value Then
                
    Exit For
            Else
                
    MyColor 34 Month(tDatMod 6
                Sh
    .Cells(Cls.Row 4Day(tDat)).Interior.ColorIndex MyColor
    3        End 
    If
    GPE0:    Next J
        fDat 
    Cls.Offset(, Col 4).Value                  '*'
        
    lDat Cls.Offset(, Col 5).Value                  '*'
        
    If Year(lDat) > Year(fDatThen lDat DateSerial(Year(fDat), 1231)
        If 
    lDat Date Then lDat Date
        SoNgay 
    lDat fDat
        
    If SoNgay 365 Then SoNgay 365
            
    For 0 To SoNgay
                tDat 
    fDat
                ShName 
    "T" Right("0" CStr(Month(tDat)), 2)
    7            Set Sh ThisWorkbook.Worksheets(ShName)
    8            If Year(tDat) <> Sh.[c4].Value Then
                    
    Exit For
                Else
                    
    MyColor 34 Month(tDatMod 6
                    Sh
    .Cells(Cls.Row 4Day(tDat)).Interior.ColorIndex MyColor
                End 
    If
    GPE1:    Next J
     Next Cls
    Err_
    :           Exit Sub
    LoiCT
    :
        If 
    Err 9 Then
            
    If Erl <= 3 Then GoTo GPE0 Else GoTo GPE1
        
    ElseIf Err MyErr Then
            MsgBox Err
    :                 GoTo Err_
        
    Else
            
    MsgBox Err, , Erl:          Resume Next
        End 
    If
    End Sub
    Những mong là khỏi gởi file lên.

    Còn chuyện thêm dòng là thêm làm sao?
    Mình biết rằng có thể có những người chỉ hợp đồng lần I trong năm (không có lần sau) hay ngược lại là có người chỉ tuyển hợp đồng lần sau trong năm

    Như vậy sẽ phải có danh sách tất cả công nhân viên của 2 lần hợp đồng trong mọi trang tính.

    Thêm 1 chú í nữa quan trọng là: Tên các trang tính phát sinh sau không thể là TT01,. . . TT11, TT12
    Mà phải là 01TT, . . . 11TT, 12TT
     
  14. Chép đè đoạn CODE mới chạy ok lắm bạn. Từ nay bạn khỏi gửi file lên cho tốn dung lượng, có code mình chép lên là chạy ha
    - Chuyện thêm dòng đó chỉ là khi mình điều chỉnh form mẫu, chứ những vấn đề chính bạn đã giải quyết giùm mình rồi. Bởi vì khi mình thêm 1 hàng ở trên nhân viên số 1 ở sheet data hoặc ở sheet chấm công thì macro không còn chuẩn nữa (vấn đề này bạn không cần quan tâm cũng được vì cơ bản mọi thứ đã ổn)
    - Bạn nói chính xác là phải có đủ nhân viên ở mọi trang tính, vấn đề này theo mình nghĩ là phải chỉnh thủ công ở bảng chấm công, khi in ấn dấu bớt những NV không làm trong tháng đó, bạn nghĩ sao...
    - Trang tính phát sinh đặt tên là 01TT thay vì TT01 mục đính là tránh nhầm lẫn với sheet T01 hay còn mục đích nào khác vậy bạn?
    - Mình chỉ hơi ngại là nếu phát sinh thêm 1 dòng hay 1 cột nữa chả lẽ lại phải lên nhờ bạn chỉnh giùm nên mình hỏi cách chỉnh CODE là vì vậy, vấn đề này có khó không bạn.
    Thân.
     
  15. Hoang2013

    Hoang2013 Active Member

    Mình làm xong file này tối qua, Bạn vận hành & cho ý kiến cuối cùng.

    1./ Code đã thu gọn 2 trong 1: Làm luôn chuyện tô màu & ghi công án chừng cho tất cả các ngày trong hợp đồng & trừ thứ 7 hay CN

    2./ "phải chỉnh thủ công ở bảng chấm công, khi in ấn dấu bớt những NV không làm trong tháng đó, bạn nghĩ sao..."
    Làm vậy sẽ an toàn hơn với bạn, tuy có mất thời gian thêm đôi chút.

    3./ "nếu phát sinh thêm 1 dòng hay 1 cột nữa chả lẽ lại phải lên nhờ bạn chỉnh giùm nên mình hỏi cách chỉnh CODE là vì vậy, vấn đề này có khó không bạn."
    Thì bạn đối chiếu giữa macro file cũ & mới này (dòng phát biểu về Const í) sẽ nghiệm ra vấn đề thôi;

    4./ 2 bảng lương & tiền công thì bạn chọn từng tháng lần lượt in thôi;
    Mình không có máy in để thử cho bạn, nên không dám viết tự động in hết 12 tháng cho bạn được.

    5./ Rất vui nếu được hỗ trợ bạn trong thời gian tới có gì đó phát sinh
     
    Last edited: 22 Tháng ba 2017
  16. Chào bạn hoang2013, Cám ơn bạn đã giúp đỡ mình nhiệt tình. Mình có vài điều muốn nói như sau:
    1./ Code 2 trong 1 của bạn chạy rất chuẩn, tuy nhiên không hiểu sao lần này chạy macro lâu hơn hẳn những lần trước (có lẽ là do macro khá dài hả bạn). Vì ở công trường mình làm cả T7, CN bạn có thể chỉ mình sửa CODE chỗ nào không.
    2./Chỉnh thủ công bảng chấm công và bảng lương thì mình hoàn toàn đồng ý, nhưng nếu viết CODE nhân viên nào không làm trong tháng đó thì ẩn đi liệu có khả thi?
    3./ Mình đang đối chiếu 5 đoạn CODE từ đầu bạn giúp mình đến giờ hi vọng sẽ biết được nhiều điều, nhưng vì trình VBA mình còn kém nên...
    4./ Mình cài add in "print multiple sheets" có thể in nhiều sheet cùng lúc, nếu làm nhiều bảng lương in 1 phát luôn nhưng workbook cồng kềnh. Cách làm của bạn thì quá gọn dĩ nhiên bảng lương thì vẫn phải hiệu chỉnh "tháng" rồi in từng sheet một, có cách nào tối ưu in hơn không bạn.
    Bạn đã quá nhiệt tình giúp đỡ, mình khó có thể đòi hỏi hơn. Tuy nhiên nếu bạn có thời gian mình cũng xin trình bày ý tưởng cho file excel được hoàn thiện.(Mình có thêm thắt file đôi chút, bạn xem qua nhé)
    Thân chào.
     
    Last edited: 21 Tháng ba 2017
  17. Hoang2013

    Hoang2013 Active Member

    Đảm bảo là không lâu hơn macro lần gần kế do chỉ thêm 1 lệnh đánh dấu đi làm (từ T2 đến T6) mà thôi.
    File của bạn xài nhiều công thức quá đấy thôi. Mà bạn có xài Link đến các file khác không đó?
    Hiện giờ số công khoảng ~24 công; Nếu thêm cả T7 & CN nữa thì công sẽ là 30 ư?
    Về việc này chắc bạn nên thay đổi bằng tay thôi . Dời công đi làm từ thứ này sang thứ khác & chỉ ít thôi mà.
    Chứ chỉ cho bạn thay trong macro thì khi đó công dư bạn cũng phải xóa bằng tay, cũng tốn thời gian vậy thôi.

    Bạn cần chờ & cho biết cần in các trang T01..T12 hay chỉ trang bảng lương thôi?
    & mình sẽ xem file ngay sau đây


    Đã nói với bạn rồi, Mình không thể viết "chay"; Bạn có thể nhờ người khác trên Cộng đồng giúp việc này.
     
    Last edited: 20 Tháng ba 2017
  18. Chào buổi tối bạn Hoang2013!
    1./Vấn đề công, suy nghĩ lại gì thì gì chừa T7, CN lại như bạn vẫn hợp lí hơn cả...Tại sao macro chạy chậm để mình xem lại công thức và link chắc có vấn đề.
    2./Phục vụ làm chứng từ vì vậy mình in tất cả hợp đồng lao động, toàn bộ bảng chấm công và bảng lương tất cả 12 tháng, nhiều trang tính mà phải chỉnh thủ công mình nghĩ cũng ngốn thời gian nhỉ (chưa kể mình phải làm nhiều công trường giống như ví dụ)
    3./Xin lỗi bạn Hoàng mình biết bạn ko viết "chay" được mà, ý mình hỏi bạn nên làm như thế nào? Theo như Bạn đã trả lời, chắc chắn sắp tới mình sẽ đăng câu hỏi để các cao thủ trên diễn đàn trợ giúp.
    4./ À cho mình hỏi hình thức chỉ có 1 bảng giống như sheet CTLg ta chỉ cần hiệu chỉnh tháng là bảng tính hiệu chỉnh theo thì gọi là gì.
    Cám ơn bạn, chúc buổi tối vui vẻ.
     
  19. Hoang2013

    Hoang2013 Active Member

    A. Các bước thử nghiệm để tăng tốc cho macro gồm:
    1./ (Tại trang ‘Data’): Cột [A] ta thay công thức này đi (=> Value)
    2./ Tại cột [C] của các trang tính họ ‘T’ (đang có công thức VLOOKUP()) ta nên đề câu lệnh chuyển hết chúng sang dạng Value
    Có thể chuyển chúng chỉ ngay lần chạy đầu; Sau đó vô hiệu hóa dòng lệnh đó trong macro đi
    Cần thêm 1 dòng lệnh vô đoạn Code
    PHP:
    For Each Sh In ThisWorkbook.Worksheets
        
    If Left(Sh.Name1) = "T" And IsNumeric(Right(Sh.Name1)) Then
            J 
    Sh.[c8].CurrentRegion.Rows.Count
            Sh
    .[c8].Resize(J32).Interior.ColorIndex 0
            Sh
    .[d8].Resize(J31).Value ""
        
    End If
    2 Next Sh
    (Vô hiệu hóa bằng dấu nháy đơn ở đầu & cuối dòng lệnh muốn vô hiệu hóa;
    Chuyện này có thể xài từ ‘Rem’ nếu bạn thích)
    3./ Cột [D] trang ‘CTLg’ thay vì VLOOKUP() bạn có thể xài công thức khác như =DATA!R4 (cho ô [D6]; . . . . (Tham khảo thêm tại cột [C] của trang ‘Luong’

    B Vấn đề in ấn toàn bộ các trang tính
    Mình đã hứa sẽ cùng bạn tiếp tục trong những ngày tới để ẩn đi những dòng không dữ liệu.

    C” chỉ cần hiệu chỉnh tháng là bảng tính hiệu chỉnh theo thì gọi là gì?
    Mình chưa nghĩ ra là gì trong những cụm từ sau:
    ‘Cập nhật’, ‘Cập nhật số liệu tháng’, ‘Làm tươi dữ liệu’, . . . .
    Tựu chung nó là 1 macro sự kiện gắn với ô có ‘Validation’ để chọn tháng. Macro này có nhiệm vụ thay mới số liệu của cột [E] trang tính này theo số liệu cột [AL] của trang tính lien quan đến tháng được chọn.

    Chúc bạn ngày vui & hiệu quả!
     
  20. Hoang2013

    Hoang2013 Active Member

    Đây là macro sự kiện đã được bổ sung để ẩn các dòng không dữ liệu về công.

    PHP:
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
     If 
    Not Intersect(Target, [O2]) Is Nothing Then
        Dim ShName 
    As String
        Dim Sh 
    As WorksheetCls As RangeArr()
        
    Dim J As IntegerRws As Long
        
        Rws 
    = [c6].CurrentRegion.Rows.Count
        Rows
    ("6:" Rws).Hidden False
        ShName 
    "T" Right("0" CStr(Target.Value), 2)
        
    Set Sh ThisWorkbook.Worksheets(ShName)
        
    Arr() = Sh.[c8].Resize(Sh.[c8].CurrentRegion.Rows.Count33).Value
        Application
    .ScreenUpdating False
        
    For Each Cls In Range([c6], [c6].End(xlDown))
            For 
    1 To UBound(Arr())
                If 
    Cls.Value Arr(J1Then
                    
    If Arr(J33) > 0 Then
                        Cls
    .Offset(, 2).Value Arr(J33)
                    Else
                        
    Cls.EntireRow.Hidden True
                    End 
    If
                
    End If
            
    Next J
        Next Cls
        Application
    .ScreenUpdating True
     End 
    If
    End Sub
     

Chia sẻ trang này