Giúp code: lấy ngày cuối của một tháng, dựa vào tên Sheet!
Em nhờ Thầy cô & anh chị giúp em code sau:
Cách làm của em trước đây:
1/Em có tên các sheet T01, T02, T03….T11, T12. Các sheet này tương ứng với các tháng 01, 02, 03 … 11, 12
Tại cell A5 của các Sheet trên em sử dụng công thức
MID(CELL("filename";A5);FIND("]";CELL("filename";A5))+1;256)
Để lấy tên Sheet
Và sử dụng code dưới đây để lấy ngày cuối cùng của tháng tương ứng của các sheet T01, … T12 nói trênSub NgayCuoiThang() With Range([B8], [B5000].End(xlUp)) .Offset(.Rows.Count, 3)(3, 1).Formula = [COLOR=#ff0000][B]"=DATE(MA!A2,VALUE(RIGHT(A5,2))+1,0)"[/B][/COLOR] .Offset(.Rows.Count, 3)(3, 1).NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy" .Offset(.Rows.Count, 3)(3, 1).Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection End With End Sub2/ Riêng T13 là sheet tổng hợp cả năm, nên sẽ lấy ngày cuối cùng của năm, và em sử dụng code
Sub NgayCuoiNam()With Range([B8], [B5000].End(xlUp)) .Offset(.Rows.Count, 3)(3, 1).Formula = [B][COLOR=#ff0000]Sheets("Ma").[b3][/COLOR][/B] .Offset(.Rows.Count, 3)(3, 1).NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy" .Offset(.Rows.Count, 3)(3, 1).Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection End With End Sub————————–
Yêu cầu của em: Bây giờ em bỏ công thức tại cell A5 của tất cả các Sheet từ T01 -> T12
Em nhờ các Thầy cô & anh chị viết Một code Tổng hợp cho cả 2 trường hợp nói trên để tạo Ngày cuối tháng tương ứng của từng Sheet và Ngày cuối năm cho Sheet T13
———-
Lưu ý: Năm hiện hành tại cell A2 của Sheet MA
Em cảm ơn!
Thì vầy thôi:
Sub NgayCuoiThang()
Dim lYear As Long, lMonth
lYear = Sheets("MA").Range("A2").Value
lMonth = Right(ActiveSheet.Name, 2)
With Range("B5000").End(xlUp)
With .Offset(3, 3)
.Value = DateSerial(lYear, lMonth + 1, 0)
.NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
.Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
End With
End With
End Sub
và:
Sub NgayCuoiNam()
Dim lYear As Long
lYear = Sheets("MA").Range("A2").Value
With Range("B5000").End(xlUp)
With .Offset(3, 3)
.Value = DateSerial(lYear, 12, 31)
.NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
.Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
End With
End With
End Sub
www.giaiphapexcel.com/diendan/threads/gi%C3%BAp-code-l%E1%BA%A5y-ng%C3%A0y-cu%E1%BB%91i-c%E1%BB%A7a-m%E1%BB%99t-th%C3%A1ng-d%E1%BB%B1a-v%C3%A0o-t%C3%AAn-sheet.75415/
Bây giờ em nhờ Thầy gom 2 code trên thành 1 code
Nếu Chạy code cho các Sheet từ T01 -> T12: thì Code lấy ngày cuối tháng
Còn nếu Chạy code cho Sheet T13 :thì Code lấy ngày cuối năm
Em cảm ơn!Em gom lại như thế này
Sub TongHop() Dim lYear As Long, lMonth lYear = Sheets("MA").Range("A2").Value lMonth = Right(ActiveSheet.Name, 2) With Range([B8], [B5000].End(xlUp)) With .Offset(.Rows.Count, 3)(3, 1) If Right(ActiveSheet.Name, 2) > 12 Then .Value = DateSerial(lYear, 12, 31) Else .Value = DateSerial(lYear, lMonth + 1, 0) End If .NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy" .Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection End With End With End SubThấy chạy vẫn tốt, không biết có đúng cú fáp không?
Em cảm ơn!
If chi nhiều thế. Chỉ vầy thôi:
Sub NgayCuoiThang()
Dim lYear As Long, lMonth As Long
lYear = Sheets("MA").Range("A2").Value
lMonth = 1 * Right(ActiveSheet.Name, 2)
lMonth = IIf(lMonth > 12, 12, lMonth)
With Range("B5000").End(xlUp).Offset(3, 3)
.Value = DateSerial(lYear, lMonth + 1, 0)
.NumberFormat = """/(/gày ""dd"" tháng ""mm"" n" & ChrW(259) & "m ""yyyy"
.Resize(, 4).HorizontalAlignment = xlCenterAcrossSelection
End With
End Sub
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học
Bình luận