??? 一般情況下,我們都采用EXCEL編寫表格,因為EXCEL具有容易計算、公式簡單清晰、編排方便等特點。如果要在WORD文檔中插入表格,從EXCEL中復制表格到WORD是一個辦法,可是復制過來的表格會被轉換為文字,原有的公式特性不復存在,而且直接粘貼的EXCEL表格還面臨表格樣式、文字格式等需要調整的麻煩,因此,對一些較簡單的計算表格,不如直接在WORD中編寫更為容易。
?
?
一、利用域在Word中實現計算功能
?
轉載自:
http://www.yanr.cn/Feature/Word/word/18.html#1
1.計算表格行或列
(1)計算表格行
假如需要計算表格行數據的平均值,如果存放計算結果的空白單元格在數據行的右邊,可以把光標插入緊靠數據右端的空白單元格。按下Ctrl+F9組合鍵把域特征字符“{}”插入單元格,然后在大括號中間輸入“=Average(left)”,完成后按下F9鍵更新,即可獲得計算結果。
如果存放計算結果的空白單元格位于數據行的左邊,只須按上述方法在緊靠數據左邊的單元格中插入公式“=Average(right)”即可。
(2)計算表格列
計算表格列的方法和計算表格行非常相似,如果我們要計算某列中所有數據的平均值,而存放計算結果的空白單元格位于數據上面。只要按上述方法在其中插入公式“=Average(above)”,然后更新即可獲得結果。如果存放計算結果的空白單元格位于數據下面,只要把公式修改為“=Average(below)”即可。
如果需要執行的計算是求和、尋找最大值、最小值等,只要把上述公式(域代碼)中的函數名稱改為Sum、Max和Min等即可。如果所計算的行或列中含有英文字母和漢字,則計算中均把它們當作“0”處理。
2.計算任意單元格
假如計算對象不是存放在連續的數據行或列中,我們可以把表格看成一個Excel表格,也就是表格左邊第一列是A列、第二列是B列……,表格自上而下分別是第1行、第2行……。再按照類似Excel的公式構造原則進行計算,下面以Sum函數和If函數為例進行介紹。
(1)對任意單元格求和
假設表格第一行左起第一至三單元格(即A1、B1、C1)存放著“36 580”、“18 580”和“26 980”,第二行第三個單元格(即C3)存放著“52 360”,第四行第五個單元格(即E4)存放著“36 190”。你只需在存放計算結果的單元格中輸入“{=Sum(A1:C1,D2,E4)}”,更新域后即可獲得計算結果。如果被計算的數據發生了變化,只要對域進行更新就可以獲得正確的結果。
(2)If函數的判斷求和
表格的第一列(A)存放著“姓名”,第二列(B)存放著“崗位工資”的數值,第三列(C)存放著“技能工資”的數值。假如“崗位工資”高于1 800元的員工需要額外加上200元的補貼,可以在第四列的空白單元格中輸入“{=If(B2>1800,Sum(B2:C2,200),Sum(B2:C2))}”。該公式經過更新以后,若B2、B3等單元格中的數值大于1 800,則執行“Sum(B2:C2,200)”,也就是將B2、C2中的數值和200相加;若B2、B3等單元格中的數值小于1 800,則執行“Sum(B2:C2)”,也就是將B2、C2中的數值相加。
注意:除上面介紹的方法在單元格中插入公式(域代碼)以外,還可以單擊“表格→公式”菜單命令,在出現的對話框中進行設置;或者打開“域”對話框選中“域名”下的“Formula”項,再單擊“公式”按鈕,都可以打開“公式”對話框插入所需的公式。
?
1.計算表格行或列
(1)計算表格行
假如需要計算表格行數據的平均值,如果存放計算結果的空白單元格在數據行的右邊,可以把光標插入緊靠數據右端的空白單元格。按下Ctrl+F9組合鍵把域特征字符“{}”插入單元格,然后在大括號中間輸入“=Average(left)”,完成后按下F9鍵更新,即可獲得計算結果。
如果存放計算結果的空白單元格位于數據行的左邊,只須按上述方法在緊靠數據左邊的單元格中插入公式“=Average(right)”即可。
(2)計算表格列
計算表格列的方法和計算表格行非常相似,如果我們要計算某列中所有數據的平均值,而存放計算結果的空白單元格位于數據上面。只要按上述方法在其中插入公式“=Average(above)”,然后更新即可獲得結果。如果存放計算結果的空白單元格位于數據下面,只要把公式修改為“=Average(below)”即可。
如果需要執行的計算是求和、尋找最大值、最小值等,只要把上述公式(域代碼)中的函數名稱改為Sum、Max和Min等即可。如果所計算的行或列中含有英文字母和漢字,則計算中均把它們當作“0”處理。
2.計算任意單元格
假如計算對象不是存放在連續的數據行或列中,我們可以把表格看成一個Excel表格,也就是表格左邊第一列是A列、第二列是B列……,表格自上而下分別是第1行、第2行……。再按照類似Excel的公式構造原則進行計算,下面以Sum函數和If函數為例進行介紹。
(1)對任意單元格求和
假設表格第一行左起第一至三單元格(即A1、B1、C1)存放著“36 580”、“18 580”和“26 980”,第二行第三個單元格(即C3)存放著“52 360”,第四行第五個單元格(即E4)存放著“36 190”。你只需在存放計算結果的單元格中輸入“{=Sum(A1:C1,D2,E4)}”,更新域后即可獲得計算結果。如果被計算的數據發生了變化,只要對域進行更新就可以獲得正確的結果。
(2)If函數的判斷求和
表格的第一列(A)存放著“姓名”,第二列(B)存放著“崗位工資”的數值,第三列(C)存放著“技能工資”的數值。假如“崗位工資”高于1 800元的員工需要額外加上200元的補貼,可以在第四列的空白單元格中輸入“{=If(B2>1800,Sum(B2:C2,200),Sum(B2:C2))}”。該公式經過更新以后,若B2、B3等單元格中的數值大于1 800,則執行“Sum(B2:C2,200)”,也就是將B2、C2中的數值和200相加;若B2、B3等單元格中的數值小于1 800,則執行“Sum(B2:C2)”,也就是將B2、C2中的數值相加。
注意:除上面介紹的方法在單元格中插入公式(域代碼)以外,還可以單擊“表格→公式”菜單命令,在出現的對話框中進行設置;或者打開“域”對話框選中“域名”下的“Formula”項,再單擊“公式”按鈕,都可以打開“公式”對話框插入所需的公式。
?
二、實例
??? 如下表所示,表中藍色數據表示填入的數據,數據填入后要在合計和總計中進行價格計算。
?單價是在B列,數量在C列,則第一個合計單元格的計算公式為B2×C2。將光標放至第一個合計單元格中,點擊“插入”菜單>>“域”,在域對話框中點擊“公式”,在“公式”對話框中輸入“=B2*C2”,然后按確定按鈕。
?
插入域后的結果如下表所示:
第二個合計單元格的計算公式為“=B3*C3”;總計單元格的計算公式為“=SUM(D1:D2)”。 最后效果如下表所示。
?單價是在B列,數量在C列,則第一個合計單元格的計算公式為B2×C2。將光標放至第一個合計單元格中,點擊“插入”菜單>>“域”,在域對話框中點擊“公式”,在“公式”對話框中輸入“=B2*C2”,然后按確定按鈕。
?
插入域后的結果如下表所示:
第二個合計單元格的計算公式為“=B3*C3”;總計單元格的計算公式為“=SUM(D1:D2)”。 最后效果如下表所示。
三、自動更新
表格編完了,但是還有一個問題:WORD不能象EXCEL那樣自動進行域更新,手動更新的話要點中域,然后按F9鍵一個一個更新,這樣非常麻煩。而且如果有哪個數據忘了更新,結果就會出錯。看來,還得編個自動更新的代碼。
?
自動更新代碼(1): 每次打開文檔時自動更新所有域;或者在文檔編輯過程中運行該宏也能自動更新。
?
自動更新代碼(1): 每次打開文檔時自動更新所有域;或者在文檔編輯過程中運行該宏也能自動更新。
轉載自:
http://blog.hanguofeng.com/read.php?444
??????? Sub AutoOpen()
????????? Dim aStory As Range
????????? Dim aField As Field
????????? For Each aStory In ActiveDocument.StoryRanges
???????????? For Each aField In aStory.Fields
??????????????? aField.Update
???????????? Next aField
????????? Next aStory
?????? End Sub
?
每分鐘自動更新一次的代碼(2): 每隔1分鐘自動更新一次。
??????? Sub AutoOpen()
????????? Dim aStory As Range
????????? Dim aField As Field
????????? For Each aStory In ActiveDocument.StoryRanges
???????????? For Each aField In aStory.Fields
??????????????? aField.Update
???????????? Next aField
????????? Next aStory
?????? End Sub
?
每分鐘自動更新一次的代碼(2): 每隔1分鐘自動更新一次。
轉載自:
http://redwin.bokee.com/37531.html
Dim pTime As Date
Sub Runtimer()
?? pTime = Now + TimeValue("00:01:00")
?? Application.OnTime pTime, "AutoUpdate"
End Sub
Dim pTime As Date
Sub Runtimer()
?? pTime = Now + TimeValue("00:01:00")
?? Application.OnTime pTime, "AutoUpdate"
End Sub
Sub AutoUpdate()
?'自動更新域公式
'By redwin? 2003-12-29
On Error Resume Next
r = Selection.Information(wdFirstCharacterLineNumber)
With Selection
? .WholeStory
? .Fields.Update
? '返回至原光標所在位置
? .GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=r, Name:=""
?End With
Runtimer
End Sub
Sub BeforeCloseA()
?'On Error Resume Next
?'Application.OnTime pTime, "AutoUpdate", , False
End Sub
?'自動更新域公式
'By redwin? 2003-12-29
On Error Resume Next
r = Selection.Information(wdFirstCharacterLineNumber)
With Selection
? .WholeStory
? .Fields.Update
? '返回至原光標所在位置
? .GoTo What:=wdGoToLine, Which:=wdGoToFirst, Count:=r, Name:=""
?End With
Runtimer
End Sub
Sub BeforeCloseA()
?'On Error Resume Next
?'Application.OnTime pTime, "AutoUpdate", , False
End Sub
?
??? 兩種代碼各有優點。代碼(1)的優點是想更新時就更新;代碼(2)的優點是不用管它,它會不斷的更新,缺點是每次更新時文檔都會刷的閃一下。所以我比較喜歡代碼(1)。
?
四、代碼的輸入與加載
??? 編寫完表格后按
ALT+F11
鍵,進入MICROSOFT VISUAL BASIC編輯器,按
F7
鍵打開代碼窗口,在窗口中
粘貼或輸入代碼
,然后關閉編輯器。
??? 代碼設完后還不算完,WORD為了防止宏病毒,會禁止宏運行。點擊
“工具”
菜單>>“
宏
”>>“
安全性
”,把安全性設為中,然后把“可靠發行商”的“信任所有安裝的加載項和模版”選中,保存文件,再次打開的時候就會提示你是否啟動宏。不建議把安全性設為低,安全第一。
??? 這樣,每當重新打開文檔時,域就會自動更新。如果使用代碼(2),則會每分鐘自動更新一次。
如果使用代碼(1),當你需要把所有域自動更新時,按ALT+F8鍵,選擇AUTOOPEN并點擊運行,則域進行更新。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
