Tạo kỳ (tháng) mới cho bảng tính

Liên hệ QC

Excel my love_1

Thành viên thường trực
Tham gia
12/11/19
Bài viết
330
Được thích
183
Em có 1 bảng tính cần theo dõi đối chiếu hàng tháng, sang tháng mới em cứ phải thêm kỳ, rồi copy paste lại công thức cho bảng tính, việc cứ lặp đi lặp lại định kỳ mà bảng này em cũng xác định dùng lâu dài, nên em muốn nhờ các anh chị giúp em tạo code thêm kỳ và các hành động đi kèm cho bảng tính, như trong hình ảnh em mô tả
1.png

2.png
3.png
Chi tiết dữ liệu em gửi trong file đính kèm. Rất mong nhận được giúp đỡ của các anh chị và các bạn
Chúc các anh chị tuần mới công việc thuận lợi
 

File đính kèm

  • 1.png
    1.png
    340.1 KB · Đọc: 10
  • Them ky.xlsb
    16.9 KB · Đọc: 12
Lần chỉnh sửa cuối:
Em có 1 bảng tính cần theo dõi đối chiếu hàng tháng, sang tháng mới em cứ phải thêm kỳ, rồi copy paste lại công thức cho bảng tính, việc cứ lặp đi lặp lại định kỳ mà bảng này em cũng xác định dùng lâu dài, nên em muốn nhờ các anh chị giúp em tạo code thêm kỳ và các hành động đi kèm cho bảng tính, như trong hình ảnh em mô tả
View attachment 238901

View attachment 238898
View attachment 238899
Chi tiết dữ liệu em gửi trong file đính kèm. Rất mong nhận được giúp đỡ của các anh chị và các bạn
Chúc các anh chị tuần mới công việc thuận lợi
Mã:
Sub ABC()
  Dim fRow&, k&, fDay As Date
    
  With Sheets("Doi chieu")
    fRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
    fDay = .Range("C" & fRow - 2).Value + 1
    k = DateAdd("m", 1, fDay) - fDay
    .Range("A4:G5").Copy .Range("A" & fRow)
    .Range("A" & fRow).Resize(k + 1).Value = Year(fDay)
    .Range("B" & fRow).Resize(k + 1).Value = Month(fDay)
    .Range("C" & fRow).Value = fDay
    .Range("C" & fRow).Resize(k).DataSeries
    .Range("D" & fRow).Copy .Range("D" & fRow + 1).Resize(k - 1)
    .Range("E" & fRow).Resize(k, 2).Value = 0
    .Range("G" & fRow + 1).Copy .Range("G" & fRow + 1).Resize(k - 1)
    .Range("A" & fRow - 1).Resize(, 7).Copy .Range("A" & fRow + k)
    .Range("B" & fRow + k).Value = .Range("B" & fRow + k - 1).Value & " Total"
    .Range("D" & fRow + k).FormulaR1C1 = "=SUM(R[" & -k & "]C:R[-1]C)"
    .Range("E" & fRow + k).FormulaR1C1 = "=SUM(R[" & -k & "]C:R[-1]C)"
  End With
End Sub
 
Upvote 0
Mã:
Sub ABC()
  Dim fRow&, k&, fDay As Date
 
  With Sheets("Doi chieu")
    fRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
    fDay = .Range("C" & fRow - 2).Value + 1
    k = DateAdd("m", 1, fDay) - fDay
    .Range("A4:G5").Copy .Range("A" & fRow)
    .Range("A" & fRow).Resize(k + 1).Value = Year(fDay)
    .Range("B" & fRow).Resize(k + 1).Value = Month(fDay)
    .Range("C" & fRow).Value = fDay
    .Range("C" & fRow).Resize(k).DataSeries
    .Range("D" & fRow).Copy .Range("D" & fRow + 1).Resize(k - 1)
    .Range("E" & fRow).Resize(k, 2).Value = 0
    .Range("G" & fRow + 1).Copy .Range("G" & fRow + 1).Resize(k - 1)
    .Range("A" & fRow - 1).Resize(, 7).Copy .Range("A" & fRow + k)
    .Range("B" & fRow + k).Value = .Range("B" & fRow + k - 1).Value & " Total"
    .Range("D" & fRow + k).FormulaR1C1 = "=SUM(R[" & -k & "]C:R[-1]C)"
    .Range("E" & fRow + k).FormulaR1C1 = "=SUM(R[" & -k & "]C:R[-1]C)"
  End With
End Sub
Em cảm ơn anh HieuCD, em nhìn code của anh viết cho bài này mà như có cảm giác anh đang vừa nhắm mắt mà vẫn vừa viết được code tuyệt đến vậy, đa số công thức ngày tháng của VBA anh dùng đều là công thức em chưa biết, nhưng nhìn cách anh sử dụng là em thấy học hỏi thêm được rồi,. Cứ như đang được chuyên gia chỉ cho mấy ví dụ trong Sách Giáo Khoa vậy. Rất tuyệt vời anh à!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom