

EXCEL是個超級好用的軟體,讓我們一起發掘它無窮的潛力!!
這裡直接放一個範本檔 (https://goo.gl/jHwxXW)
概要
- [問題]
一張Excel表格中,數字很多,有的是使用者要直接填值,而且常常需要更改;但有些是用公式去參考別的儲存格作運算,很容易被誤改掉。 - [思路]
若是有方法能快速判斷Excel儲存格內是否有公式存在,然後在有公式的儲存格上標出不同顏色或特別的字型,也就能容易避免被誤改掉了。再進一步把有公式的儲存格強制保護起來,也就可以不被誤改了。 - [實作]
分成兩大步驟
- Part 1. 判斷儲存格內是否有公式並標色
- 待會會提到三種方法,建議用 [方法二] 實作,並可用 [方法一] 快速驗證有無寫錯。
- 三種方法在下一段”Part 1 詳述”中
- Part 2. 鎖定儲存格,不給改。要做到下面三個小步驟
- 把所有的儲存格先都設定成不保護的屬性:Excel 2010 -> 選擇全部的儲存格(直接按左上角) ->右鍵->儲存格格式->保護->鎖定不要勾選->確定
- 選取內含公式的儲存格設定成要保護的屬性:如[方法一],然後->右鍵->儲存格格式->保護->鎖定要勾選->確定
- 執行儲存格保護,上鎖:Excel 2010 -> 校閱 -> 保護工作表 ->輸入密碼(若怕忘了密碼也可以留空白不設定)->再次輸入密碼->確定
- Part 1. 判斷儲存格內是否有公式並標色
Part 1 詳述:
[方法一] 適用:想用滑鼠快速選出來時
按法 | ||
---|---|---|
Excel 2010 | -> 常用 -> 編輯小項 -> 尋找與選取 | ->公式-> Excel會把所有用公式的儲存格圈選起來 |
Excel 2010 | -> (直接按F5也行) -> 特殊 | ->公式-> Excel會把所有用公式的儲存格圈選起來 |
[方法二] 要寫簡單的 VBA 程式碼(給office用的巨集語言)
- 但存檔時要存成xlsm。優點:可以快速複製給其他儲存格使用。
- 打開Excel後,按ALT+F11打開VBA編輯器,在活頁簿下右鍵插入一個模組(才能寫Code),然後在右邊代碼框裡貼上下列代碼。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Public Function IsFormulaInCell(C As Range) | |
Application.Volatile | |
IsFormulaInCell = Range(C.Address).HasFormula | |
End Function | |
Rem If IsFormulaInCell Then | |
Rem MsgBox “有公式” | |
Rem Else | |
Rem MsgBox “沒有公式” | |
Rem End If | |
Rem 代碼解釋:b2表示B2單元格,上面的代碼就是利用 Range.HasFormula 屬性和IF語句來判斷單元格是否有公式。 |
- 選取想要判斷的儲存格(假設是D4)->點選Excel選單列的常用->樣式->設定格式化的條件->新增規則->使用公式來決定….->填入”=IsFormulaInCell(D4)=TRUE”–>格式–>選個字型顏色–>確定–>確定
- DONE
[方法三] 用”宏表函數”(巨集函數)來判斷,沒有程式碼
- 但存檔時要存成xlsm。缺點:步驟最複雜。
- “宏表函數”–>早期低版本excel 4.0中使用的,現在已由VBA頂替它的功能,但還是能用。(話說目前excel 2010已經是excel 14.0了~)
- Excel 2010 -> 公式 ->名稱管理員(CTRL+F3, Name Manager)->新增一個名稱叫做「是否內含公式」,它的”參照到(Reference)”內容請寫
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters=Get.cell(6,這裡選取儲存格) - 然後在一個任意的儲存格上寫下下列文字, (請完全照抄)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters=LEFT(是否內含公式)="=" - 最後就此儲存格就會有True or False回報
- DONE
- 備註1:工具->巨集->安全性->設置為低或中才可以
- 備註2:
GET.CELL函數的詳細用法及實例介紹
Get.Cell函數的語法如下介紹:
=Get.Cell(類型號,單元格引用)
其中常用的類型號對應的含義如下介紹:範圍為1-66,也就是說Get.Cell函數可以返回一個單元格里66種信息。
典型及常用的類型號及代表的意思有:
6——以文本顯示單元格的公式
13——單元格填充顏色編碼數字
20——如果單元格所有或第一個字符為加粗,返回True
21——如果單元格所有或第一個字符為斜體,返回True
22——如果單元格所有或第一個字符為單底線,返回True
23——如果單元格所有或第一個字符中間加了一條刪除線,返回True
24——單元格第一個 的顏色編碼數字。
63——單元格填充顏色(背景)編碼數字。
64——單元格填充顏色(前景)編碼數字。
Get.Cell函數按照常規方法在單元格中輸入是沒有任何用處的,還會提示函數無效。
Get.Cell函數不能寫在公式裡,一般的使用時,都是寫在名稱(Name Manager)。
比如要獲取A1單元格里的數據格式,結果想顯示在B1,則步驟如下:
第一,任選一個單元格–>菜單中的插入—>名稱–>定義
第二,在名稱稱輸入任意名稱(比如為hhh)
第三,在引用位置上寫入=GET.CELL(7,Sheet1!A1)
第四,點擊添加;
第五,在B1單元格里輸入=hhh
這樣就得到了最終的結果了。