Giúp code: lấy ngày cuối của một tháng, dựa vào tên Sheet! (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Hong.Van

Busy
Tham gia
7/5/12
Bài viết
2,330
Được thích
1,767
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
PHP:
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ên
Mã:
Sub 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 Sub

2/ 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
Mã:
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!
 

File đính kèm

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:
Mã:
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à:
Mã:
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
 
Lần chỉnh sửa cuối:
Upvote 0
Thì vầy thôi:
Mã:
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à:
Mã:
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
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!
 
Upvote 0
Em gom lại như thế này
Mã:
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 Sub
Thấy chạy vẫn tốt, không biết có đúng cú fáp không?
Em cảm ơn!
 
Lần chỉnh sửa cuối:
Upvote 0
Em gom lại như thế này
Mã:
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 Sub
Thấ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:
Mã:
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
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom