正則匹配開(kāi)發(fā)函數(shù)在工程量計(jì)算中的應(yīng)用_第1頁(yè)
已閱讀1頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  正則匹配開(kāi)發(fā)函數(shù)在工程量計(jì)算中的應(yīng)用</p><p>  摘要:為了利用工程量清單中的工程量計(jì)算公式方便快速地得到工程量計(jì)算結(jié)果,文章在Excel中開(kāi)發(fā)函數(shù),采用正則匹配算法處理數(shù)據(jù),完成插入函數(shù)即可使計(jì)算公式表達(dá)式轉(zhuǎn)化為計(jì)算結(jié)果,為類似工程量計(jì)算公式的轉(zhuǎn)化提供了可借鑒的經(jīng)驗(yàn)。 </p><p>  關(guān)鍵詞:正則表達(dá)式;正則匹配;函數(shù)開(kāi)發(fā);Excel </p&g

2、t;<p>  中圖分類號(hào):O174 文獻(xiàn)標(biāo)識(shí)碼: A 文章編號(hào): </p><p><b>  0 引言 </b></p><p>  工程量清單是工程投資計(jì)算的基礎(chǔ),工程量清單計(jì)算底稿更是工程存檔的重要資料,如何合理利用工程量清單中的計(jì)算公式快速方便地計(jì)算出工程量是工程設(shè)計(jì)人員一直以來(lái)關(guān)心的課題。文中利用正則匹配算法處理數(shù)據(jù),在Excel中開(kāi)發(fā)函數(shù),

3、以實(shí)現(xiàn)工程量計(jì)算公式表達(dá)式轉(zhuǎn)化為計(jì)算結(jié)果的效果。文章中以水利工程為例闡述主流的兩類工程量計(jì)算公式的轉(zhuǎn)化方法,為各類工程的工程量計(jì)算公式轉(zhuǎn)化提供了可借鑒的經(jīng)驗(yàn)。 </p><p>  現(xiàn)階段工程量清單的狀況 </p><p>  工程量清單底稿制度是建設(shè)工程的一項(xiàng)基本制度,旨在為工程量計(jì)算結(jié)果提供明確依據(jù)。縱觀現(xiàn)階段工程量清單的計(jì)算過(guò)程,大多數(shù)工程設(shè)計(jì)人員仍然采用手動(dòng)添加等號(hào)抑或從網(wǎng)絡(luò)上下載

4、他人計(jì)算模板的方式來(lái)完成計(jì)算公式向公式計(jì)算結(jié)果的轉(zhuǎn)化。然而,前者重復(fù)操作次數(shù)多、速度慢、效率低,且遇到有文字說(shuō)明的計(jì)算公式就出現(xiàn)錯(cuò)誤;后者雖適當(dāng)避免了前者的缺點(diǎn),可是模板的模式固定不可調(diào)整、適用性差,且用戶對(duì)模板的后臺(tái)運(yùn)行模式全然不知,很容易出現(xiàn)出現(xiàn)了錯(cuò)誤而不自知的情況,十分危險(xiǎn)。鑒于以上原因,開(kāi)發(fā)一款操作方便、適用性廣、運(yùn)行模式為用戶掌握的工程量轉(zhuǎn)化程序是十分必要的。文章采用正則配方法開(kāi)發(fā)函數(shù)編寫(xiě)程序,完成公式向其計(jì)算結(jié)果的轉(zhuǎn)化。 &

5、lt;/p><p>  正則表達(dá)式匹配算法 </p><p>  正則表達(dá)式英文名為Regular Expression,是一種描述字符串結(jié)構(gòu)模式的形式化表達(dá)方法,通常用于搜索和替換符合某個(gè)模式的文本內(nèi)容[1]。正則匹配算法即利用正則表達(dá)式的匹配模式參數(shù)(Pattern)實(shí)現(xiàn)提取、替換或獲取符合目標(biāo)模式的文本內(nèi)容的算法。 </p><p>  正則表達(dá)式的應(yīng)用十分廣泛,

