Nếu bạn không phiền khi sử dụng VBA thì cách 'nhẹ' để thực hiện điều này là bằng cách tự động tạo truy vấn SQL.
Tôi sử dụng một cái gì đó tương tự như dưới đây khá nhiều để tạo bảng điều khiển đặc biệt không cần bất cứ thứ gì phức tạp như QlikView hoặc Crystal
Ví dụ
Bảng ẩn 'Các biến' chứa một bảng 'Table_Query_SALES_EMPLOYEES'. Điều này được SQL đưa ra để chỉ trả về mức tối thiểu cần thiết cho lựa chọn param. Một cái gì đó như SELECT DISTINCT AccountDirector FROM InvoicedSales ORDER BY AccountDirector
.
Sau đó, tôi có một phạm vi được đặt tên 'Sales_Emprocod' mà nó tham chiếu là =Table_SQL_SALES_EMPLOYEES[AccountDirector]
. Điều này được ánh xạ tới hộp tổ hợp, có Phạm vi đầu vào được đặt thành 'Sales_Emp viên'. Điều này sẽ gửi một số đến một ô bạn chọn (E5 trong trường hợp của tôi) của mục trong danh sách đã chọn. Để trả về giá trị thực theo trích xuất SQL gốc, bạn cần sử dụng =OFFSET(Table_SQL_SALES_EMPLOYEES[[#Headers],[AccountDirector]],$E$5,0)
. Cái này được đặt tên là 'Slp'.
.: Bây giờ chúng tôi có một hộp lựa chọn thả xuống của tất cả các giám đốc tài khoản có thể. Cũng có một số khác cho quý tài chính, nhưng cùng một nguyên tắc :.
Khi lựa chọn được thay đổi trong hộp tổ hợp, nó sẽ gọi macro 'changeFilter ()'
Sub changeFilter()
Dim wb As Workbook
Set wb = Excel.ActiveWorkbook
Dim ws As Worksheet
Set ws = Excel.ActiveWorkbook.Sheets("Lookups")
Dim conn As Excel.WorkbookConnection
Dim slp As Name
Set slp = wb.Names("Slp")
Dim qtr As Integer
qtr = wb.Names("qtr").RefersToRange.Value2
Dim query As String
' Adjusted Sales Consolidated
Set conn = wb.Connections("SQL_ADJUSTEDSALES_CONSOLIDATED")
query = "SELECT * FROM InvoicedSales WHERE AccountDirector=" & "'" & slp.RefersToRange.Value2 & "'"
conn.OLEDBConnection.CommandText = query
conn.Refresh
Về cơ bản, tôi định cấu hình trước các bảng / pivots bằng cách nối chúng với cơ sở dữ liệu với các biến được mã hóa cứng và chọn các tùy chọn 'Làm mới dữ liệu khi mở tệp' và 'Xóa dữ liệu khỏi phạm vi dữ liệu ngoài trước khi lưu sổ làm việc' - điều này giữ cho các tệp nhỏ như không có gì thực sự được cứu.
Sau đó, bộ lọc thay đổi ghi đè biến mã hóa cứng bằng truy vấn SQL được tạo động bằng cách sử dụng tham số đã chọn và sau đó làm mới bảng.