
Excel中系統自帶的RAND、TODAY和NOW等函數都屬于易失性函數,簡單地說就是使用這些函數得到的結果是靠不住的,會隨著我們按一次F9鍵,執行一次其他運算,甚至在自動重算開啟時在空白單元格中錄入內容都有可能會改變這些函數的返回結果。這里我們以NOW函數為例,告訴大家如何快速地記錄當前時間而又不會變化。
一、易失性函數的弊端
在前面摘要部分我們已經提到了,易失性函數會隨著我們的一些操作而發生不必要的變化,這里我們舉個例子:比如有位客服人員需要記錄下客戶投訴的原因以及投訴的具體時間,于是制作了下表并寫好了公式。
結果發現雖然增加A列的新數據可以在B列自動得到當前時間,但只要對表內任意單元格做了修改,所有B列的時間全都自動重算,不再是當時記錄的時間了。但是我們又不能將自動重算的命令關閉,那該如何解決呢?
二、方法A:借助數據驗證功能
首先我們選擇一個旁邊的空白單元格,在里面寫好NOW函數得到當前時間:接下來我們選中C列要錄入時間的單元格,打開【數據】選項卡下的【數據驗證】命令(2010及以前的版本叫做【數據有效性】),選擇允許值為“序列”,來源引用剛剛寫了NOW函數的單元格。
接下來每次記錄了新的投訴原因后,直接在C列的下拉菜單處選擇菜單里的當前時間即可。
三、方法B:借助迭代計算功能
若覺得剛才的方法要手動選擇菜單,還不夠完美的話,這還有另一種方法:先清除A列已經錄入的數據,在D3單元格輸入公式:=IF(A3="","",IF(D3="",NOW(),D3))當按Enter確認錄入時,系統會提示我們此處有循環引用。因為在D3單元格的公式里引用了D3。不過沒關系,此處先暫時點擊確定,單元格中還沒有結果出現。
接下來,我們在【文件】選項卡下找到【選項】,選擇【公式】菜單,勾選“啟用迭代計算”,點擊“確定”。這時,我們在A3單元格錄入投訴原因,D3單元格中自動出現了結果,只是格式還不是我們需要的日期時間格式。我們將D3單元格的公式復制下來,設置D列的單元格格式為自定義格式:“yyyy/mm/dd hh:mm:ss”。
然后我們就可以看到D3單元格出現了正確的結果。后續只要增加新的投訴原因記錄,D列都會自動生成當前時間,還不會變化,非常方便。
最后總結一下,本文中我們給大家介紹了易失性函數的弊端,并以NOW函數獲取當前時間為例,分別應用數據驗證法和迭代計算法改良了NOW函數,使其結果不會自動發生不必要的變化。這些方法大家也可以擴展到其他易失性函數的使用中,當然還可以用VBA代碼來解決類似問題,這里我們就不詳細展開啦。 注:尊重原創文章,轉載請注明出處和鏈接 http://www.dedgn.cn/news-id-19556.html 違者必究!部分文章來源于網絡由培訓無憂網編輯部人員整理發布,內容真實性請自行核實或聯系我們,了解更多相關資訊請關注辦公軟件頻道查看更多,了解相關專業課程信息您可在線咨詢也可免費申請試課。關注官方微信了解更多:150 3333 6050