2011-11-28 107 views
0

Excel 2007:我從Access表中獲取數據,Excel工作表稱爲「數據」。我的Excel報表單元格通過鏈接到這些數據單元格(= Data!A1)來填充,並且一些報表單元格具有簡單的代碼。但我的問題是,我的報告需要指定一條記錄。示例:數據記錄1:姓名=喬,出生= 7/29/62,國家=美國:記錄2:姓名=山姆,出生= 4/13/74,國家=中國...我們如何控制報告顯示到特定的記錄?如果我添加一個DropDown或ListBox,那麼我們如何只爲報告中名稱選擇的節目製作記錄。有沒有辦法將代碼放在列表框後面,或者我應該放棄列表並創建宏,那麼用戶選擇要在報表中顯示的數據的最佳方式是什麼?建議請...Excel根據用戶選擇顯示數據

回答

2

有兩種方法我會使用。

當您在Excel中嵌入查詢對象時(即,我假設您如何從Access中獲取數據),您可以在小查詢編輯器工具中編輯該查詢。 您可以在此工具中爲該查詢添加條件 - 有一個過濾器圖標,您可以選擇名稱列,然後在下面的框中鍵入「Sam」,然後生成一個SQL語句,該語句現在包含「Where Name = '相同'「在最後。

但是,這對報告沒有幫助,因爲我們很可能希望名稱是從Excel工作表本身傳入的參數。如果在標準框中鍵入「[輸入名稱]」而不是「Sam」,則方括號會告訴查詢工具,這是用戶提供的參數。當你從工具中運行查詢時,你會得到一個彈出框,每次詢問你的名字。

現在,當您退出查詢工具並返回到Excel時,可以編輯該嵌入式查詢對象的查詢參數。您創建的參數(名稱)存在,並且可以採用靜態值,提示用戶或獲取單元格的內容。當單元格內容更改時,您甚至可以設置一個標誌來刷新查詢。

另一種方法稍微進一步並在某些VBA代碼中操縱查詢對象。例如,如果您需要做一些較重的提升或其他邏輯,並且您不想將其作爲電子表格公式編寫出來。一個簡單的方法是在報表上放置一個按鈕,並讓VBA代碼在該按鈕的單擊事件上啓動。

+0

數據排序必須由最終用戶在Excel中完成,這是您最後一段描述的內容。我現在使用一張報表和數據(「A1:H35中的數據」和「Z1:AF200中的數據」)...... – user745778

+0

續:我有一個下拉菜單,只顯示唯一的名稱。你可以幫我解決這個if語句來填充特定數據,然後我可以將報表映射到這些單元格:Private Sub RunName_Click()= IF(ButtonName <>「」然後顯示數據只爲該名稱)End Sub ...也許如果數據是在一張單獨的紙上,它會更容易? – user745778

+0

不確定我關注你的問題。過去,我使用多個查詢對象製作了工作簿。這些可以從VBA側更新;因此您可能會有一張運行查詢的工作表,以在工作簿打開時刷新名稱列表,然後填寫一個範圍,然後在下拉列表中將其用作下拉列表,然後再次查詢第二個查詢選擇的結果。 – Mikeb