Thursday, September 22, 2011

Excel資料欄顯示工作表名稱

Excel欄位可以設定成自動顯示工作表(worksheet)的名稱,譬如說一個成績單檔案中,一張工作表代表一個學生的成績,工作表的名稱設成學生的名字。這時在工作表中某個欄位輸入下面的內容就可在那個爛位直接顯示該學生的名字:
=MID(CELL("filename", A1),FIND("]", CELL("filename", A1)) + 1, 255)

說明
CELL
這裡面最重要的就是CELL函數。CELL可以回傳很多種關於Excel檔案中某欄位的相關資料。如果第一個參數是"filename",他就會回傳這個檔案的完整路徑及工作表名稱的字串,其中完整路徑會用中括號包起來,如下:
[C:\Book1.xls]Sheet1
上面字串的意思是在C:\Book1.xls檔案中叫做Sheet1的工作表。

CELL第二個函數是指定回傳哪一個資料欄的相關資料,因為我們只是要取得工作表的名稱,所以哪一個欄位不太重要,我們就直接指定A1,也就是左上角第一個欄位。如果沒有指定資料欄,這個函數會回傳最後一個被更動欄位的相關資料。

MID
MID是拿來擷取部分字串的函數,我們使用MID從CELL回傳的字串中擷取工作表名稱。第一個參數是要開始擷取的位置(從第幾個字開始抓),第二個參數是指定要抓多長的字串。我們用FIND找到右邊中括號(])是在字串中第幾個位置,然後指定要抓255長度的字串。因為Excel工作表名稱不得超過31個字,所以擷取255個字是綽綽有餘。當字串已被擷取到最後一個字後,就不會再繼續抓了。

FIND
FIND就是在字串中找出另一個字串在裡頭的位置。第一個參數是要找到的內容,第二個參數是被搜尋的字串。