6、通常從雜亂的語(yǔ)句中獲取E-mail地址、匯總含非數(shù)字字符的數(shù)據(jù)、刪除重復(fù)字符等普通搜索替換完成不了的工作,正則表達(dá)式都可以順利完成。在VBA中引用正則表達(dá)式轉(zhuǎn)化工程量計(jì)算公式也是匯總含非數(shù)字字符數(shù)據(jù)應(yīng)用的一種。 </p><p><b>  設(shè)計(jì)開(kāi)發(fā)函數(shù) </b></p><p>  2.1開(kāi)發(fā)函數(shù)實(shí)現(xiàn)工程量計(jì)算公式轉(zhuǎn)化為計(jì)算結(jié)果 </p><p&

7、gt;  水利工程量計(jì)算公式分為兩種,即純計(jì)算公式(計(jì)算式一)和帶標(biāo)注性文字的計(jì)算公式(計(jì)算式二)兩種,如下所示: </p><p>  0.24*(0.4-0.06)*2.76*4*4 (計(jì)算式一) </p><p>  0.64[寬]*0.15[厚]*(1.5-0.24)[長(zhǎng)]*4[面]*10[個(gè)同上] (計(jì)算式二) </p><p>  對(duì)于純計(jì)算公式而言,我

8、們可以利用VBA語(yǔ)言在Excel中開(kāi)發(fā)一般函數(shù)(如Eva函數(shù)),而對(duì)于帶有標(biāo)注性文字的計(jì)算公式普通的VBA語(yǔ)言卻無(wú)能為力,可是正則匹配方法卻可以解決這個(gè)難題。 </p><p>  正則表達(dá)式英文名為Regular Expression,是一種描述字符串結(jié)構(gòu)模式的形式化表達(dá)方法,通常用于搜索和替換符合某個(gè)模式的文本內(nèi)容[7]。正則匹配算法即利用正則表達(dá)式的匹配模式參數(shù)(Pattern)實(shí)現(xiàn)提取、替換或獲取符合目標(biāo)

9、模式的文本內(nèi)容的算法。 </p><p>  正則表達(dá)式的應(yīng)用十分廣泛,通常從雜亂的語(yǔ)句中獲取E-mail地址、匯總含非數(shù)字字符的數(shù)據(jù)、刪除重復(fù)字符等普通搜索替換完成不了的工作,正則表達(dá)式都可以順利完成。在VBA中引用正則表達(dá)式轉(zhuǎn)化工程量計(jì)算公式也是匯總含非數(shù)字字符數(shù)據(jù)應(yīng)用的一種。 </p><p>  2.2 正則計(jì)算函數(shù)代碼設(shè)計(jì) </p><p>  打開(kāi)工程量

10、清單,同時(shí)按Alt+F11鍵調(diào)出Visual Basic編輯器,單擊[插入] / [模塊]命令則新建一個(gè)空的全局模塊(模塊1),雙擊工程資源管理器中的模塊1 ,輸入以下代碼(代碼 code1): </p><p>  Function 正則計(jì)算(rng As Range) </p><p>  Application.Volatile'設(shè)置強(qiáng)制性計(jì)算 </p><

11、;p>  Dim str As String '定義str為字符串變量 </p><p>  Dim regExp As Object '定義regExp為對(duì)象變量 </p><p>  Set regExp = CreateObject("VBSCRIPT.REGEXP")'創(chuàng)建正則表達(dá)式引用對(duì)象 </p><p>

12、;  If Len(rng) = 0 Then'判斷rng是否為空 </p><p>  正則計(jì)算 = ""'若rng為空則賦空值給函數(shù)正則表達(dá)式 </p><p><b>  Else </b></p><p>  '若rng不為空則對(duì)正則對(duì)象進(jìn)行匹配設(shè)計(jì) </p><p>

