1.給單元格重新命名 EXCEL給每個單元格都有一個默認(rèn)的名字,其命名規(guī)則是列標(biāo)加橫標(biāo),例如D3表示第四列、第三行的單元格。如果要將某單元格重新命名,只要用鼠標(biāo)單擊某單元格,在表的左上角就會看到它當(dāng)前的名字,再用鼠標(biāo)選中名字,就可以輸入一個新的名字了?! ?span lang="EN-US">
2.去掉默認(rèn)的表格線(網(wǎng)線) 單擊“工具”菜單中的“選項(xiàng)”,再單擊對話框中的“視圖”,找到“網(wǎng)格線”,使之失效(將左邊的“×”去掉)?!?span lang="EN-US">
3.增加工作簿的頁數(shù) 單擊“插入”菜單下的“工作表”,即可在底部看到一個新名稱的工作表。一個工作簿最多可以有255張工作表。
4.給工作表命名 雙擊當(dāng)前工作表下部的名稱,如“Sheet
5.實(shí)現(xiàn)條件顯示 統(tǒng)計(jì)學(xué)生成績時(shí),希望輸入60以下的分?jǐn)?shù)時(shí),能顯示為“不及格”,輸入60以上的分?jǐn)?shù)時(shí),顯示為“及格”。這樣的效果,不妨稱之為“條件顯示”,用IF函數(shù)可以實(shí)現(xiàn)?! 〖僭O(shè)分?jǐn)?shù)在B3單元格中,要將等級顯示在C3單元格中。那么在C3單元格中輸入以下公式實(shí)現(xiàn)不同的等級: =if(b3<=60,“不及格”,“及格”) 分“不及格”和“及格”兩個等級 =if(b3<=60,“不及格”,if(b3<=90,“及格”,“優(yōu)秀”)) 分三個等級 =if(b3<=60,“不及格”,if(b3<=70,“及格”,if(b3<90,“良好”,“優(yōu)秀”))) 分為四個等級 注意:符號為半角,IF與括弧之間不能有空格,而且最多嵌套7層?! ?span lang="EN-US">
6.跨表操作數(shù)據(jù) 設(shè)有名稱為Sheet1、Sheet2和Sheet3的三張工作表,現(xiàn)要用Sheet1的D8單元格的內(nèi)容乘以40%,再加上Sheet2的B8單元格內(nèi)容乘以60%作為Sheet3的A8單元格的內(nèi)容。則應(yīng)該在Sheet3的A8單元格輸入以下算式:=Sheet1!D8*40%+Sheet2!B8*60%。
Excel中條件格式的用法(轉(zhuǎn))
在Excel中,單元格中輸入的數(shù)值往往需要限制在一定的范圍內(nèi),比如年齡必須大于0、每月的天數(shù)不能超過31等等。此時(shí)如果能夠利用Excel本身自帶的“條件格式”功能,在工作表將這些“不合常理”的單元格用特殊的方式體現(xiàn)出來,將會給用戶帶來工作上的便利。下面就是一個具體的例子。
首先建立一個空白的Excel工作表,然后加亮從A1到D5的單元格(表示將對從A1到D5的單元格做條件格式限制。當(dāng)然您可以任意選擇需做限制的單元格)。選擇菜單“格式”-“條件格式”,打開“條件格式”對話框。在“條件1(1)”框內(nèi)最左側(cè)的下拉列表中選擇“單元格數(shù)值為”,中間的下拉列表中選擇“大于”,最右側(cè)的文本框中添入數(shù)字“100”。然后單擊“格式”按鈕,打開“單元格格式”對話框,選擇“圖案”選項(xiàng)卡,選擇一種顏色,比如淺黃。最后單擊兩次“確定”,返回到單元格輸入狀態(tài)。
現(xiàn)在在A1中輸入數(shù)字“50”,然后回車,工作表將不會有任何變化,因?yàn)?span lang="EN-US">50不滿足設(shè)定的條件。 在B2中輸入數(shù)字“123”,然后回車,該單元格將會立即變?yōu)闇\黃色,因?yàn)?span lang="EN-US">123大于100,滿足條 件格式的條件。通過以上簡單設(shè)置,就可以在輸入數(shù)據(jù)時(shí)防止那些非法數(shù)據(jù)的“入侵”了。
Excel的圖表功能(轉(zhuǎn))
大家知道,Excel主要采用電子表格方式處理數(shù)據(jù)。通常,建立一個工作表的過程包括啟動Excel、鍵入信息、編輯和重排單元格中的數(shù)據(jù)、添加公式,最后將數(shù)據(jù)打印或存盤。當(dāng)然,你還可以在工作表中添加超級鏈接,用來存取你硬盤上或Internet服務(wù)器上的文件。
然而,Excel的圖表轉(zhuǎn)換功能具有更大的吸引力。Excel能夠根據(jù)工作表中的數(shù)據(jù)創(chuàng)建圖表(即將行、列數(shù)據(jù)轉(zhuǎn)換成有意義的圖象)。圖表能幫助辨認(rèn)數(shù)據(jù)變化的趨勢,而在工作表中就很難辨別。
我們在Excel下先簡單地制作一個記錄正弦函數(shù)y=sin(x-a)數(shù)據(jù)的工作表:
x(度) y1(a=0度) y2(a=30度) y3(a=60度)
0 0 -0.5 -o.866
30 -0.5 0 -0,5
60 0.866 0.5 0
90 1 0.866 0.5
120 0.866 1 0.866
150 0.5 0.866 1
180 0 0.5 0.866
210 -0.5 0 0.5
240 -0.866 -0.5 0
270 -1 -0.866 -0.5
300 -0.866 -1 -0.866
330 -0.5 -0.866 -1
360 0 -0.5 -0.866
然后根據(jù)工作表中的部分?jǐn)?shù)據(jù)制作正弦曲線y2。其步驟如下:
1.通過拖動鼠標(biāo)選中x欄的數(shù)據(jù)。按住Ctrl鍵不放,拖動鼠標(biāo)再選中y2欄的數(shù)據(jù)。注意,欄目標(biāo)題不要選,因?yàn)樗鼈儾皇菙?shù)據(jù)。
2.選擇插入 |圖表菜單項(xiàng),或者直接點(diǎn)擊工具欄?quot;圖表向?qū)?span lang="EN-US">"按鈕,調(diào)出圖表類型窗口。在該窗口的標(biāo)準(zhǔn)類型頁面,列出了柱形圖、條形圖、折線圖等圖表類型可供選擇。這些類型大多適用于一維數(shù)據(jù),對于二維數(shù)據(jù)表,如果想轉(zhuǎn)換成折線圖,不能直接選折線圖,而應(yīng)先選xy散點(diǎn)圖為主類型,然后在子圖表類型中選折線散點(diǎn)圖或平滑線散點(diǎn)圖。
3.按"下一步"按鈕,進(jìn)入圖表源數(shù)據(jù)窗口。此時(shí),Excel已根據(jù)你所選的數(shù)據(jù)將正弦曲線y2顯示在窗口中。
4.按"下一步"按鈕,進(jìn)入圖表選項(xiàng)窗口。在該窗口標(biāo)題頁,你可以給圖表標(biāo)題框輸入:正弦函數(shù)y=sin(x-a),給數(shù)值(x)軸框輸入:x(度),給數(shù)值(y)軸框輸入:y。在圖例頁,你還可以選擇是否顯示圖例,等等。
5.按"下一步"按鈕,進(jìn)入圖表位置窗口。我們選擇選項(xiàng):⊙作為新工作表插入,這樣,Excel會為你新建一個圖表頁。如果選擇選項(xiàng):⊙作為其中的對象插入,則Excel會將新建的圖表插入在原工作表頁面。
6.按"完成"按鈕,Excel就會按照你的設(shè)置將所選數(shù)據(jù)轉(zhuǎn)換成圖表。我們看到,一個新建的正弦曲線y2顯示在整個屏幕上,同時(shí),在下方工作表標(biāo)簽欄,新增加了圖表1標(biāo)簽。通過鼠標(biāo)點(diǎn)擊這些標(biāo)簽,可以與Sheet1、Sheet2、Sheet3等工作表進(jìn)行頁面切換。
假如,你還想把y1、y2、y3三條正弦曲線都建在一個圖表上,則可以點(diǎn)擊Sheet1標(biāo)簽,回到原始的工作表頁面,從工作表中選擇全部的數(shù)據(jù)單元格,再重復(fù)以上步驟,即可又創(chuàng)建一個新圖表,同時(shí)工作表標(biāo)簽欄新增圖表2標(biāo)簽。這時(shí)點(diǎn)擊文件 | 保存,則工作表及其圖表將作為一個Excel文檔存盤。圖表也是工作表,一個Excel文檔最多可包含255個工作表。
圖表建好后,如對選擇的設(shè)置不滿意,還可以通過圖表菜單的子菜單回到以上的任一步驟進(jìn)行修改。通過格式菜單的子菜單,則可以設(shè)置圖表區(qū)、繪圖區(qū)、坐標(biāo)軸的圖案、字體、刻度?;蛘咧苯佑檬髽?biāo)右鍵單擊圖表的圖表區(qū)、繪圖區(qū)或坐標(biāo)軸,調(diào)出快捷菜單來設(shè)置修改它們。我們將x軸刻度最大值由400改為360,將刻度單位值由50改為30,這樣設(shè)置更為合適。如果不顯示圖例,則應(yīng)當(dāng)為三條正弦曲線加注標(biāo)識y1、y2、y3(通過添加文本框)?,F(xiàn)在,設(shè)置好的圖表2如下所示:
人們在科學(xué)實(shí)驗(yàn)中經(jīng)常需要對大量的實(shí)驗(yàn)數(shù)據(jù)進(jìn)行處理,Excel的圖表功能可以幫助我們觀察和分析客觀世界變量的內(nèi)在規(guī)律和函數(shù)關(guān)系,特別是通過Excel的圖表 | 添加趨勢線功能菜單還可以幫助趨勢預(yù)測和回歸分析,為科學(xué)工作者的工作提供了極大的便利。
Excel函數(shù)應(yīng)用之工程函數(shù)
編者語:Excel是辦公室自動化中非常重要的一款軟件,很多巨型國際企業(yè)都是依靠Excel進(jìn)行數(shù)據(jù)管理。它不僅僅能夠方便的處理表格和進(jìn)行圖形分析,其更強(qiáng)大的功能體現(xiàn)在對數(shù)據(jù)的自動處理和計(jì)算,然而很多缺少理工科背景或是對Excel強(qiáng)大數(shù)據(jù)處理功能不了解的人卻難以進(jìn)一步深入。編者以為,對Excel函數(shù)應(yīng)用的不了解正是阻擋普通用戶完全掌握Excel的攔路虎,然而目前這一部份內(nèi)容的教學(xué)文章卻又很少見,所以特別組織了這一個《Excel函數(shù)應(yīng)用》系列,希望能夠?qū)?span lang="EN-US">Excel進(jìn)階者有所幫助?!?span lang="EN-US">Excel函數(shù)應(yīng)用》系列,將每周更新,逐步系統(tǒng)的介紹Excel各類函數(shù)及其應(yīng)用,
Excel的工程函數(shù)與統(tǒng)計(jì)函數(shù)類似,都是屬于比較專業(yè)范疇的函數(shù)。因此,在文中筆者也僅介紹幾種比較常用的工程函數(shù),更多的請參考Excel幫助和專業(yè)的書籍。顧名思義,工程工作表函數(shù)就是用于工程分析的函數(shù)。Excel中一共提供了近40個工程函數(shù)。工程工作表函數(shù)由"分析工具庫"提供。如果您找不到此類函數(shù)的話,可能需要安裝"分析工具庫"。
一、"分析工具庫"的安裝
如圖所示
圖1
(1)在"工具"菜單中,單擊"加載宏"命令。
(2)如果"加載宏"對話框中沒有"分析工具庫",請單擊"瀏覽"按鈕,定位到"分析工具庫"加載宏文件"Analys32.xll"所在的驅(qū)動器和文件夾(通常位于"MicrosoftOffice\Office\Library\Analysis"文件夾中);如果沒有找到該文件,應(yīng)運(yùn)行"安裝"程序。
(3) 選中"分析工具庫"復(fù)選框。
二、工程函數(shù)的分類
在Excel幫助系統(tǒng)中將工程函數(shù)大體可分為三種類型,即:
(1)對復(fù)數(shù)進(jìn)行處理的函數(shù)
(2)在不同的數(shù)字系統(tǒng)(如十進(jìn)制系統(tǒng)、十六進(jìn)制系統(tǒng)、八進(jìn)制系統(tǒng)和二進(jìn)制系統(tǒng))間進(jìn)行數(shù)值轉(zhuǎn)換的函數(shù)
(3)在不同的度量系統(tǒng)中進(jìn)行數(shù)值轉(zhuǎn)換的函數(shù)
在文中為了對函數(shù)的解釋更清晰,筆者把工程函數(shù)分為如下的六種類型,即:
(1)貝賽爾(Bessel)函數(shù)
(2)在不同的數(shù)字系統(tǒng)間進(jìn)行數(shù)值轉(zhuǎn)換的函數(shù)
(3)用于篩選數(shù)據(jù)的函數(shù)
(4)度量衡轉(zhuǎn)換函數(shù)
(5)與積分運(yùn)算有關(guān)的函數(shù)
(6)對復(fù)數(shù)進(jìn)行處理的函數(shù)
下面逐一的對于這些工程函數(shù)進(jìn)行介紹
1、貝賽爾(Bessel)函數(shù)
貝賽爾(Bessel)函數(shù)是特殊函數(shù)中應(yīng)用最廣泛的一種函數(shù),在理論物理研究、應(yīng)用數(shù)學(xué)、大氣科學(xué)以及無線電等工程領(lǐng)域都有廣泛的應(yīng)用。在Excel中一共提供了四個函數(shù),即:BESSELI、BESSELJ 、BESSELK、BESSELY。
語法形式為:函數(shù)(x,n) 其中,X為參數(shù)值,N為函數(shù)的階數(shù)。如果 n非整數(shù),則截尾取整。需說明的是,如果 x 為非數(shù)值型,則貝賽爾(Bessel)函數(shù)返回錯誤值 #VALUE!。如果 n 為非數(shù)值型,則貝賽爾(Bessel)函數(shù)返回錯誤值 #VALUE!。如果 n <0,則貝賽爾(Bessel)函數(shù)返回錯誤值 #NUM!。
2、在不同的數(shù)字系統(tǒng)間進(jìn)行數(shù)值轉(zhuǎn)換的函數(shù)
Excel工程函數(shù)中提供二進(jìn)制、八進(jìn)制、十進(jìn)制與十六進(jìn)制之間的數(shù)值轉(zhuǎn)換函數(shù)。
這類工程函數(shù)名稱非常容易記憶,只要記住二進(jìn)制為BIN,八進(jìn)制為OCT,十進(jìn)制為DEC,十六進(jìn)制為HEX。再記住函數(shù)名稱中間有個數(shù)字2就可以容易的記住這些數(shù)值轉(zhuǎn)換函數(shù)了。比如,如果需要將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制,應(yīng)用的函數(shù)為前面BIN,中間加個2,后面為DEC,合起來這個函數(shù)就是BIN2DEC。
簡單列表為:
圖2
此類數(shù)值轉(zhuǎn)換函數(shù)的語法形式也很容易記憶。
比如,將不同進(jìn)制的數(shù)值轉(zhuǎn)為十進(jìn)制的語法形式為:函數(shù)(number),其中Number為待轉(zhuǎn)換的某種進(jìn)制數(shù)。
又如,將不同進(jìn)制轉(zhuǎn)換為其他進(jìn)制的數(shù)值的語法形式為:函數(shù)(number,places)其中Number為待轉(zhuǎn)換的數(shù)。Places為所要使用的字符數(shù)。當(dāng)需要在返回的數(shù)值前置零時(shí) places 尤其有用。
3、用于篩選數(shù)據(jù)的函數(shù)DELTA與GESTEP
(1)用以測試兩個數(shù)值是否相等的函數(shù)DELTA
DELTA用以測試兩個數(shù)值是否相等。如果 number1=number2,則返回 1,否則返回 0。可用此函數(shù)篩選一組數(shù)據(jù),例如,通過對幾個 DELTA 函數(shù)求和,可以計(jì)算相等數(shù)據(jù)對的數(shù)目。該函數(shù)也稱為 Kronecker Delta 函數(shù)。
語法形式為DELTA(number1,number2) 其中Number1為第一個參數(shù),Number2為第二個參數(shù)。如果省略,假設(shè) Number2 值為零。如果number1或者number2為非數(shù)值型,則函數(shù) DELTA 返回錯誤值 #VALUE!。
(2)可篩選數(shù)據(jù)的函數(shù)GESTEP
使用GESTEP函數(shù)可篩選數(shù)據(jù)。如果 Number 大于等于 step,返回1,否則返回 0。例如,通過計(jì)算多個函數(shù) GESTEP 的返回值,可以檢測出數(shù)據(jù)集中超過某個臨界值的數(shù)據(jù)個數(shù)。
語法形式為:GESTEP(number,step) 其中Number為待測試的數(shù)值。Step稱閥值。如果省略 step,則函數(shù) GESTEP 假設(shè)其為零。需注意的是,如果任一參數(shù)非數(shù)值,則函數(shù) GESTEP 返回錯誤值 #VALUE!
(3)以考試成績統(tǒng)計(jì)為例說明函數(shù)的用法
例:某院校舉行數(shù)學(xué)模擬考試,正在進(jìn)行成績排定。提出的評定方案為求出成績超過90分的考生人數(shù)有哪些人。
在這里我們采用GEStep函數(shù)來完成統(tǒng)計(jì),首先會為每位考生的成績做標(biāo)記。超過90分的標(biāo)記為1,否則為0,然后對所有考生的標(biāo)記進(jìn)行匯總,即可求出有多少人超過90分。
圖3
以1號Annie的成績?yōu)槔煽優(yōu)?span lang="EN-US">98分,超90分。具體公式為:
=GESTEP(C4,90)
4、度量衡轉(zhuǎn)換函數(shù)CONVERT
CONVERT函數(shù)可以將數(shù)字從一個度量系統(tǒng)轉(zhuǎn)換到另一個度量系統(tǒng)中。
語法形式為CONVERT(number,from_unit,to_unit)其中Number為以 from_units 為單位的需要進(jìn)行轉(zhuǎn)換的數(shù)值。From_unit為數(shù)值 number 的單位。To_unit為結(jié)果的單位。
函數(shù) CONVERT 中from_unit 和 to_unit的參數(shù)接受的附表的文本值。
重量和質(zhì)量 From_unit 或 to_unit 能量 From_unit或 to_unit
克 "g" 焦耳 "J"
斯勒格 "sg" 爾格 "e"
磅(常衡制) "lbm" 熱力學(xué)卡 "c"
U(原子質(zhì)量單位) "u" IT 卡 "cal"
盎司(常衡制) "ozm" 電子伏 "eV"
距離 From_unit或 to_unit 馬力-小時(shí) "HPh"
米 "m" 瓦特-小時(shí) "Wh"
法定哩 "mi" 英尺磅 "flb"
海里 "Nmi" BTU "BTU"
英寸 "in" 功率 From_unit 或 to_unit
英尺 "ft" 馬力 "HP"
碼 ` 瓦特 "W"
埃 "ang" 磁 From_unit 或 to_unit
皮卡(1/72 英寸) "Pica" 特斯拉 "T"
時(shí)間 From_unit或 to_unit 高斯 "ga"
年 "yr" 溫度 From_unit 或 to_unit
日 "day" 攝氏度 "C"
小時(shí) "hr" 華氏度 "F"
分鐘 "mn" 開爾文度 "K"
秒 "sec" 液體度量 From_unit 或 to_unit
壓強(qiáng) From_unit或 to_unit 茶匙 "tsp"
帕斯卡 "Pa" 湯匙 "tbs"
大氣壓 "atm" 液量盎司 "oz"
毫米汞柱 "mmHg" 杯 "cup"
力 From_unit或 to_unit U.S. 品脫 "pt"
牛頓 "N" U.K. 品脫 "uk_pt"
達(dá)因 "dyn" 夸脫 "qt"
磅力 "lbf" 加侖 "gal"
升 "l"
5、與積分運(yùn)算有關(guān)的函數(shù)ERF與ERFC
ERF為返回誤差函數(shù)在上下限之間的積分。
其語法形式為:ERF(lower_limit,upper_limit)其中,Lower_limit為ERF函數(shù)的積分下限。Upper_limit為ERF函數(shù)的積分上限。如果省略,默認(rèn)為零。
ERFC為返回從x 到 ∞(無窮)積分的 ERF 函數(shù)的余誤差函數(shù)。其語法形式為:
ERFC(x) 其中X為ERF函數(shù)積分的下限。
6、與復(fù)數(shù)運(yùn)算有關(guān)的函數(shù)
還記得中學(xué)時(shí)代學(xué)過的復(fù)數(shù)嗎?是不是還記得當(dāng)時(shí)求復(fù)數(shù)的模等計(jì)算的繁復(fù)?Excel的工程函數(shù)中提供的多種與復(fù)數(shù)運(yùn)算有關(guān)的函數(shù),你可以用它來驗(yàn)證自己的運(yùn)算結(jié)果的正確性啊。關(guān)于有哪些函數(shù)與復(fù)數(shù)運(yùn)算有關(guān),可以察看所附的表格。這里將以簡單的事例說明函數(shù)的使用方法。注意到在工程函數(shù)中有一些前綴為im的函數(shù)了嗎?這些就是與復(fù)數(shù)運(yùn)算有關(guān)的函數(shù)。
舉例,已知復(fù)數(shù)5+12i,請用函數(shù)求解該復(fù)數(shù)的共軛復(fù)數(shù)、實(shí)系數(shù)、虛系數(shù)、模等。
圖4
附表:Excel的工程函數(shù)
函數(shù)名 函數(shù)說明 語法形式
BESSELI 返回修正 Bessel 函數(shù)值,它與用純虛數(shù)參數(shù)運(yùn)算時(shí)的 Bessel 函數(shù)值相等。 BESSELI(x,n)
BESSELJ 返回 Bessel 函數(shù)值。 BESSELJ(x,n)
BESSELK 返回修正 Bessel 函數(shù)值,它與用純虛數(shù)參數(shù)運(yùn)算時(shí)的 Bessel 函數(shù)值相等。 BESSELK(x,n)
BESSELY 返回 Bessel 函數(shù)值,也稱為 Weber 函數(shù)或 Neumann 函數(shù)。 BESSELY(x,n)
BIN2DEC 將二進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。 BIN2DEC(number)
BIN2HEX 將二進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)。 BIN2HEX(number,places)
BIN2OCT 將二進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)。 BIN2OCT(number,places)
COMPLEX 將實(shí)系數(shù)及虛系數(shù)轉(zhuǎn)換為 x+yi 或 x+yj 形式的復(fù)數(shù)。 COMPLEX(real_num,i_num,suffix)
CONVERT 將數(shù)字從一個度量系統(tǒng)轉(zhuǎn)換到另一個度量系統(tǒng)中。 CONVERT(number,from_unit,to_unit)
DEC2BIN 將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。 DEC2BIN(number,places)
DEC2HEX 將十進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)。 DEC2HEX(number,places)
DEC2OCT 將十進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)。 DEC2OCT(number,places)
DELTA 測試兩個數(shù)值是否相等。如果 number1=number2,則返回 1,否則返回 0。 DELTA(number1,number2)
ERF 返回誤差函數(shù)在上下限之間的積分。 ERF(lower_limit,upper_limit)
ERFC 返回從 x 到 ∞(無窮)積分的 ERF 函數(shù)的余誤差函數(shù) ERFC(x)
GESTEP 如果 Number 大于等于 step,返回 1,否則返回 0。使用該函數(shù)可篩選數(shù)據(jù)。 GESTEP(number,step)
HEX2BIN 將十六進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。 HEX2BIN(number,places)
HEX2DEC 將十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。 HEX2DEC(number)
HEX2OCT 將十六進(jìn)制數(shù)轉(zhuǎn)換為八進(jìn)制數(shù)。 HEX2OCT(number,places)
IMABS 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的絕對值(模)。 IMABS(inumber)
IMAGINARY 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的虛系數(shù)。 IMAGINARY(inumber)
IMARGUMENT 返回以弧度表示的角 IMARGUMENT(inumber)
IMCONJUGATE 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的共軛復(fù)數(shù)。 IMCONJUGATE(inumber)
IMCOS 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的余弦。 IMCOS(inumber)
IMDIV 返回以 x+yi 或x+yj 文本格式表示的兩個復(fù)數(shù)的商。 IMDIV(inumber1,inumber2)
IMEXP 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的指數(shù)。 IMEXP(inumber)
IMLN 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的自然對數(shù)。 IMLN(inumber)
IMLOG10 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的常用對數(shù)(以 10 為底數(shù))。 IMLOG10(inumber)
IMLOG2 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的以 2 為底數(shù)的對數(shù)。 IMLOG2(inumber)
IMPOWER 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的 n 次冪。 IMPOWER(inumber,number)
IMPRODUCT 返回以 x+yi 或x+yj 文本格式表示的 2 至 29 個復(fù)數(shù)的乘積。 IMPRODUCT(inumber1,inumber2,...)
IMREAL 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的實(shí)系數(shù)。 IMREAL(inumber)
IMSIN 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的正弦值。 IMSIN(inumber)
IMSQRT 返回以 x+yi 或x+yj 文本格式表示的復(fù)數(shù)的平方根。 IMSQRT(inumber)
IMSUB 返回以 x+yi 或x+yj 文本格式表示的兩個復(fù)數(shù)的差。 IMSUB(inumber1,inumber2)
IMSUM 返回以 x+yi 或x+yj 文本格式表示的兩個或多個復(fù)數(shù)的和。 IMSUM(inumber1,inumber2,...)
OCT2BIN 將八進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)。 OCT2BIN(number,places)
OCT2DEC 將八進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)。 OCT2DEC(number)
OCT2HEX 將八進(jìn)制數(shù)轉(zhuǎn)換為十六進(jìn)制數(shù)。 OCT2HEX(number,places)
用 Excel 實(shí)現(xiàn)自動查表
在項(xiàng)目招標(biāo)中,常會遇到這種情況,如對某一個數(shù)字進(jìn)行查表后,算出該數(shù)字對應(yīng)的結(jié)果,如數(shù)字為5.1,則在表格的豎行找整數(shù)5,在表格的橫向找0.1,表格交叉處即為計(jì)算結(jié)果。但是在表格較大時(shí),重復(fù)的手工勞動較為煩瑣,且容易出錯。本人經(jīng)過實(shí)踐,用excel對這一過程進(jìn)行了簡化:
第一步:將報(bào)表輸入excel;
第二步:在b17單元格中輸入原始數(shù)據(jù);
第三步:在c17單元格中輸入公式:
=INDEX(B5:J11,MATCH(TRUNC(B17,0),A5:A11),ABS(B17-TRUNC(B17,0))*10)
公式說明如下:
1、TRUNC(B17,0):對原始數(shù)據(jù)取其整數(shù)值;
2、MATCH(TRUNC(B17,0),A5:A11):找出該整數(shù)值在表格豎行所處位置;
3、ABS(B17-TRUNC(B17,0))*10:返回小數(shù)點(diǎn)后數(shù)值在表格橫向所處位置,這里要注意,因?yàn)閿?shù)值可能為負(fù),而符號已進(jìn)入了數(shù)值的整數(shù)部分,因此要對公式取絕對值。
至此,公式即告完成,在b17單元格中輸入數(shù)據(jù),在c17單元格中就會相應(yīng)出現(xiàn)該數(shù)值所對應(yīng)的結(jié)果,試一試,是不是很方便。
用Excel 繪制函數(shù)圖像
函數(shù)圖像能直觀地反映函數(shù)的性質(zhì),但手工繪制函數(shù)圖像費(fèi)時(shí)費(fèi)工,質(zhì)量也不理想。筆者發(fā)現(xiàn)用Excel作函數(shù)圖像非常簡便,所作圖像非常標(biāo)準(zhǔn)、漂亮。用Excel作函數(shù)圖像步驟如下:
1.創(chuàng)建電子表格:
打開Excel,選擇“新建”命令,這時(shí)出現(xiàn)一個空白的電子表格。
2.輸入函數(shù)的自變量:
在A列的A1格輸入“X=”,表明這是自變量,再在A列的A2及以后的格內(nèi)逐次從小到大輸入自變量的各個值;實(shí)際輸入的時(shí)候,通常應(yīng)用等差數(shù)列輸入法,先輸入前三個值,定出自變量中數(shù)與數(shù)的距離,然后點(diǎn)擊A2格,按住鼠標(biāo)拖到A4格選中這三項(xiàng),使這三項(xiàng)變成一個黑色矩形,再用鼠標(biāo)指向這黑色矩形的右下角的小方塊“■”,當(dāng)光標(biāo)變成“+”后,按住鼠標(biāo)拖動光標(biāo)到適當(dāng)?shù)奈恢?,就完成自變量的輸入?span lang="EN-US">
3.函數(shù)式的輸入:
在B列的B1格輸入函數(shù)式y=f(x)的一般書面表達(dá)形式,如y=|lg(2-x2)|;在B2格輸入上述函數(shù)的計(jì)算機(jī)函數(shù)形式“=ABS(LOG10(2-POWER(A2,2)))”,也可在點(diǎn)擊工具欄上的函數(shù)圖標(biāo)“fx”后,在出現(xiàn)的不同函數(shù)列表的選項(xiàng)中選齲輸入結(jié)束后,點(diǎn)擊函數(shù)輸入對話框旁的“√”,B2格內(nèi)馬上得出了計(jì)算的結(jié)果。這時(shí),再選中B2格,讓光標(biāo)指向B2矩形右下角的“■”,當(dāng)光標(biāo)變成“+”時(shí)按住光標(biāo)沿B列拖動到適當(dāng)?shù)奈恢眉赐瓿珊瘮?shù)值的計(jì)算。注意一定要把該函數(shù)中自變量x的位置輸入前面A列自變量的絕對位置A2格,這樣下面計(jì)算的時(shí)候才會對不同的自變量進(jìn)行計(jì)算。
4.作圖:
點(diǎn)擊工具欄上的“圖表向?qū)А眻D標(biāo),在出現(xiàn)的各種圖表格式圖標(biāo)中選擇“X,Y散點(diǎn)圖”,然后在出現(xiàn)的“X,Y散點(diǎn)圖”類型中選擇“無數(shù)據(jù)點(diǎn)平滑線散點(diǎn)圖”;這時(shí),可按住鼠標(biāo)察看即將繪好的函數(shù)圖像。另外,對于自變量僅為正值的函數(shù),也可用“圖表向?qū)А敝械摹罢劬€圖”格式繪制。
修復(fù)損壞的Excel文件的兩種方法
Excel電子報(bào)表軟件是應(yīng)用最廣泛的軟件之一,它的數(shù)據(jù)處理、圖表功能及各種函數(shù)和工具深受廣大用戶的喜愛。Excel的文件是一個工作簿,一個工作簿可以包含255個工作表,每個工作表中可以包含大量的數(shù)據(jù)。如果一個Excel文件有點(diǎn)損壞,則不能正常打開,這時(shí)該怎么辦呢?
方法一:手動處理
進(jìn)入Word,打開指定要修復(fù)的.xls文件,打開后,如果Excel只有一個工作表,會自動以表格的形式裝入Word,若文件是由多個工作表組成,每次只能打開一個工作表,將文件中損壞的數(shù)據(jù)刪除。
用鼠標(biāo)選中“表格→表格菜單→表格轉(zhuǎn)文本”,注意可用“,”間隔符或其他分隔符。另保存為一個文本文件.txt。在Excel中直接打開該文本文件,另存為其他的Excel文件即可。
注意:這種修復(fù)的方法是利用Word的直接讀取Excel文件的功能實(shí)現(xiàn),該方法在文件頭沒有損壞,只是文件內(nèi)容有損壞的情況下比較有效,若文件頭已經(jīng)損壞時(shí)的Excel文件,此方法可能不成功,必須借助于其他方法。
方法二:用Excel修復(fù)工具
Concept Data公司提供了一個專門用于修復(fù)Excel損壞文件的修復(fù)工具——ExcelRecovery,能夠?qū)?span lang="EN-US">Excel 5.0/95/97 的文件進(jìn)行恢復(fù)處理的軟件,該軟件的網(wǎng)址是www.excelrecovery.com,可以下載該軟件的演示版。
下載該軟件并安裝后,可以自動將Excel的修復(fù)程序合并在Excel應(yīng)用程序中,在文件菜單下,多出一項(xiàng)Recovery選項(xiàng),若有損壞的文件,可以用該選項(xiàng)進(jìn)行修復(fù)。使用方法是:
1、打開Excel;
2、單擊“文件”菜單下的“Recover”選項(xiàng),Excel Recovery 的對話框?qū)⒋蜷_;
3、指定要修復(fù)的Excel文件,然后按Recover按鈕;
4、自動修復(fù);
5、另存為一個新的文件名,即可完成文件的修復(fù)工作。
注意:該演示版本只能修復(fù)普通文件,不能修復(fù)帶Visual Basic代碼、圖表以及包含口令的Excel文件,如果需要修復(fù)這些文件,請進(jìn)行注冊。
文件修復(fù)的方法比較多,如果是Word文件,也有專門用于修復(fù)Word文件的工具WordRecovery。應(yīng)該注意的是:保存在軟盤中的文件極易損壞,損壞后可用以上方法修復(fù),但如果保存文件的磁盤0磁道損壞或不能正確讀寫等問題時(shí),就必須先修復(fù)磁盤和文件,再用上述方法修復(fù)Excel文件。
Excel常見錯誤及解決方法
Microsoft Excel以其強(qiáng)大的表格處理功能,備受廣大用戶的青睞。但在使用過程中常會出現(xiàn)一些錯誤值,讓初級用戶摸不著頭腦。下面筆者將一些常見的錯誤值以及成因一一列舉出來,希望對大家能有所幫助。
1、出現(xiàn)錯誤值#####!
導(dǎo)致這種錯誤的最常見原因是輸入到單元格中的數(shù)值太長或公式產(chǎn)生的結(jié)果太長,致使單元格容納不下??梢酝ㄟ^修改列的寬度來解決此問題。另外,對日期或時(shí)間做減法時(shí)若產(chǎn)生了負(fù)值,Excel也會在整個單元格中顯示#####!。
2、出現(xiàn)錯誤值#VAUE!
這種錯誤是因?yàn)槭褂昧隋e誤的參數(shù)或運(yùn)算對象類型。比如在需要輸入數(shù)字或邏輯值時(shí),卻輸入了文本;在需要賦單一數(shù)值的運(yùn)算符或函數(shù)時(shí),卻賦予一個數(shù)值區(qū)域。解決方法分別是:確認(rèn)運(yùn)算符或參數(shù)正確,且公式引用的單元格中包含有效數(shù)值;將數(shù)值區(qū)域改為單一數(shù)值。
3、出現(xiàn)錯誤值#DIV/0!
當(dāng)除數(shù)為“0”或引用了空單元格時(shí)(Excel通常將空單元格解釋為“0”),會出現(xiàn)此種錯誤。請確定函數(shù)或公式中的除數(shù)不為“0”且不是空值。
4、出現(xiàn)錯誤值#NAME?
當(dāng)Excel不能識別公式中使用的文本時(shí),就出現(xiàn)錯誤值“#NAME?”。向公式中輸入文本時(shí),要將文本括在“”中,否則Excel會將其解釋為名稱,導(dǎo)致出錯。另外,公式中使用的名稱已經(jīng)被刪除或使用了不存在的名稱以及名稱拼寫錯誤,也能產(chǎn)生這種錯誤值。請確認(rèn)公式中使用的名稱存在并且是正確的。
5、出現(xiàn)錯誤值#N/A
此種錯誤產(chǎn)生的原因是函數(shù)或公式中沒有可用的數(shù)值。解決方法是在沒有數(shù)值的單元格中輸入“#N/A”,這樣,公式在引用這些單元格時(shí),將不進(jìn)行數(shù)值計(jì)算,而是直接返回“#N/A”,從而避免了錯誤的產(chǎn)生。
6、出現(xiàn)錯誤值#REF!
當(dāng)引用的單元格無效時(shí)會產(chǎn)生這種錯誤。請確認(rèn)所引用的單元格是否存在。
7、出現(xiàn)錯誤值#NUM!
產(chǎn)生這種錯誤的原因是函數(shù)或公式中的數(shù)字有問題。比如函數(shù)中使用了不正確的參數(shù)類型;公式產(chǎn)生的數(shù)字太大或太小等。請檢查函數(shù)中使用的參數(shù)類型是否正確,或修改公式使其結(jié)果能讓Excel正確表示。
高效辦公Excel排序方法
排序是數(shù)據(jù)處理中的經(jīng)常性工作,Excel排序有序數(shù)計(jì)算(類似成績統(tǒng)計(jì)中的名次)和數(shù)據(jù)重排兩類。本文以幾個車間的產(chǎn)值和名稱為例,介紹Excel 2000/XP的數(shù)據(jù)排序方法。
一、數(shù)值排序
1.RANK函數(shù)
RANK函數(shù)是Excel計(jì)算序數(shù)的主要工具,它的語法為:RANK (number,ref,order),其中number為參與計(jì)算的數(shù)字或含有數(shù)字的單元格,ref是對參與計(jì)算的數(shù)字單元格區(qū)域的絕對引用,order是用來說明排序方式的數(shù)字(如果order為零或省略,則以降序方式給出結(jié)果,反之按升序方式)。
例如E2、E3、E4單元格存放一季度的總產(chǎn)值,計(jì)算各車間產(chǎn)值排名的方法是:在F2單元格內(nèi)輸入公式“=RANK(E2,$E$2: $E$4)”,敲回車即可計(jì)算出鑄造車間的產(chǎn)值排名是2。再將F2中的公式復(fù)制到剪貼板,選中F3、F4單元格按Ctrl+V,就能計(jì)算出其余兩個車間的產(chǎn)值排名為3和1。如果B1單元格中輸入的公式為“=RANK(E2,$E$2:$E$4,1)”,則計(jì)算出的序數(shù)按升序方式排列,即2、1和3。
需要注意的是:相同數(shù)值用RANK函數(shù)計(jì)算得到的序數(shù)(名次)相同,但會導(dǎo)致后續(xù)數(shù)字的序數(shù)空缺。假如上例中F2單元格存放的數(shù)值與 F3相同,則按本法計(jì)算出的排名分別是3、3和1(降序時(shí))。
2.COUNTIF函數(shù)
COUNTIF函數(shù)可以統(tǒng)計(jì)某一區(qū)域中符合條件的單元格數(shù)目,它的語法為COUNTIF(range,criteria)。其中range為參與統(tǒng)計(jì)的單元格區(qū)域,criteria是以數(shù)字、表達(dá)式或文本形式定義的條件。其中數(shù)字可以直接寫入,表達(dá)式和文本必須加引號。
仍以上述為例,F2單元格內(nèi)輸入的公式為“=COUNTIF($E$2:$E$4,">"&E2)+
此公式的計(jì)算過程是這樣的:首先根據(jù)E2單元格內(nèi)的數(shù)值,在連接符&的作用下產(chǎn)生一個邏輯表達(dá)式,即“>
3.IF函數(shù)
Excel自身帶有排序功能,可使數(shù)據(jù)以降序或升序方式重新排列。如果將它與IF函數(shù)結(jié)合,可以計(jì)算出沒有空缺的排名。上例中E2、E3、 E4單元格的產(chǎn)值排序?yàn)槔?,具體做法是:選中E2單元格,根據(jù)排序需要,單擊Excel工具欄中的“降序排序”或“升序排序”按鈕,即可使工作表中的所有數(shù)據(jù)按要求重新排列。
假如數(shù)據(jù)是按產(chǎn)值由大到?。ń敌颍┡帕械?,而您又想賦予每個車間從1到n(n為自然數(shù))的排名??梢栽?span lang="EN-US">G2單元格中輸入1,然后在G3單元格中輸入公式“=IF(E3=E2, G3,G3+1)”,只要將公式復(fù)制到G4等單元格,就可以計(jì)算出其他車間的產(chǎn)值排名。
二、文本排序
選舉等場合需要按姓氏筆劃為文本排序, Excel提供了比較好的解決辦法。如果您要將數(shù)據(jù)表按車間名稱的筆劃排序,可以使用以下方法: 選中排序關(guān)鍵字所在列(或行)的首個單元格(如A1),單擊Excel“數(shù)據(jù)”菜單下的“排序”命令,再單擊其中的“選項(xiàng)”按鈕。選中“排序選項(xiàng)”對話框“方法”下的“筆畫排序”,再根據(jù)數(shù)據(jù)排列方向選擇“按行排序”或“按列排序”,“確定”后回到“排序”對話框。如果您的數(shù)據(jù)帶有標(biāo)題行(如“單位”之類),則應(yīng)選中“有標(biāo)題行”(反之不選),然后打開“主要關(guān)鍵字”下拉列表,選擇其中的“單位”,選中排序方式(“升序”或“降序”)后“確定”,表中的所有數(shù)據(jù)就會據(jù)此重新排列。
此法稍加變通即可用于“第一名”、“第二名”等文本排序,請讀者自行摸索。
三、自定義排序
如果您要求Excel按照“金工車間”、“鑄造車間”和“維修車間”的特定順序重排工作表數(shù)據(jù),前面介紹的幾種方法就無能為力了。這類問題可以用定義排序規(guī)則的方法解決:首先單擊Excel“工具”菜單下的“選項(xiàng)”命令,打開“選項(xiàng)”對話框中的“自定義序列”選項(xiàng)卡。選中左邊“自定義序列”下的“新序列”,光標(biāo)就會在右邊的“輸入序列”框內(nèi)閃動,您就可以輸入“金工車間”、“鑄造車間”等自定義序列了,輸入的每個序列之
間要用英文逗號分隔,或者每輸入一個序列就敲回車。如果序列已經(jīng)存在于工作表中,可以選中序列所在的單元格區(qū)域單擊“導(dǎo)入”,這些序列就會被自動加入“輸入序列”框。無論采用以上哪種方法,單擊“添加”按鈕即可將序列放入“自定義序列”中備用。
使用排序規(guī)則排序的具體方法與筆劃排序很相似,只是您要打開“排序選項(xiàng)”對話框中的“自定義排序次序”下拉列表,選中前面定義的排序規(guī)則,其他選項(xiàng)保持不動。回到“排序”對話框后根據(jù)需要選擇“升序”或“降序”,“確定”后即可完成數(shù)據(jù)的自定義排序。
需要說明的是: 顯示在“自定義序列”選項(xiàng)卡中的序列(如一、二、三等),均可按以上方法參與排序,請讀者注意Excel提供的自定義序列類型。
XLS封裝成EXE制作全攻略(轉(zhuǎn)自Excel Home)
曾在論壇發(fā)表過一張?zhí)顷P(guān)于制作動態(tài)EXE例子(http://www.officefans.net/cdb/viewthread.php?tid=15781)的,大家對此興趣頗濃,都建議公開詳細(xì)制作細(xì)節(jié),故決定寫出此文以幫助關(guān)注那張?zhí)陌嬗褌兡芡耆砸血?dú)立完成xls2exe的過程,實(shí)現(xiàn)簡單的封裝。首先申明,將xls做成exe并不是指就能使您的VBA工程受到堅(jiān)強(qiáng)的保護(hù),當(dāng)然您可以通過數(shù)種方法來提高xls文檔VBA工程防止查看的保護(hù)幾率,如屏蔽一些系統(tǒng)熱鍵、監(jiān)控VBE窗口的開啟、給文檔加上口令保護(hù)、加VBA口令、使VBA“不可查看”、利用宏表4.0來禁止用戶取消宏來查看文檔等等,但“道高一尺,魔高一丈”,所以就沒有必要去追求所謂的“完美”加密……關(guān)于這些保護(hù)方法不屬本文敘述范圍,請版友在論壇上查看相關(guān)帖。
假如您手頭已有一xls文檔等待封裝,假如您機(jī)子上已安裝有VB6開發(fā)系統(tǒng),那么請跟著往下操作:
一、用VB制作EXE文件頭部分
1、打開VB,“文件”-“新建工程”-“標(biāo)準(zhǔn)EXE”;
2、此時(shí)會出現(xiàn)名為Form1的默認(rèn)窗體編輯窗口,Form1將作為軟件啟動封面窗體,打開該Form1的屬性窗口,對如下屬性進(jìn)行設(shè)置:BorderStyle=0,StartUpPosition=2,Icon與Picture屬性設(shè)置成你需要的圖標(biāo)(這也將成為你EXE的圖標(biāo))和設(shè)計(jì)好準(zhǔn)備使用的圖片(即軟件封面),窗體的大小設(shè)置成您需要的合適值即可。
3、往窗體中添加一個時(shí)鐘控件timer1,并將其InterVal屬性設(shè)為1000。
4、雙擊窗體打開代碼編輯窗口,錄入以下代碼:
Private DeclareFunction SetWindowPos Lib "user32" (ByVal hwnd As Long, ByValhWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long,ByVal cy As Long, ByVal wFlags As Long) As Long
Private DeclareFunction GetTempFileName Lib "kernel32" Alias"GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString AsString, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long
Private DeclareFunction GetTempPath Lib "kernel32" Alias "GetTempPathA"(ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Const MAX_PATH= 260
Private Const EXE_SIZE= 81920 '本EXE實(shí)際字節(jié)大小
Private TypeFileSection
Bytes() As Byte
End Type
Private TypeSectionedFile
Files() As FileSection
End Type
Dim StopTime AsInteger
Private Sub Form_Activate()
If Command() ="" Then Main1
End Sub
Private SubForm_Load()
On Error Resume Next
If Command() ="" Then
Form1.Visible = True
SetWindowPos Form1.hwnd, -1, 0, 0, 0, 0,&H2 Or &H1 '將封面置為最頂層窗體
Else
Form1.Visible = False
Form1.Timer1.Enabled = True
End If
End Sub
Sub Main1()
Dim StartXLSByte, I, JAs Long
Dim AppPath,XlsTmpPath As String
Dim myfile AsSectionedFile
Dim xlApp AsExcel.Application '定義EXCEL類
Dim xlBook AsExcel.Workbook '定義工件簿類
Dim xlsheet AsExcel.Worksheet '定義工作表類
AppPath = App.Path
XlsTmpPath =GetTempFile() '取得XLS臨時(shí)文件名(帶路徑)
If VBA.Right(App.Path,1) = "\" Then AppPath = VBA.Left(App.Path, VBA.Len(App.Path) - 1)
Open AppPath &"\" & App.EXEName & ".exe" For Binary As #1
ReDim myfile.Files(1)
ReDimmyfile.Files(1).Bytes(1 To LOF(1) - EXE_SIZE)
Open XlsTmpPath ForBinary As #2
Get #1, EXE_SIZE + 1, myfile.Files(1).Bytes '此處數(shù)字要根據(jù)EXE實(shí)際頭文件大小更改設(shè)定
Put #2, 1, myfile.Files(1).Bytes
Close #1
Close #2
Set xlApp =CreateObject("Excel.Application") '創(chuàng)建EXCEL應(yīng)用類
Set xlBook = xlApp.Workbooks.Open(FileName:=XlsTmpPath,password:="ldhyob") '打開EXCEL工作簿,已知該工作簿已加打開口令為ldhyob
'以下星號括起部分代碼是往xls里寫數(shù)據(jù)(也可不往工作簿里寫數(shù)據(jù)的方法,而生成txt的方法),作用是保存本exe的絕對路徑與臨時(shí)xls絕對路徑,以便于EXE重寫更新與臨時(shí)文件刪除
'*****************************************
Set xlsheet =xlBook.Worksheets("temp") '設(shè)置活動工作表
xlsheet.Cells(1, 1) =AppPath & "\" & App.EXEName & ".exe" '將該EXE完全路徑存在工作表單元格內(nèi)
xlsheet.Cells(2, 1) =XlsTmpPath '將該EXE本次運(yùn)行產(chǎn)生XLS臨時(shí)文件路徑存在工作表單元格內(nèi)
'****************************************
xlApp.Visible = True '設(shè)置EXCEL可見
Set xlApp = Nothing '釋放xlApp對象
StopTime = 0
Me.Timer1.Enabled =True '啟動時(shí)鐘
End Sub
Private FunctionGetTempFile() As String '用來產(chǎn)生系統(tǒng)臨時(shí)文件名
Dim lngRet As Long
Dim strBuffer AsString, strTempPath As String
strBuffer =String$(MAX_PATH, 0)
lngRet =GetTempPath(Len(strBuffer), strBuffer)
If lngRet = 0 ThenExit Function
strTempPath =Left$(strBuffer, lngRet)
strBuffer =String$(MAX_PATH, 0)
lngRet =GetTempFileName(strTempPath, "tmp", 0&, strBuffer)
If lngRet = 0 ThenExit Function
lngRet = InStr(1,strBuffer, Chr(0))
If lngRet > 0 Then
GetTempFile =Left$(strBuffer, lngRet - 1)
Else
GetTempFile =strBuffer
End If
End Function
Private SubTimer1_Timer()
On Error Resume Next
If Command() <>"" Then
If VBA.Dir(Command()) <> ""Then
Kill Command() '刪除本次運(yùn)行遺留的臨時(shí)XLS文件
Else
End
End If
Else
StopTime = StopTime +1 '計(jì)時(shí)累加
If StopTime = 1 ThenUnload Me: End '2秒后自動關(guān)閉退出
End If
End Sub
5、可保存工程,如取名為“工程
6、進(jìn)行編譯,“文件”-“生成工程1.exe”,此時(shí)也可將生成的EXE另外取名,如取名叫abc.exe。
7、查看第6步生成的EXE文件字節(jié)大小,并將具體數(shù)字記下來,并將VB模塊中的“Private Const EXE_SIZE =
至此,文件頭部分已做完,abc.exe文件也已生成于磁盤中。
特別提示:編譯前,確保VB里"工程"---"引用"里"Microsoft Excel 9.0 ObjectLibrary"前面的勾已打上.
二、xls文檔部分操作
1、給工作簿增加一個工作表temp,將其置為隱藏。
2、增加xls文檔宏代碼以實(shí)現(xiàn)文檔關(guān)閉時(shí)EXE數(shù)據(jù)刷新。
打開xls文檔,打開VBE窗口,在ThisWorkBook代碼區(qū)頭部加入以下代碼:
Private Const EXE_SIZE= 81920 '此處數(shù)字為前面第7步得到的EXE文件字節(jié)數(shù)
Private TypeFileSection
Bytes() As Byte
End Type
在Workbook_BeforeClose事件中加入如下代碼(對原有的代碼可保留):
Dim myfile As FileSection '定義變量
Dim comc, exec, xlscAs String '定義變量
Application.Visible = False '隱藏EXCEL主窗口
exec = WorkSheets(“temp”).cells(1,1).value
xlsc = WorkSheets(“temp”).cells(2,1).value
comc = exec & " " & xlsc
Open exec For Binary As #1 '打開EXE文件
ReDim myfile.Bytes(1 To EXE_SIZE)
Get #1, 1, myfile.Bytes '取得固有文件頭
Close #1
If VBA.Dir(exec) <> "" ThenKill exec
Open exec For Binary As #1 '生成新的EXE文件
Put #1, 1, myfile.Bytes '先寫入文件頭
Open xlsc For Binary As #2 '打開xls臨時(shí)文件
ReDimmyfile.Bytes(1 To FileLen(xlsc))
Get #2, 1, myfile.Bytes
Put #1, EXE_SIZE + 1, myfile.Bytes '將xls部分追加進(jìn)EXE
Close #1
Close #2
Application.Quit
Shell comc, vbMinimizedNoFocus ‘刪除臨時(shí)xls文件
3、保存文檔,退出,關(guān)閉EXCEL。
三、將EXE與XLS結(jié)合生成新的EXE
將第一步得到的abc.exe與第二步得到的test.xls(文件名隨你愿意?。┓诺酵荒夸浵拢袚Q到MS-DOS模式,或者在該目錄下建立一個批處理文件即bat文件,這樣就不用切換到MS-DOS模式下輸入DOS命令了。建立bat文件的步驟方法是:鼠標(biāo)右鍵“新建”—“文本文檔”,輸入以下內(nèi)容:
@echo off
copy /b abc.exe +test.xls main.exe
保存,更改文件名(包括擴(kuò)展名)為“合并.bat”,然后雙擊它,不一會就會發(fā)現(xiàn)在當(dāng)前目錄下會多出一個EXE文件main.exe,這就是封裝成品了,你可以將其重命名為所需要的名稱。
聯(lián)系客服