Co giản bảng tính Excel theo điều kiện lọc

Liên hệ QC

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
Kính gửi Anh chị GPE,
Có code VBA gì mà mỗi khi em bấm vào lọc bất kỳ trong Slicer nó tự động co giãn theo điều kiện lọc "x" tại cột A được ạ. Em cảm ơn.
 

File đính kèm

Upvote 0
Co giãn theo điều kiện lọc "x" là sao vậy bạn?
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 ạ.
 
Upvote 0
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?
 
Upvote 0
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?
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 ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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ó ạ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
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ó ạ.

Đâ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.
 

File đính kèm

Upvote 0
Đâ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 ạ.
 

File đính kèm

Upvote 0
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 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
 

File đính kèm

Upvote 0
Đâ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
Nó chạy đúng rồi chị ạ. Em cảm ơn chị đã giúp em. Chúc chị ngủ ngon !
 
Upvote 0
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 ạ.
"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 ?
" co giãn theo điều kiện lọc "x" " - nghĩa là chữ x để xác nhận là hàng có x là được nhìn thấy, còn lại là ẩn đi.
"Chả nhẽ em viết tối nghĩa" - Tại tư duy của bạn vượt quá hiểu biết của người khác.

Bạn tạm dùng phương pháp "Bad" này xem sao
 

File đính kèm

Upvote 0

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.
 
Upvote 0

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.
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ả.
 
Upvote 0
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ả.
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.
 
Upvote 0
Web KT

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

Back
Top Bottom