回覆列表
  • 1 # 快樂與我同行9

    可以使用indirect函式來返回引用。如果表名有規律,如sheet1、sheet2……sheetn,可以直接引用,如果表名沒規律,得先用宏表函式取出表名,再引用。

    以下圖為例,假設工作表分別為sheet1-sheet5,各表的a1單元格分別為1-5,彙總表在後面,要把各分表的a1單元格取到彙總表。

    方法一:表名有規律的方法。

    b1?=iferror(indirect("sheet"&row()&"!a1"),"")

    公式下拉複製,就可以了,如上圖。

    方法二:表名沒有規律的方法。

    步驟1:定義名稱x如下

    =replace(get.workbook(1),1,find("]",get.workbook(1)),"")

    步驟2:a1輸入公式

    =if(row()>columns(x)-1,"",index(x,row()))

    公式下拉到足夠容納所有工作表名

    步驟3:c1輸入公式

    =iferror(indirect(a1&"!a1"),"")

    公式下拉,結果如下圖

    知識擴充套件:

    1、get.workbook(1)是4.0宏表函式,以“[工作簿1.xlsm]sheet1”的形式返回所有工作表名的水平陣列,再用replace函式把工作簿名去掉,只保留所有工作表名,再用index函式逐個取出。

    2、由於使用了4.0宏表函式,因此,工作簿必須儲存為啟用宏的工作簿(*.xlsm),不能儲存為不啟用宏的工作簿格式(*.xlsx)。

    3、indierect函式的用途就是,返回由文字字串指定的引用,如=indirect("sheet1!a1"),就是返回sheet1工作表的a1單元格的值,工作表名用“!”表示。

  • 中秋節和大豐收的關聯?
  • 人為什麼對美食情有獨鍾,即使排隊也要買?