ẩn các dòng không cần thiết trong bản tổng hợp

Liên hệ QC

viettuan49a

Thành viên mới
Tham gia
16/7/10
Bài viết
39
Được thích
3
em muốn ẩn các dòng không cần thiết trong bản tổng hợp
tại mỗi ngày số liệu khác nhau nên em đang phải dùng lện hide và show dòng trước khi in.rất bất tiện
mong các anh chỉ giáo
 

File đính kèm

em muốn ẩn các dòng không cần thiết trong bản tổng hợp
tại mỗi ngày số liệu khác nhau nên em đang phải dùng lện hide và show dòng trước khi in.rất bất tiện
mong các anh chỉ giáo
Muốn ẩn dòng tự động như thế này thì phải dùng VBA, mà đã dùng VBA thì để VBA lọc dữ liệu luôn, khỏi công thức chi cho mệt cái đầu
Kết quả ở sheet2 nhé bạn
Thân
 

File đính kèm

Upvote 0
em muốn ẩn các dòng không cần thiết trong bản tổng hợp
tại mỗi ngày số liệu khác nhau nên em đang phải dùng lện hide và show dòng trước khi in.rất bất tiện
mong các anh chỉ giáo
Bài này không có cách gì ngon bằng PivotTable, sao không dùng nhỉ?

untitled.JPG
 

File đính kèm

Upvote 0
em hỏi một chút về ẩn dòng
hôm qua bác giúp em nhưng em không biết chỉnh code cho phù hợp với bản excel của em
bác có thể giải thích hộ em đoạn code đó hộ em được không.mục xanh em đã hiểu, mục đỏ bác giải thích hộ em


Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim Vung, Ws As Worksheet, I As Integer, K As Integer, Mg()
If Target.Address = "$G$4" Then
Set Ws = Sheets("sheet2")
Vung = Ws.[b2:d23].Value
Application.ScreenUpdating = False
Cells.EntireRow.Hidden = False

ReDim Mg(1 To UBound(Vung), 1 To 3): K = 1
For I = 1 To UBound(Vung)
If Vung(I, 1) = Target Then
Mg(K, 1) = Vung(I, 1): Mg(K, 2) = Vung(I, 2): Mg(K, 3) = Vung(I, 3)
K = K + 1
End If
Next
[b4].Resize(K, 3) = Mg
Range(Cells(3 + K, 1), Cells(24, 1)).EntireRow.Hidden = True

Application.ScreenUpdating = True
End If
End Sub

em mới tìm hiểu vba, mong bác chỉ giáo để em áp dụng vào bài của em.
thank bác
 
Upvote 0
em hỏi một chút về ẩn dòng
hôm qua bác giúp em nhưng em không biết chỉnh code cho phù hợp với bản excel của em
bác có thể giải thích hộ em đoạn code đó hộ em được không.mục xanh em đã hiểu, mục đỏ bác giải thích hộ em

ReDim Mg(1 To UBound(Vung), 1 To 3): K = 1
Khai báo lại số phần tử của mảng có tên Mg, số hàng bằng với số hàng dữ liệu gốc của bạn, số cột =3
For I = 1 To UBound(Vung)
Cho biến I chạy từ 1 đến số hàng của mảng Vung
If Vung(I, 1) = Target Then
Nếu giá trị cell Vung(I,1) _ khi I=1 thì Vung(I,1) là cell [B2] theo dữ liệu trong bài....._ bằng với giá trị tìm kiếm ( cell G4 ở sheet2 ) thì
Mg(K, 1) = Vung(I, 1): Mg(K, 2) = Vung(I, 2): Mg(K, 3) = Vung(I, 3)
Gán những giá trị ở dòng thỏa điều kiện từ mảng Vung vào mảng Mg
K = K + 1
Biến K tăng 1 khi điều kiện thỏa (K là số hàng của mảng Mg)
End If
Next
[b4].Resize(K, 3) = Mg
Gán mảng Mg vào vùng muốn thể hiện kết quả ( trong bài bắt đầu từ cell B4 ở sheet2)
Range(Cells(3 + K, 1), Cells(24, 1)).EntireRow.Hidden = True
Chọn vùng từ A3 + số hàng của mảng Mg (biến K)_ tức là chọn hàng sát dưới hàng cuối cùng có dữ liệu _đến cell cuối cùng của vùng bạn muốn in (A24) để ẩn đi
Hihi, mình không có khả năng diễn đạt tốt, bạn cố gắng hiểu nhé
Thân
 
Upvote 0
bác xem em thêm 2 cột nữa, chỉnh code mà không ra
mong bác chỉ giúp
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Vung, Ws As Worksheet, I As Integer, K As Integer, Mg()
        If Target.Address = "$G$4" Then
            [b4:f24].ClearContents
            Set Ws = Sheets("sheet1")
            Vung = Ws.[b2:f23].Value
            Application.ScreenUpdating = False
            Cells.EntireRow.Hidden = False
            ReDim Mg(1 To UBound(Vung), 1 To 5): K = 1
                For I = 1 To UBound(Vung)
                    If Vung(I, 1) = Target Then
                        Mg(K, 1) = Vung(I, 1): Mg(K, 2) = Vung(I, 2): Mg(K, 3) = Vung(I, 3): Mg(K, 4) = Vung(I, 4): Mg(K, 5) = Vung(I, 5)
                        K = K + 1
                    End If
                Next
            [b4].Resize(K, 5) = Mg
            Range(Cells(3 + K, 1), Cells(24, 1)).EntireRow.Hidden = True
            Application.ScreenUpdating = True
        End If
End Sub
Thử lại xem, mình thêm tí khúc đầu để xóa dữ liệu cũ cho an toàn ( dù không ảnh hưởng gì)
Bạn sửa chính xác mà, hơi kẹt chỗ này
Range(Cells(3 + K, 1), Cells(24, 1)).EntireRow.Hidden = True
Thân
 
Upvote 0
Thank bạn nhiều
mình đã chỉnh sửa được trên nội dung bài mình
 
Upvote 0
bạn ơi
code của bạn rất đúng
có điều dòng tổng không đúng, bạn xem lại được không
 
Upvote 0
bạn ơi
code của bạn rất đúng
có điều dòng tổng không đúng, bạn xem lại được không
Mình đã xem lại, bài đầu vì mình không xóa dữ liệu khi thay đổi dữ liệu dò nên phần tổng tính luôn phần ẩn nên không chính xác, từ bài bạn thêm 2 cột phần tổng hoàn toàn đúng. Code không can thiệp vào tổng, nếu cần thiết mình dùng code tính tổng luôn cho bạn
Nếu sử dụng bài cuối cùng bạn cứ yên tâm mà ngủ ngon
Thân
 
Upvote 0
mình dùng thêm lệnh sumif, kết quả cũng tốt rồi, cám ơn ban
 
Upvote 0
phần tổng mình tự giải quyết được rồi.
mình muốn protec 1 phần của sheet thì code không chạy được, có cách nào điều chỉnh không bạn
 
Upvote 0
Web KT

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

Back
Top Bottom