2012年11月13日 星期二

【Excel】INDIRECT,不可不知對欄位的"兇器"…更正…"利器"啦~( Lesson 1/1)


今兒個某位學員在製作記帳總表…因為要把每月結餘金額連結帶到總表…
必需一個個寫入「='1月'!BN6」、「='2月'!BN6」…一路寫到12月…再改第二列

依他的總表,至少需對應400個以上的欄位…這的確是件辛苦的事情~

老師佛心來的~當然,交情不同咩~一句"傳來"~
只要利用INDIRECT這個函數…可以簡單的讓欄位名稱(例:'1月'!BN6),成為一個字串帶入…
大家知道,"字串"這個東東,代表你可以隨心所欲的用規則產生…

所以你可以產生欄位位置的字串…再例用這個函數去取得該欄位的"值"



作法及原理:
INDIRECT(欄位位置字串 , (真)位置判為A1的格式 / (假)位置判為R1C1的格式)

A1的格式:就是我們常見欄位位置的表示方式,例如A1、B1
R1C1的格式:以「列數+欄數」為表示方式,例如R2C3代表第二列第3欄…就是指C2囉~

《1》總表 C2裡函數要對應的位置是「'1月'!BN6」…月份我們可以例用C1的值來產生…其它的部份就直接加上雙引號,讓它變成字串即可
="'"&C$1&"月'!BN6"

《2》將欄位位置產生字串的計算式帶入函數裡…就完成了「一月份當月總計[薪資]」的對應囉
=INDIRECT("'"&C$1&"月'!BN6",TRUE)

直接將一月份薪資總計的計算式(C2)…複製到其它月份(D2:N2)…就完成囉!
其它列的對應,比照此模式~

就可以有效的把400次,減為30次囉~~





3 則留言:

  1. 感謝您的解說……原來indirect是把欄位的表示變成字串@@看了好多人的解說都沒您的說明清楚!

    回覆刪除
  2. =HLOOKUP("aaa",INDIRECT("工作表1!$A$1:$Z$100"),1,false)

    請問我想找工作表1的內容為"aaa"欄位的右邊第二欄位應該要如何改呢 ? 謝謝 ~

    回覆刪除
  3. 感謝版主的教學,請問INDIRECT 函數,工作表名稱加上"-",如 中租-KY,就無法顯示內容,有解嗎?
    謝謝!

    回覆刪除