13、  With regExp </p><p>  .Pattern = "\[.*?\]" '設(shè)置正則匹配規(guī)則 </p><p>  .Global = True '設(shè)置匹配為全局的 </p><p>  str = .Replace(rng.Text, "") '將匹配結(jié)果替換為空 </p>

14、;<p><b>  End With </b></p><p>  正則計(jì)算 = Round(Application.Evaluate(str), 2) </p><p><b>  End If </b></p><p>  End Function </p><p>  本段代碼

15、(代碼code1)中,首先用set語(yǔ)句創(chuàng)建對(duì)正則表達(dá)式的引用,其次對(duì)rng對(duì)象進(jìn)行是否為空的判斷,如果不為空則進(jìn)行正則匹配,匹配公式“.Pattern = "\[.*?\]"”的含義是匹配中括號(hào)及其內(nèi)的所有字符,如果公式中不含中括號(hào)和文字性說(shuō)明(如計(jì)算式一),則跳過(guò)匹配,將計(jì)算式賦值給str并進(jìn)行下一步計(jì)算;如果含(如計(jì)算式二),則將中括號(hào)和其內(nèi)的文字刪除(即刪除[寬]、[厚] 、[長(zhǎng)] 、[面]和[個(gè)同上]),則剩

16、下的字符就是就是純計(jì)算公式str:0.64*0.15*(1.5-0.24)*4*10。最后用Evaluate方法將str轉(zhuǎn)化為計(jì)算結(jié)果,同時(shí)用 Round函數(shù)將計(jì)算結(jié)果保留到兩位小數(shù)。 </p><p>  2.3 正則計(jì)算函數(shù)在水里工程量清單中的應(yīng)用 </p><p>  在單元格[D4]、[D5]中分別輸入公式一和公式二,選擇[E4]單元格,單擊插入函數(shù),在彈出的對(duì)話框中“或選擇類別(

17、C):”下拉菜單中選擇“全部”,然后在“選擇函數(shù)(N):”列表框中撥動(dòng)滾動(dòng)條則可以找到(代碼code1)中新建的函數(shù)“正則計(jì)算”,選擇它并單擊確定,在彈出的“函數(shù)參數(shù)”對(duì)話框中選擇rng參數(shù)為單元格[D4],單擊確定,則[E4]中即計(jì)算出單元格[D4]中計(jì)算公式的結(jié)果3.6。在[E5]內(nèi)同樣填充“正則計(jì)算”公式,則計(jì)算式二的計(jì)算結(jié)果4.84也顯示在單元格中。 </p><p>  由上述操作效果來(lái)看,正則計(jì)算函數(shù)

18、對(duì)于純計(jì)算公式的計(jì)算和含有文字說(shuō)明的數(shù)據(jù)計(jì)算都是非常有效的。這里必須強(qiáng)調(diào)一下,正則表達(dá)式用于在雜亂語(yǔ)句中搜索和替換符合某個(gè)模式的文本內(nèi)容,在上述水利工程量清單示例中即為匹配中括號(hào)及其中的字符;如果目標(biāo)字符串沒(méi)有任何規(guī)則和模式可循,那么正則表達(dá)式對(duì)其也是無(wú)能為力的。 </p><p><b>  3結(jié)語(yǔ) </b></p><p>  正則匹配方法開(kāi)發(fā)函數(shù)將工程量計(jì)算式轉(zhuǎn)

19、化為計(jì)算結(jié)果是有效的,它不僅適用于純計(jì)算公式也適用于含有文字說(shuō)明的計(jì)算模式。正則匹配函數(shù)的計(jì)算效果和應(yīng)用廣泛性都令人滿意,為各類工程量計(jì)算公式的轉(zhuǎn)化提供了可借鑒的經(jīng)驗(yàn)。 </p><p><b>  參考文獻(xiàn) </b></p><p>  [1] 羅剛君.ExcelVBA程序開(kāi)發(fā)自學(xué)寶典(第2版).北京:電子工業(yè)出版社,2011.8 </p><p

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論