Phương Phương mito
Thành viên thường trực
- Tham gia
- 1/5/19
- Bài viết
- 275
- Được thích
- 65
Dạ, tức là khi em nhấp chọn một tiêu chí nào trong Slicer thìCo giãn theo điều kiện lọc "x" là sao vậy bạn?
Dạ vâng ạ. Tức là khi chọn bất kỳ tiêu chí nào trong slicer nó đều co lên/giãn ra để loại bỏ vùng trắng của trang Excel (Lấy điều kiện lọc là cột A có tích các dấu "x" ạ). Tức Filter theo cột A chọn "x" theo mỗi nhấp chuột chọn trong Slicer nhằm bỏ khoảng trống của Trang ấy ạ.Co giãn theo điều kiện lọc "x" là sao vậy bạn?
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
'Code cần thực hiện tại đây
End Sub
Hi. Chả nhẽ em viết tối nghĩa quá vậy sao ạ. Tức là khi mình chọn tích bất kỳ Slicer nào thì vùng có giá trị của Pivot nó sẽ co giãn đúng không ạ. Bây giờ em chỉ lấy vùng có dữ liệu thôi còn loại bỏ vùng trống. Để lấy vùng có dữ liệu em đã làm hàm If ở cột A, nếu có dữ liệu, vùng của Pivot nó tới đâu thì có dấu "x" hiện tới đó. Bản chất là lọc Filter theo điều kiện cột A - Tiêu chí lọc là dấu x. Em nghĩ là cũng dễ hiểu ý tưởng của em mà. Ví dụ, theo File em lọc chữ tại cột A theo chữ X, nhưng nó vẫn còn một khoảng trống tại dòng 6 ạ. Làm sao để mỗi lần chọn Slicer thì từ A1:Ax nó sẽ chọn dấu x mà không còn khoảng trống ạ.Bạn có thể xử dụng bắt sự kiện trong worksheet có PivotTable
Với Code:
Mã:Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) 'Code cần thực hiện tại đây End Sub
Với cách diễn đạt câu hỏi của bạn, thực sự không thể hiểu bạn muốn co giãn cái gì. Cột Hàng, Cột nào, Hàng Nào, Rộng , Cao ra sao?
Dạ, Vẫn không được ạ. Chẳng hạn em chọn Cá nhân và Longterm thì vẫn có khoảng trống tại dòng 6 ạ. Hiểu rằng dòng cuối cùng của Bảng Pivot trên phải liền với dòng đầu của bảng dưới ạ. Và nếu có nhiều bảng liền nhau cũng vậy ạ.Tất nhiên vị trí các bảng em đặt sao cho dũ liệu dài nhất của một bảng không chạm vào được bảng Pivot khác ạ. Nên tất cả em sẽ kéo hàm tại cột A để lấy vùng có dữ liệu của các bảng. Nhìn em thấy dễ nhưng khi lọc em thấy khó ạ.Xóa các dòng trống đó đi như thế này được không bạn?
Dạ, Vẫn không được ạ. Chẳng hạn em chọn Cá nhân và Longterm thì vẫn có khoảng trống tại dòng 6 ạ. Hiểu rằng dòng cuối cùng của Bảng Pivot trên phải liền với dòng đầu của bảng dưới ạ. Và nếu có nhiều bảng liền nhau cũng vậy ạ.Tất nhiên vị trí các bảng em đặt sao cho dũ liệu dài nhất của một bảng không chạm vào được bảng Pivot khác ạ. Nên tất cả em sẽ kéo hàm tại cột A để lấy vùng có dữ liệu của các bảng. Nhìn em thấy dễ nhưng khi lọc em thấy khó ạ.
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Macro1
End Sub
Sub Macro1()
Dim lr As Long
lr = Cells(Rows.Count, "B").End(xlUp).Row
Range("B2:B" & lr).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub
Nó chạy vẫn bị sai ạ. Ví dụ như hinh File ạ (Hoặc em bỏ chọn Cust Type tức chọn cả hai ạ, thì cái Hàng Grandtotal của Pivot đầu nó bị ẩn hết ạ...) chị thử chọn slicer nhiều lần xem ạ. Em thấy lúc nó đúng, lúc nó sai ạ.Đây bạn thử lại xem đúng chưa ạ?
Mã:Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Macro1 End Sub Sub Macro1() Dim lr As Long lr = Cells(Rows.Count, "B").End(xlUp).Row Range("B2:B" & lr).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True End Sub
Cũng không cần sử dụng dấu "x" ở cột A đâu bạn xóa hết đi cũng được.
Nó chạy vẫn bị sai ạ. Ví dụ như hinh File ạ (Hoặc em bỏ chọn Cust Type tức chọn cả hai ạ, thì cái Hàng Grandtotal của Pivot đầu nó bị ẩn hết ạ...) chị thử chọn slicer nhiều lần xem ạ. Em thấy lúc nó đúng, lúc nó sai ạ.
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Macro1
End Sub
Sub Macro1()
Dim lr As Long
lr = Cells(Rows.Count, "B").End(xlUp).Row
Range("B2:B" & lr).EntireRow.Hidden = False
Range("B2:B" & lr).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True
End Sub
Nó chạy đúng rồi chị ạ. Em cảm ơn chị đã giúp em. Chúc chị ngủ ngon !Đây bạn kiểm tra lại một lần nữa nhé.
Mã:Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable) Macro1 End Sub Sub Macro1() Dim lr As Long lr = Cells(Rows.Count, "B").End(xlUp).Row Range("B2:B" & lr).EntireRow.Hidden = False Range("B2:B" & lr).SpecialCells(xlCellTypeBlanks).EntireRow.Hidden = True End Sub
"Trong cột A những hàng nào có dữ liệu thì nhìn thấy được , các dòng trống thì ẩn đi" phải vậy không ?Hi. Chả nhẽ em viết tối nghĩa quá vậy sao ạ. Tức là khi mình chọn tích bất kỳ Slicer nào thì vùng có giá trị của Pivot nó sẽ co giãn đúng không ạ. Bây giờ em chỉ lấy vùng có dữ liệu thôi còn loại bỏ vùng trống. Để lấy vùng có dữ liệu em đã làm hàm If ở cột A, nếu có dữ liệu, vùng của Pivot nó tới đâu thì có dấu "x" hiện tới đó. Bản chất là lọc Filter theo điều kiện cột A - Tiêu chí lọc là dấu x. Em nghĩ là cũng dễ hiểu ý tưởng của em mà. Ví dụ, theo File em lọc chữ tại cột A theo chữ X, nhưng nó vẫn còn một khoảng trống tại dòng 6 ạ. Làm sao để mỗi lần chọn Slicer thì từ A1:Ax nó sẽ chọn dấu x mà không còn khoảng trống ạ.
Một cái là chị em. một cái là của em. Em 94 còn chị em 86. Hai tài khoản khác nhau mà chị. Chỉ là có thể sợ Miss câu hỏi lên chị em nhờ em, chứ em không tạo hai tài khoản làm gì cả.Code VBA co gọn trang khi chọn Slicer
Kính gửi Anh chị và Các bạn, Em có File kèm theo và 2 Pivot và 2 Slicer kèm theo. Có Code gì mà khi chọn bất kỳ tiêu chí nào trong slicer nó đều co lên để loại bỏ vùng trắng của trang Excel (Lấy điều kiện lọc là cột A có tích các dấu "x" ạ). Tức Filter theo cột A chọn "x" theo mỗi nhấp chuột...www.giaiphapexcel.com
Vì sao 2 nick hỏi cùng 1 bài? Nếu cùng 1 người thì bạn nên chú ý kiên nhẫn hơn, có thể sửa tiêu đề để rõ nghĩa hơn. Chứ ko nên lấy nick khác và tạo bài mới như vậy.
Nếu vậy thì bạn nên dẫn link bài chị bạn để nhờ. Bạn làm 2 bài mà ko kết nối gì là lãng phí tài nguyên của GPE và mất thời gian của các thành viên.Một cái là chị em. một cái là của em. Em 94 còn chị em 86. Hai tài khoản khác nhau mà chị. Chỉ là có thể sợ Miss câu hỏi lên chị em nhờ em, chứ em không tạo hai tài khoản làm gì cả.