excel怎么自動(dòng)計(jì)算出表格中的計(jì)算公式這應(yīng)該是現(xiàn)在很多的辦公的人都是需要面對的,那么你一般都是用什么樣子的方法去解決的了?現(xiàn)在就可以試試下面的這些方法吧!
方法一二都是在office2003里面的,簡單的說就是使用宏。有些情況下,比如工程結(jié)算單,通常在左邊一個(gè)單元格寫上表達(dá)式,比如:5*6-3,方便別人核對計(jì)算過程,右邊一個(gè)單元格放置計(jì)算結(jié)果,比如:27。
如果發(fā)現(xiàn)左邊單元格中的計(jì)算表達(dá)式不對,進(jìn)行了修改,比如修改為:5*5-6,那么右邊單元格必須立刻根據(jù)左邊單元格的表達(dá)式,自動(dòng)更新結(jié)果19。
如果要實(shí)現(xiàn)這樣的功能,表面上看起來很難,實(shí)際上只要用好Evaluate功能就很簡單。
(特別說明:因EVALUATE為4.0宏函數(shù),在工作表中不能直接使用,只能在定義單元格名稱、宏(VBA代碼)中使用)
方法一:
難度系數(shù):很難
比如A1單元格中放置表達(dá)式,A2單元格放置計(jì)算結(jié)果,那么,
1、先選中B1單元格,依次點(diǎn)擊:菜單->插入->名稱->定義:x=EVALUATE(A1),點(diǎn)確定。
2、在B1單元格輸入公式:=x這時(shí)候,如果A1單元格中是表達(dá)式:5*5-6,這時(shí)候A2的值就會(huì)為19:
(補(bǔ)充說明:如果A1沒有內(nèi)容,或者根本不是可以進(jìn)行運(yùn)算的表達(dá)式,那么B1單元格的公式可以設(shè)置為=IF(NOT(ISERR(x)),x,0),這樣可以過濾掉錯(cuò)誤結(jié)果。)
如果要同樣的方法計(jì)算B2,b3...,只要進(jìn)行拖動(dòng)復(fù)制就可以了。
方法二:自定義函數(shù)
難度系數(shù):較難
第一步:添加自定義函數(shù)
在當(dāng)前文檔的Visual Basic工程中添加一個(gè)模塊,并輸入下面的函數(shù):
Function JS(表達(dá)式 As String)
JS = Application.Evaluate(表達(dá)式)
End Function
特別提示:
搞工程的朋友可能經(jīng)常用到表達(dá)式的長度超過255個(gè)字符,上面這個(gè)JS函數(shù)就不能用了,要用SuperJS函數(shù):
Function SuperJS(表達(dá)式 As String)
With CreateObject("MSScriptControl.ScriptControl")
.Language = "vbscript"
SuperJS = .eval_r(表達(dá)式)
End With
End Function
第二步:使用JS函數(shù) SuperJS函數(shù)
添加完函數(shù)后,回到工作表,這時(shí)就可以和其他函數(shù)一樣使用js函數(shù)了。
比如在單元格輸入 =js(A1),若A1單元格內(nèi)是個(gè)表達(dá)式 5*6-3,則返回這個(gè)表達(dá)式的運(yùn)算結(jié)果27。
方法三:使用軟件
難度系數(shù):容易
軟件很強(qiáng)大,需要你自己去網(wǎng)上下載!