問題情境
彙總查詢表”部門費用“如下,其中A2單元格是下拉菜單,內容是12個月份。
查詢表”部門費用“中12個月份的數據來源於同一工作薄中不同的12個以月份命名的工作表:
彙總並查詢效果如下:
公式實現
在B3單元格輸入公式:“=INDIRECT($A$2&"!"&ADDRESS(ROW(2:2),COLUMN(B:B),4))“,按Enter鍵結束計算,並將公式向右向下填充,可得結果。
如下圖:
公式解析
公式為“=INDIRECT($A$2&"!"&ADDRESS(ROW(2:2),COLUMN(B:B),4))“,其中:
ROW(2:2):該部分公式返回值為2,即所取數據來源於第2行,當公式向下填充時,本部分返回值隨公式填充而改變,每向下填充一行,返回值加1,公式向右填充,返回值不變;
COLUMN(B:B):該部分公式返回值為2,即所取數據來源於第2列,當公式向右填充時,本部分返回值隨公式填充而改變,每向右填充一列,返回值加1,公式向下填充,返回值不變;
ADDRESS(ROW(2:2),COLUMN(B:B),4):該部分公式返回值為B2,即所取數據來源於B2單元格,公式每下向填充一行,行數加1,每向右填充一列,列數加1;
$A$2&"!"&ADDRESS(ROW(2:2),COLUMN(B:B),4):該部分公式返回值為A2單元格指向的工作表,即1月的B2單元格。由於月份均在A2單元格,所以此單元格絕對引用,不隨公式的填充而改變;
INDIRECT($A$2&"!"&ADDRESS(ROW(2:2),COLUMN(B:B),4)):該部分公式返回A2向的工作表的B2單元格數據。
函數解析
附函數ADDRESS的用法:
【功能】
ADDRESS 函數,根據指定行號和列號獲得工作表中的某個單元格的地址。例如,ADDRESS(2,3) 返回 $C$2。再例如,ADDRESS(77,300) 返回 $KN$77。可以使用其他函數(如 ROW 和 COLUMN 函數)為ADDRESS 函數提供行號和列號參數。
【語法】
ADDRESS(row_num, column_num, [abs_num],[a1], [sheet_text])
【中文語法】
ADDRESS(行號, 列號, [引用類型],[引用樣式], [引用工作表])
【參數】
- row_num 必需。一個數值,指定要在單元格引用中使用的行號。
- column_num 必需。一個數值,指定要在單元格引用中使用的列號。
- abs_num 可選。一個數值,指定要返回的引用類型。不同數字對應的引用類型如下表
- a1 可選。 一個邏輯值,指定 A1 或 R1C1 引用樣式。在 A1 樣式中,列和行將分別按字母和數字順序添加標籤。 在 R1C1 引用樣式中,列和行均按數字順序添加標籤。如果參數 A1 為 TRUE 或被省略,則 ADDRESS 函數返回 A1 樣式引用;如果為 FALSE,則 ADDRESS 函數返回 R1C1 樣式引用。
- sheet_text 可選。一個文本值, 指定要用作外部引用的工作表的名稱。例如, 公式=ADDRESS (1, 1,,,"Sheet2")返回Sheet2! $A $1。如果省略了sheet_text參數, 則不使用工作表名稱, 並且該函數返回的地址引用當前工作表上的單元格。
閱讀更多 韓老師講office 的文章