我有一個很大的員工資料表,我想在其他工作表上建立表,其中包含從主資料集中篩選出的資料集。我在編寫大量 VBA 巨集方面經驗豐富,並且可以使用資料庫和 SQL 完成我想要的任務,只需幾分鐘,但我感覺我正在用靴子追尋螞蟻山。
我嘗試使用資料透視表進行此操作,但是我對資料透視表缺乏經驗,無法獲得我滿意的結果。
大型員工資料集包含諸如開始日期、當前部門、專業技能集等內容(您所期望的正常內容)。
我想在其他工作表上建立動態表,例如顯示在 X 部門工作的所有員工或具有 Y 專業技能的所有員工。顯然,我希望在主資料集上變更或新增資料時更新工作表。
我是否認為這裡有一個簡單的解決方案,或者我是否需要使用實際的資料庫來實現它?
答案1
我想建議基於 Excel 函數的方法,將記錄從來源表過濾/提取到另一個表。
來源表:
怎麼運作的:
- 如果條件儲存格為空,則公式不會傳回記錄。
- 公式適用於單一和多個條件。
情況一:
情況2:
- 單元格中的數組公式
B31
:
{=IFERROR(IF(AND(ISBLANK($B$27),ISBLANK($C$27),ISBLANK($D$27),ISBLANK($E$27),ISBLANK($F$27),ISBLANK($G$27),ISBLANK($H$27))," ",INDEX($B$2:$H$21,SMALL(IF(MMULT(($B$2:$H$21=$B$27:$H$27)*1,{1;1;1;1;1;1;1})=COUNTA($B$27:$H$27),MATCH(ROW($B$2:$B$21),ROW($B$2:$B$21)),""),ROWS($A$1:A1)),COLUMNS($A$1:A1))),"")}
- 完成公式Ctrl+Shift+Enter並填充。
- 這個練習的主要特點是
MMULT
功能。 - MMULT(矩陣乘法)傳回兩個陣列的矩陣乘積。
- array1 的列數等於 array2 的行數。
- 陣列結果包含與 array1 相同數量的行以及與 array2 相同數量的列。
根據需要調整公式中的儲存格引用。