Cách ẩn các cột ngày của tháng trước, tháng sau. Chỉ hiện các cột ngày của tháng hiện tại

Liên hệ QC

HaiDuongVN

Thành viên mới
Tham gia
17/4/19
Bài viết
4
Được thích
0
Chào các bác.
Em có file Excel điểm danh học sinh hàng ngày gửi cho giáo viên. Mong được các bác giúp đỡ cách Ẩn các cột của tháng trước, tháng sau, chỉ hiện các cột của tháng hiện tại hoặc của tháng được chọn theo List để dễ theo dõi, nhập liệu hàng ngày
Em đã thử bằng Group thấy khó thao tác. Nếu được các bác giúp em bằng code VBA với ạ
Em xin gửi file đính kèm
Cảm ơn các bác!
 

File đính kèm

  • diem danh thang.xlsx
    51.5 KB · Đọc: 11
Chào các bác.
Em có file Excel điểm danh học sinh hàng ngày gửi cho giáo viên. Mong được các bác giúp đỡ cách Ẩn các cột của tháng trước, tháng sau, chỉ hiện các cột của tháng hiện tại hoặc của tháng được chọn theo List để dễ theo dõi, nhập liệu hàng ngày
Em đã thử bằng Group thấy khó thao tác. Nếu được các bác giúp em bằng code VBA với ạ
Em xin gửi file đính kèm
Cảm ơn các bác!
Nếu bạn muốn dùng VBA thì nên để data theo hàng dọc nhé.Để sử lý vừa đơn giản vừa lấy dữ liệu nhanh.
 
Upvote 0
Với mong muốn chỉ hiển thị tháng được chọn thì ý minh có ý tưởng sau, bạn tham khảo xem được không nhé.

1. Cột Dữ liệu điểm danh các tháng sẽ đẩy sang phía bên phải, Group vào để không nhìn thấy - Cột Data
2. Dữ liệu cần hiện thì sẽ dùng hàm Offset để lấy từ Cột Data

Nhưng nhận thấy dữ liệu học sinh lớn dùng hàm offset chắc không ổn, nên chắc chờ các Anh/Chị khác vào giúp :D
 
Lần chỉnh sửa cuối:
Upvote 0
Nếu bạn muốn dùng VBA thì nên để data theo hàng dọc nhé.Để sử lý vừa đơn giản vừa lấy dữ liệu nhanh.
Cảm ơn bạn. Mình không biết về VBA, mình sẽ nghiên cứu video bạn gửi.
Bài đã được tự động gộp:

Với mong muốn chỉ hiển thị tháng được chọn thì ý minh có ý tưởng sau, bạn tham khảo xem được không nhé.

1. Cột Dữ liệu điểm danh các tháng sẽ đẩy sang phía bên phải, Group vào để không nhìn thấy - Cột Data
2. Dữ liệu cần hiện thì sẽ dùng hàm Offset để lấy từ Cột Data

Nhưng nhận thấy dữ liệu học sinh lớn dùng hàm offset chắc không ổn, nên chắc chờ các Anh/Chị khác vào giúp :D
Cảm ơn bạn nhiều nha
 
Upvote 0
Muốn VBA thì có VBA đây.
Code này đặt trong "Thisworkbook" module (Alt-F11 mở trình VBA, cửa sổ bên trái click vào ThisWorkbook và dán code vào)
Lưu file dạng .xlsm.
PHP:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c&, c1&
If Target.Address(0, 0) <> "E6" Then Exit Sub
Target.Offset(, 1).Resize(1, 366).EntireColumn.Hidden = True
c = Evaluate("=match(date(year(today())," & Right(Target, 2) & ",1),6:6,0)")
c1 = Evaluate("=day(eomonth(date(year(today())," & Right(Target, 2) & ",1),0))")
Sh.Cells(6, c).Resize(1, c1).EntireColumn.Hidden = False
End Sub
Sau đó, tại từng sheet, thay đổi giá trị tại E6 nhé.
Lưu ý: code đang dùng giá trị năm hiện tại : year(today())
Nếu sang năm 2023 mà bạn vẫn muốn dùng cho năm 2022, thì bạn sửa tất cả chỗ nào có "year(today())" thành 2022 nhé.
 

File đính kèm

  • diem danh thang.xlsm
    54.6 KB · Đọc: 14
Upvote 0
Muốn VBA thì có VBA đây.
Code này đặt trong "Thisworkbook" module (Alt-F11 mở trình VBA, cửa sổ bên trái click vào ThisWorkbook và dán code vào)
Lưu file dạng .xlsm.
PHP:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c&, c1&
If Target.Address(0, 0) <> "E6" Then Exit Sub
Target.Offset(, 1).Resize(1, 366).EntireColumn.Hidden = True
c = Evaluate("=match(date(year(today())," & Right(Target, 2) & ",1),6:6,0)")
c1 = Evaluate("=day(eomonth(date(year(today())," & Right(Target, 2) & ",1),0))")
Sh.Cells(6, c).Resize(1, c1).EntireColumn.Hidden = False
End Sub
Sau đó, tại từng sheet, thay đổi giá trị tại E6 nhé.
Lưu ý: code đang dùng giá trị năm hiện tại : year(today())
Nếu sang năm 2023 mà bạn vẫn muốn dùng cho năm 2022, thì bạn sửa tất cả chỗ nào có "year(today())" thành 2022 nhé.
Cảm ơn bác nhiều nhé
 
Upvote 0
Muốn VBA thì có VBA đây.
Code này đặt trong "Thisworkbook" module (Alt-F11 mở trình VBA, cửa sổ bên trái click vào ThisWorkbook và dán code vào)
Lưu file dạng .xlsm.
PHP:
Option Explicit
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c&, c1&
If Target.Address(0, 0) <> "E6" Then Exit Sub
Target.Offset(, 1).Resize(1, 366).EntireColumn.Hidden = True
c = Evaluate("=match(date(year(today())," & Right(Target, 2) & ",1),6:6,0)")
c1 = Evaluate("=day(eomonth(date(year(today())," & Right(Target, 2) & ",1),0))")
Sh.Cells(6, c).Resize(1, c1).EntireColumn.Hidden = False
End Sub
Sau đó, tại từng sheet, thay đổi giá trị tại E6 nhé.
Lưu ý: code đang dùng giá trị năm hiện tại : year(today())
Nếu sang năm 2023 mà bạn vẫn muốn dùng cho năm 2022, thì bạn sửa tất cả chỗ nào có "year(today())" thành 2022 nhé.
Em chào bác. Bác có thể cho em xin thông tin liên hệ, em hỏi nhờ bác được không? Email của em: songhai517@gmail.com
 
Upvote 0
Thêm 1 đoạn code khác cho thớt tham khảo
Mã:
Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    
    If Not Intersect(Target, Range("e6")) Is Nothing Then
    Range("f:nf").EntireColumn.Hidden = True
    
        For i = 6 To 370
            If Month(Cells(8, i)) = Range("e6") Then
                Columns(i).Hidden = False
            End If
        Next
    
    End If

End Sub
 

File đính kèm

  • diem danh thang.xlsm
    37.4 KB · Đọc: 6
Upvote 0
Web KT
Back
Top Bottom