網友問到:在 Excel 中有多個工作表,例如:31個,其工作表名稱為 1~31,如何快速在這些工作表的相同儲存格中產生某一個月中每一天的日期?
例如:參考下圖,其中有 5 個工作表(名稱:1~5),每個工作表的儲存格A2要輸入 2015年8月的某一天的日期(日期為工作表名稱之數字)
參考作法:
1. 新增一個活頁簿,並且先命名存檔。
2. 建立 31 個工作表,名稱定為:1~31。
3. 選取這 31 個工作表。(先選工作表:1,按著 Shift 鍵,再選取工作表:31)
4. 按一下儲存格A2。(選取儲存格A2)
5. 輸入公式:=DATE(2015,8,MID(CELL("filename", A1),FIND("]",
CELL("filename", A1)) + 1, 255))
6. 按下 Enter 鍵後,即會在工作表 1~31 的儲存格A2中,產生 2015/8/1~2015/8/31 的日期。
【公式說明】
CELL("filename", A1):傳回該檔案的完整名稱,格式:[路徑/檔案名稱]工作表名稱。其中參數 A1 沒有特別意義。
FIND("]", CELL("filename", A1)):找出檔案完整路徑中的「]」位置,傳回第幾個字的數字。
MID(CELL("filename", A1),FIND("]", CELL("filename", A1)) + 1, 255):傳回工作表名稱,此名稱代表日期的數字。
最後透過 DATE 函數,代入年:2015、月:8、日:工作表名稱,即可轉換為一個日期。
CELL 函數的參數如下:
【補充資料】
語法:CELL(info_type, [reference])
info_type |
傳回 |
"address" |
以文字形式表示 reference 中第一個儲存格的位址。 |
"col" |
Reference 中儲存格的欄名。 |
"color" |
如果儲存格設定為會因負數而改變色彩的格式,則傳回 1;否則傳回 0 (零)。 |
"contents" |
參照左上角儲存格的數值;不是公式。 |
"filename" |
以文字形式傳回 reference 所屬文件的檔案名稱 (包含完整的路徑名稱)。如果該文件尚未存檔,則傳回空字串 ("")。 |
"format" |
對應於數值儲存格格式的文字表示形式。各種格式的文字表示列示於以下的表格中。如果儲存格為會因負數而改變色彩,則傳回的文字值的後面會帶有負號 (-)。如果儲存格被設定為將正數或任何數值放在一組括弧中的格式時,則在傳回的文字值的後面加一組 "()"。 |
"parentheses" |
如果儲存格格式設定為將正數或所有數值放在一組括弧中,傳回 1;否則傳回0。 |
"prefix" |
文字儲存格的「標籤首碼」的文字表示形式。如果該儲存格含有靠左對齊的文字時,傳回單引號 (');如果該儲存格中含有靠右對齊的文字時,傳回雙引號 (");如果該儲存格中含有置中對齊的文字時,傳回脫字符號 (^);如果該儲存格中含有填滿對齊的文字時,傳回反斜線 (\);如果該儲存格含有其他的資料,則傳回空字串 ("")。 |
"protect" |
如果儲存格並未鎖定保護,傳回 0;如果儲存格已鎖定保護,則傳回 1。 |
"row" |
參照位址中儲存格的列號。 |
"type" |
儲存格中資料類型的一個對應文字值。如果該儲存格是空白的,傳回「b」(代表blank),如果該儲存格含有文字常數,則傳回標籤「l」(代表 label);如果該儲存格中含有其他類別的資料,則傳回「v」(代表 value)。 |
"width" |
儲存格欄寬四捨五入成整數值。每個欄寬單位都等於預設字型大小的一個字元寬度。 |
留言列表