guthub_gist_程式碼區塊

2017年7月10日 星期一

Excel中判斷儲存格內是否有公式的方法 (How to know if there is a formula in the cell of Microsoft EXCEL ?)




EXCEL是個超級好用的軟體,讓我們一起發掘它無窮的潛力!!
這裡直接放一個範本檔 (https://goo.gl/jHwxXW)


概要

  • [問題]
    一張Excel表格中,數字很多,有的是使用者要直接填值,而且常常需要更改;但有些是用公式去參考別的儲存格作運算,很容易被誤改掉。
  • [思路]
    若是有方法能快速判斷Excel儲存格內是否有公式存在,然後在有公式的儲存格上標出不同顏色或特別的字型,也就能容易避免被誤改掉了。再進一步把有公式的儲存格強制保護起來,也就可以不被誤改了。
  • [實作]
    分成兩大步驟
    • Part 1. 判斷儲存格內是否有公式並標色
      • 待會會提到三種方法,建議用 [方法二] 實作,並可用 [方法一] 快速驗證有無寫錯。
      • 三種方法在下一段”Part 1 詳述”中
    • Part 2. 鎖定儲存格,不給改。要做到下面三個小步驟
      • 把所有的儲存格先都設定成不保護的屬性:Excel 2010 -> 選擇全部的儲存格(直接按左上角) ->右鍵->儲存格格式->保護->鎖定不要勾選->確定
      • 選取內含公式的儲存格設定成要保護的屬性:如[方法一],然後->右鍵->儲存格格式->保護->鎖定要勾選->確定
      • 執行儲存格保護,上鎖:Excel 2010 -> 校閱 -> 保護工作表 ->輸入密碼(若怕忘了密碼也可以留空白不設定)->再次輸入密碼->確定



Part 1 詳述

[方法一] 適用:想用滑鼠快速選出來時

按法
Excel 2010 -> 常用 -> 編輯小項 -> 尋找與選取 ->公式-> Excel會把所有用公式的儲存格圈選起來
Excel 2010 -> (直接按F5也行) -> 特殊 ->公式-> Excel會把所有用公式的儲存格圈選起來


[方法二] 要寫簡單的 VBA 程式碼(給office用的巨集語言)

  • 但存檔時要存成xlsm。優點:可以快速複製給其他儲存格使用。
  • 打開Excel後,按ALT+F11打開VBA編輯器,在活頁簿下右鍵插入一個模組(才能寫Code),然後在右邊代碼框裡貼上下列代碼。

  • 選取想要判斷的儲存格(假設是D4)->點選Excel選單列的常用->樣式->設定格式化的條件->新增規則->使用公式來決定….->填入”=IsFormulaInCell(D4)=TRUE”–>格式–>選個字型顏色–>確定–>確定
  • DONE


[方法三] 用”宏表函數”(巨集函數)來判斷,沒有程式碼

  • 但存檔時要存成xlsm。缺點:步驟最複雜。
  • “宏表函數”–>早期低版本excel 4.0中使用的,現在已由VBA頂替它的功能,但還是能用。(話說目前excel 2010已經是excel 14.0了~)
  • Excel 2010 -> 公式 ->名稱管理員(CTRL+F3, Name Manager)->新增一個名稱叫做「是否內含公式」,它的”參照到(Reference)”內容請寫
  • 然後在一個任意的儲存格上寫下下列文字, (請完全照抄)
  • 最後就此儲存格就會有True or False回報
  • DONE
  • 備註1:工具->巨集->安全性->設置為低或中才可以
  • 備註2:
    GET.CELL函數的詳細用法及實例介紹
Excel中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
  這樣就得到了最終的結果了。

沒有留言:

張貼留言