Excel竖曲线计算(3页).doc
-Excel竖曲线计算-第 3 页利用Excel表格进行全线线路竖曲线的统一计算高速公路纵断面线型比较复杂,竖曲线数量比较多。由于相当多的竖曲线分段造成了设计高程计算的相对困难,为了方便直接根据里程桩号计算设计高程,遂编制此计算程序。程序原理:1、根据设计图建立竖曲线参数库;2、根据输入里程智能判断该里程位于何段竖曲线上;3、根据得到的竖曲线分段标志调取该分段的曲线参数到计算表格中;4、把各曲线参数带入公式进行竖曲线高程的计算;5、对程序进行优化和简化,去掉中间环节,进行直接计算;6、防止计算过程中的误操作,对计算表进行相应的保护。竖曲线的高程计算原理公式:H=G+B*A+(-1)J*X2÷(2R)H: 计算里程的设计高程K: 计算点里程D: 竖曲线交点里程G: 竖曲线交点的高程R: 竖曲线半径T: 切线长M: 前坡度I1P: 后坡度I2A: A=Abs(K-D)X: A>T => X=0; A<T => X=T-AJ: M-P<0 => J=0; M-P>=0 => J=1B: K<=D =>B=-M ; K>D => B=P程序特色:1、 可以无限添加竖曲线,竖曲线数据库不限制竖曲线条数;2、 直接输入里程就可以计算设计高程,不需考虑该里程所处的竖曲线分段;3、 对计算公式进行保护,表格中不显示公式,不会导致公式被错误修改或恶意编辑。程序的具体编制步骤:1、新建Excel工作薄,对第一第二工作表重新命名为“参数库”和“计算程序”,根据设计图建立本标段线路竖曲线的参数库,需要以下条目:(1)、竖曲线编号;(2)、竖曲线的前后坡度(I1、I2)不需要把坡度转换为小数;(3)、竖曲线半径、切线长(不需要考虑是凸型或凹型);(4)、竖曲线交点里程、交点高程;(5)、竖曲线起点里程、终点里程(终点里程不是必要参数,只作为复核检测用);如图1所示: 图1 2、进行计算准备:(1)、根据输入里程判断该里程所处的曲线编号:需要使用lookup函数,函数公式为“LOOKUP(A2,参数库!H3:H25,参数库!A3:A25)”。如图2所示:里程为K15+631的桩号位于第11个编号的竖曲线处,可以参照图1 进行对照(2)、在工作表“程序计算”中对应“参数库”相应的格式建立表格根据判断得出的竖曲线编号,把相应编号的各参数调入工作表“程序计算”,需要使用vlookup函数,例如:第四列调取坡度I1函数公式为“VLOOKUP(C2,参数库!A1:I25,2)”调取交点高程的函数公式为“VLOOKUP(C2,参数库!A1:I25,7)”结果出来可以参照图1进行对照。如图3所示:(3)、现在计算该里程设计高程所需要的参数已经具备,可以编制公式进行计算了,根据竖曲线高程计算的原理公式,把单元格数据套入公式:公式为:H=G+B*A+(-1)J*X2÷(2R)其中B的函数公式为:IF(K<=D,-M,P) 转化为表格编号就是IF(A2<=H2,-1*D2/100,E2/100)A 的函数公式为ABS(A2-H2)X的函数公式位IF(ABS(A2-H2)>G2,0,(G2-ABS(A2-H2) 图2 图3J的函数公式为 IF(D2/100-E2/100<0,0,1)H=G+B*A+(-1)J*X2÷(2R) =I2+ IF(A2<=H2,-1*D2/100,E2/100)* ABS(A2-H2)+POWER(-1), IF(D2/100-E2/100<0,0,1)*POWER(IF(ABS(A2-H2)>G2,0,(G2-ABS(A2-H2),2)/2/F2现在把H的计算函数输入B2单元格,看看结果是不是出来了,这时候可以把这个结果和计算器计算出来的结果进行对照。 如图4 所示: 图4万事俱备,现在开始计算,下拉B2单元格,竟然出错,如图5 图5解决办法就是同时选择B2直到后面的K2,然后再下拉,下拉前一定要把引用的“参数库”中的单元格进行锁定,如图6、7。这样就显得复杂了点,现在开始简化计算程序,C2 到K2单元格都是其中间作用的,可以直接套用到高程的计算公式中,分别把C2 到K2单元格所对应的公式替换到单元格B2,得到最终公式:=VLOOKUP(C2,参数库!$A$1:$I$25,7)+ IF(A2<=VLOOKUP(C2,参数库!$A$1:$I$25,6),-1*VLOOKUP(C2,参数库!$A$1:$I$25,2)/100,VLOOKUP(C2,参数库!$A$1:$I$25,3)/100)* ABS(A2-VLOOKUP(C2,参数库!$A$1:$I$25,6)+POWER(-1), IF(VLOOKUP(C2,参数库!$A$1:$I$25,2)/100-VLOOKUP(C2,参数库!$A$1:$I$25,3)/100<0,0,1)*POWER(IF(ABS(A2-VLOOKUP(C2,参数库!$A$1:$I$25,6)>VLOOKUP(C2,参数库!$A$1:$I$25,5),0,(VLOOKUP(C2,参数库!$A$1:$I$25,5)-ABS(A2-VLOOKUP(C2,参数库!$A$1:$I$25,6),2)/2/VLOOKUP(C2,参数库!$A$1:$I$25,4) 图6 图7