簡介: 宏命令是一種很好的事件方式,我們可以利用該方式對橋梁檢測中經(jīng)常遇到的回彈計算問題進行適當?shù)恼Z言設計,從而減少很多重復的計算,這樣便可以提高我們的工作效率和數(shù)據(jù)的準確性。
關鍵字:EXCEL 宏 橋梁檢測 回彈強度

引言

  宏命令是基于VB程序而面向用戶的一種比較實用的編輯命令,利用它我們可以對一些繁瑣重復的事件進行連續(xù)操作,從而減少了不必要的工作量,提高了工作效率,同時,也可以通過VB語言對宏命令下的事件進行修改,使其能夠更好的為我們工作所用,正是由于宏有此種獨特的作用,所以我對宏進行了研究,并將其運用到我們橋梁檢測的回彈計算中。

  回彈強度是橋梁檢測中及其重要的一項檢測項目,通過對回彈強度的檢測結果,我們可以比較準確的得出病害構件的強度值,從而為整個橋梁的評定以及后期的維修加固提供可靠的數(shù)據(jù)支持。

  1、設計背景和方法

  現(xiàn)在國產(chǎn)的回彈儀有不少不能夠直接求值(例如:山東樂陵市回彈儀器廠生產(chǎn)的ZC3-A型回彈儀),需要對照回彈強度換算表進行查詢,其過程比較繁瑣,甚至有些時候眼誤,造成數(shù)據(jù)結果的真實性和可靠性有所下降,鑒于此種情況,決定對回彈強度計算進行計算機處理。具體的設計方法是:先利用概率統(tǒng)計理論對每一個回彈強度對照表中的各個數(shù)據(jù)進行概率統(tǒng)計,并得出回歸分析參數(shù),計算不同炭化深度條件下的回彈計算公式,然后利用EXCEL中的宏命令將各回彈計算公式進行函數(shù)化,從而達到提高數(shù)據(jù)計算的準確性和減少繁瑣性。

  2、具體的設計過程

  2.1 回彈強度計算公式的求導

  先利用EXCEL將回彈對照表中的各個數(shù)據(jù)制成工作表,然后利用EXCEL把各個炭化深度條件下的回彈值自動生成折線圖表,并最終利用折線圖表求取回歸線的斜率和各軸的截距,這樣最終得出在不同回彈強度條件下的回彈計算公式,由于篇幅有限,具體的計算過程請自行計算,現(xiàn)僅將結果公布如下,供大家核實:

  當炭化深度L=1.0時,回彈強度Rn=0.0229689N2.0108

  當炭化深度L=1.5時,回彈強度Rn=0.021726N2.0108

  當炭化深度L=2.0時,回彈強度Rn=0.0204743N2.0108

  當炭化深度L=2.5時,回彈強度Rn=0.0197257N2.0108

  當炭化深度L=3.0時,回彈強度Rn=0.0189762N2.0108

  當炭化深度L=3.5時,回彈強度Rn=0.0184769N2.0108

  當炭化深度L=4.0時,回彈強度Rn=0.0179754N2.0108

  當炭化深度L=4.5時,回彈強度Rn=0.0169722N2.0108

  當炭化深度l=5.0時,回彈強度Rn=0.0162276N2.0108

  注:公式中N代表回彈平均值。

  2.2宏命令的編輯

  (1)制作回彈法混凝土強度試驗記錄表,如圖1所示

  

  圖1 回彈法混凝土強度試驗記錄表

 。2)錄制宏命令并進行必要的修改

  首先選擇EXCEL中工具下的宏命令,然后利用函數(shù)將各個回彈計算公式插入到相應的單元格中,但為了一些操作過程中的程序的反復運行,需要對已經(jīng)錄制好的宏命令進行修改,具體的做法是,先啟用宏,然后選擇編輯命令就可以進入VB設計面板對各個事件進行函數(shù)修改,最終可以生成以下的事件程序:

  Sub 炭化1()

  Range("S11:T11").Select

  ActiveCell.FormulaR1C1 = "=1.0"

  Range("Q11").Select

  ActiveCell.FormulaR1C1 = ""

  Range("P11").Select

  ActiveCell.FormulaR1C1 = ""

  Range("P11:Q11").Select

  Range("Q11").Activate

  Selection.Copy

  Range("H11:I11").Select

  ActiveSheet.Paste

  Range("J11:K11").Select

  ActiveSheet.Paste

  Range("L11:M11").Select

  ActiveSheet.Paste

  Range("N11:O11").Select

  ActiveSheet.Paste

  Range("H11:Q11").Select

  Application.CutCopyMode = False

  Selection.AutoFill Destination:=Range("H11:Q15"), Type:=xlFillDefault

  Range("H11:Q15").Select

  Range("G11").Select

  ActiveCell.FormulaR1C1 = ""

  Range("F11").Select

  ActiveCell.FormulaR1C1 = ""

  Range("E11").Select

  ActiveCell.FormulaR1C1 = ""

  Range("B11").Select

  ActiveCell.FormulaR1C1 = ""

  Range("C11").Select

  ActiveCell.FormulaR1C1 = ""

  Range("D11").Select

  ActiveCell.FormulaR1C1 = ""

  Range("B12").Select

  ActiveCell.FormulaR1C1 = ""

  Range("C12").Select

  ActiveCell.FormulaR1C1 = ""

  Range("D12").Select

  ActiveCell.FormulaR1C1 = ""

  Range("E12").Select

  ActiveCell.FormulaR1C1 = ""

  Range("F12").Select

  ActiveCell.FormulaR1C1 = ""

  Range("G12").Select

  ActiveCell.FormulaR1C1 = ""

  Range("G13").Select

  ActiveCell.FormulaR1C1 = ""

  Range("F13").Select

  ActiveCell.FormulaR1C1 = ""

  Range("E13").Select

  ActiveCell.FormulaR1C1 = ""

  Range("D13").Select

  ActiveCell.FormulaR1C1 = ""

  Range("C13").Select

  ActiveCell.FormulaR1C1 = ""

  Range("B13").Select

  ActiveCell.FormulaR1C1 = ""

  Range("B14").Select

  ActiveCell.FormulaR1C1 = ""

  Range("B15").Select

  Range("C14").Select

  ActiveCell.FormulaR1C1 = ""

  Range("D14").Select

  ActiveCell.FormulaR1C1 = ""

  Range("E14").Select

  ActiveCell.FormulaR1C1 = ""

  Range("F14").Select

  ActiveCell.FormulaR1C1 = ""

  Range("G14").Select

  ActiveCell.FormulaR1C1 = ""

  Range("G15").Select

  ActiveCell.FormulaR1C1 = ""

  Range("F15").Select

  ActiveCell.FormulaR1C1 = ""

  Range("E15").Select

  ActiveCell.FormulaR1C1 = ""

  Range("D15").Select

  ActiveCell.FormulaR1C1 = ""

  Range("C15").Select

  ActiveCell.FormulaR1C1 = ""

  Range("B15").Select

  ActiveCell.FormulaR1C1 = ""

  Range("R11").Select

  ActiveCell.FormulaR1C1="=RC[-10]:RC[-1](RC[-10]+RC[-9]+RC[-8]+RC[-7]+RC[-6]+RC[-5]+RC[-4]+RC[-3]+RC[-2]+RC[-1])/10"

  Range("R11").Select

  ActiveCell.FormulaR1C1="=(RC[-10]+RC[-9]+RC[-8]+RC[-7]+RC[-6]+RC[-5]+RC[-4]+RC[-3]+RC[-2]+RC[-1])/10"

  Range("R12").Select

  ActiveCell.FormulaR1C1="=(RC[-10]+RC[-9]+RC[-8]+RC[-7]+RC[-6]+RC[-5]+RC[-4]+RC[-3]+RC[-2]+RC[-1])/10"

  Range("R15").Select

  ActiveWindow.SmallScroll Down:=3

  Range("K24").Select

  ActiveCell.FormulaR1C1 = "=R[-13]C[7]"

  Range("L24").Select

  ActiveCell.FormulaR1C1 = "=R[-12]C[6]"

  Range("M24").Select

  ActiveCell.FormulaR1C1 = "=R[-11]C[5]"

  Range("N24").Select

  ActiveCell.FormulaR1C1 = "=R[-10]C[4]"

  Range("O24").Select

  ActiveCell.FormulaR1C1 = "=R[-9]C[3]"

  Range("O25").Select

  ActiveWindow.SmallScroll Down:=-3

  Range("S12:T12").Select

  ActiveCell.FormulaR1C1 = "=R[-1]C"

  Range("S13:T13").Select

  ActiveCell.FormulaR1C1 = "=R[-2]C"

  Range("S14:T14").Select

  ActiveCell.FormulaR1C1 = "=R[-3]C"

  Range("S15:T15").Select

  ActiveCell.FormulaR1C1 = "=R[-4]C"

  Range("S16:T16").Select

  ActiveWindow.SmallScroll Down:=6

  Range("K29").Select

  ActiveCell.FormulaR1C1 = "=R[-14]C[8]"

  Range("L29").Select

  ActiveCell.FormulaR1C1 = "=R[-14]C[7]"

  Range("M29").Select

  ActiveCell.FormulaR1C1 = "=R[-14]C[6]"

  Range("N29").Select

  ActiveCell.FormulaR1C1 = "=R[-14]C[5]"

  Range("O29").Select

  ActiveCell.FormulaR1C1 = "=R[-14]C[4]"

  Range("K30").Select

  ActiveCell.FormulaR1C1 = "=0.0229689*POWER(R[-6]C,2.0108)"

  Range("K30").Select

  Selection.AutoFill Destination:=Range("K30:O30"), Type:=xlFillDefault

  Range("K30:O30").Select

  Range("Q31:T31").Select

  ActiveCell.FormulaR1C1 = "=MIN(R[-1]C[-6]:R[-1]C[-2])"

  Range("H32:T32").Select

  ActiveCell.FormulaR1C1 = "=R[-1]C[9]"

  Range("H33").Select

  ActiveWindow.SmallScroll Down:=-6

  Range("B11:Q15").Select

  Selection.Copy

  Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _

  False, Transpose:=False

  Range("M16").Select

  Range("P17").Select

  Application.CutCopyMode = False

  Selection.ClearContents

  End Sub

 。3)運行程序并進行校核

  經(jīng)過具體的核對以后發(fā)現(xiàn)該程序勝利通過,其誤差范圍為±0.1。

  結 語

  本文中所設計的回彈計算方法僅是本人在現(xiàn)實工作中利用自身所學知識所設計的一個簡單的程序,該程序不一定要依托于EXCEL的宏命令,也可以用VB語言進行設計并生成可執(zhí)行的應用程序,本文中之所以將其運用到宏命令中完全是出于工作中的方便,如果哪位同志有興趣的話,可以用VB語言設計,其效果也相當不錯,不妨試試!

  另外,由于篇幅的原因,本文僅將炭化深度為1.0時的設計程序用于本文,其它炭化條件下的事件過程均可參照該事件函數(shù)進行編輯,在此不再贅敘!

  參考文獻:

  【1】徐奔,橋梁檢測與維修加固百問,北京,人民交通出版社,2002

  【2】許永明,公路養(yǎng)護與管理,北京,人民交通出版社,1998

  【3】姚玲森,橋梁工程,北京,人民交通出版社,2003

  【4】中華人民共和國行業(yè)標準,回彈法檢測混凝土抗壓強度技術規(guī)程JGJ/T23-2001,北京,人民交通出版社,2001