Excel 编程.docx
- 文档编号:8554919
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:9
- 大小:61.67KB
Excel 编程.docx
《Excel 编程.docx》由会员分享,可在线阅读,更多相关《Excel 编程.docx(9页珍藏版)》请在冰豆网上搜索。
Excel编程
在当前的高速公路施工中,全站仪以其高精度、使用简便的特点在施工测量放样中得到广泛的应用。
它的使用还有一个意义,它将测量从传统的二维测量提升到三维测量的高度,使测量效率大为提高。
全站仪使用时需计算大量的坐标,坐标的正确和精度直接关系到测量结果的准确度;另外,对于现场计算的坐标,能否迅速的得出结果也会影响全站仪的使用效率,所以准确、快速的坐标计算也是全站仪使用中的关键一环。
坐标的计算涉及到大量的数据和公式,计算时极易出错。
测量中使用最多、计算最为复杂的是公路中桩、边桩坐标和方位角,其他的施工测量都是以此作为参照,经过简单运算即可得结果。
现测量员普遍采用可编程计算器帮助计算,使用前需根据不同的计算器特性输入程序,计算时根据不同的路段选择不同的程序输入参数,逐个得到坐标或方位角,还得反复校核。
这对于大批量计算来说是一个不小的工程。
现在,电脑在施工单位已得到使用普及,在工程量及数测量数据处理过程中,Office中EXCEL经常是测量技术人员利用的工具。
本人根据本人从2002年至2005年的利用电脑处理测量资料的经验结合EXCEL的强大功能,总结出了用电脑计算公路中桩、左侧、右侧坐标的可行方法,并利用EXCEL的逻辑语句编制了一个小的应用程序。
希望能把测量人员从重复性的劳动中解脱出来。
二、工作原理
1.应用程序的目标
上文已讲到施工测量中使用最多、计算最为复杂的是公路中线逐点坐标和切线方位角,既中桩的X值、Y值。
EXCEL的主要目标就是计算公路中线的中桩参数。
2.源程序
L1F:
N:
G:
R:
U:
Q:
J:
K起算要素
L2Defm4扩大内存
L3M=I/2-I^3/240/R^2M为加设缓和曲线后使切线增长的距离
L4P=I^2/24/R-I^4/2688/R^3P为加设缓和曲线,圆曲线相对于切线的内移量
L5E=(R+P)/cos(N/2)-RE外矢距在EXCEL中角度默认为弧度。
L6L=πRN/180+IL为曲线长含缓和段
L7T=M+(R+P)tan(N/2)切线长
L8A=Q-T:
B=A+I:
D=A+L:
C=D-IZH:
HY:
HZ:
YH里程桩号
L9Rec(T,F+180)ZH点坐标增量计算
L10Z[1]=V+J:
Z[2]=W+KZH点坐标(V,W坐标增量,计算机内部运算)
L11Rec(T,F+GN)HZ点坐标增量计算
L12Z[3]=V+J:
Z[4]=W+KHZ点坐标
LBIθ
L14{H,S,E}待点要素
L15H
L16≠>H
L17≠>H
L18≠>H
L19≠>GOTO5 第二段直线上任一点坐标计算
L20LBII第一段直线坐标计算开始
L21Rec(Q-H,F+180)中桩坐标增量计算
L22X=V+J:
Y=W+K中桩坐标
L23X=X+V:
“X”=◢
L24Y=Y+W:
“Y”=◢第一段直线上任一点坐标计算结果
L25GOTOθ
L26LbI2第一段缓和曲线坐标计算开始
L27Z=H-A所求点到ZH距离
L28O=90Z^2/R/I/π所求点的方位角
L29X=Z-Z^5/40/R^2/I^2+Z^9/3456/R^4/I^4
L30Z=Z^6/6/R/I-Z^7/336/R^3/I^3+Z^11/42440/R^5/I^5第一段缓和曲线上任一点切线支距法坐标计算
L31LBI6第一段缓和曲线、圆曲线坐标换算计算
L32Rec(X,F)
L33X=Z[1]+V:
Y=Z[2]+W
L34Rec(X,F+90G)
L35X=X+V:
Y=Y+W
L36LbI3圆曲线上任一点切线支距法计算开始
L37Z=H-A-I/2
L38O=180Z/R/πZ所对中心角
L39X=Z-Z^3/6/R^2+Z^5/120/R^4+M
L40Z=Z^2/2/R-Z^4/R^3/24+Z^6/720/R^5+P
L41GOTO6
L42LbI4第二段缓和曲线计算开始
L43Z=D-H到HZ点长度
L44O=90Z^2/R/I/πZ所对中心角
L45X=Z-Z^5/40/R^2/I^2+Z^9/3456/R^4/I4
L46Z=Z^3/6/R/I-Z^7/336/R^3/I^3+Z^11/42240/R^5/I^5
L47Rec(X,F+GN+180)
L48X=Z[3]+V:
Y=Z[4]+W
L49Rec(X,F+GN+180-90G)
L50X=X+V:
Y=Y+W
L51X=X+V:
“X”=◢
L52Y=Y+V:
“Y”=◢
L53GOTOθ
程序中符号说明
F-第一直线段正方位角(即后视切线上任一点(如ZH)至交点的方位角;
N—交点转向角(即偏角);右偏角为正,左偏角为负,输入转向角时不得输入“+、-”
G—条件(左偏输入-1,右偏输入+1);
R—半径;
I—缓和曲线长度(m)(圆曲线I输入0);
Q—交点里程桩号;
J—交点X坐标值;
K—交点Y坐标值;
H—所求点里程桩号;
X、Y—所求点X、Y坐标值。
3.基本思路
本文基本思路是在EXECEL表格中建立若干个工作表,利用EXECL的逻辑循环语句(IF,VLOOKUP)与函数计算公式把这些工作表链接一起。
本文利用蒲石河对外永久公路(K1+200-K2+100段)中桩及边桩计算做出EXECL实例(路宽10米,路基8米,路肩2米),下面以此展开叙述:
⑴、首先在电子表中建立9个工作表,分别命名为基本资料、JD7、JD8、JD9、JD10、JD11、JD12、JD13、成果。
⑵、a首先在基本资料工作表中输入如下表相对的数据。
在电子表格中,三角函数计算以弧度为单位,所以角度值必须在单元格中必须利用pi()/180在角度与弧度的转换。
在转向角输入时,向左转时在G对应的单元格中输入-1,向右转时在G对应的单元格中输入1(如表1)。
方位角所对应的数据可以直接从设计提供的参数表输入,另外可以用几个单元格链接在一起计算,在表2中利用9个单元格链接起来计算。
例如利用JD7与JD6所对应的XY值相减,得出JD7所对行数据的△X△Y值,在JD7所对应行的反切值1数据中输入公式=IF(E4="","",IF(F4=0,"",ATAN(G4/F4))),在JD7所对应行的反切值2数据中输入公式=IF(E4="","",IF(G4=0,"",ATAN(F4/G4))),在JD7所对应行的数据1中输入公式=IF(AND(F4>0,G4=0),0,("")),在JD7所对应行的数据2中输入公式=IF(AND(G4>0,F4>0),H4,IF(AND(G4>0,F4=0),PI()/2,IF(AND(G4>0,F4<0),PI()/2-I4,("")))),在JD7所对应行的数据3中输入公式IF(AND(F4<0,G4=0),PI(),("")),在JD7所对应行的数据4输入公式=IF(AND(G4<0,F4<0),PI()+H4,IF(AND(F4=0,G4<0),1.5*PI(),IF(AND(G4<0,F4>0),1.5*PI()-I4,("")))),在JD7所对应行数据方位角弧度中输入公式=IF(AND(F4>0,G4=0),J4,IF(G4>0,K4,IF(AND(G4=0,F4<0),L4,IF((G4<0),M4,("")))))。
表1
表2
b利用已输入的基本资料数据,计算出如下表表3对应的单元格的数据。
现以JD7所对应行做公式叙述。
在M所对应单元格输入公式IF((OR(AD4=0,AE4=0)),"",AE4/2-AE4^3/240/AD4^2),在P所对应单元格输入公式IF(AD4=0,"",AE4^2/24/AD4-AE4^4/2688/AD4^3),在E所对应单元格输入公式IF(OR(D4="",E4=""),"",(AD4+AH4)/COS(AC4/2)-AD4),在L所对应单元格输入公式IF(OR(D4="",E4=""),"",PI()*AD4*AC4/PI()+AE4),在T所对应单元格输入公式IF(OR(D4="",E4=""),"",IF(AG4="",0,AG4+(AD4+AH4)*TAN(AC4/2))),在ZH所对单元格输入公式IF(OR(D4="",E4=""),"",C4-AK4),在HY所对应单元格输入公式IF(OR(D4="",E4=""),"",AL4+AE4),在QZ所对应单元输入公式IF(OR(D4="",E4=""),"",AM4/2+AO4/2),在YH所对应单元格输入公式IF(OR(D4="",E4=""),"",AP4-AE4),在HZ所对应单元格输入公式IF(OR(D4="",E4=""),"",AL4+AJ4),在BC所对单元格输入步长。
表3
c.以上基本资料工作表以JD7所对应行做例子,JD8至JD13所对应行输入公式采用电子表格中的编辑栏中的向下填充功能,向下填充公式。
⑶.然后利用源程序开始在工作表JD7、JD8、JD9、JD10、JD11、JD12、JD13中进行编单元格。
现在以JD7所对应的工作表进行实例叙述。
工作表在计算过程中只能上一个交点的HZ点到本交点的HZ点间的数据进行计算。
a、例如表4,在工作表的第一个单元格输入数字7(与JD7所对应的数字7一致),然后把JHZH、JDX、JDY、R、I、P、E、F、G、N、M、BC所对单元格参数与基本资料所对应的单元格参数链接起来,加宽值输入设计加宽值,常数输入为从路肩开始横向增加的宽度。
表4
b、例如表5,桩号(ZH-HZ)所对应的单元格中分别输入公式VLOOKUP(A1,基本资料!
$A$3:
$AQ$32,38,)、VLOOKUP(A1,基本资料!
$A$3:
$AQ$32,39,)、VLOOKUP(A1,基本资料!
$A$3:
$AQ$32,40,)、VLOOKUP(A1,基本资料!
$A$3:
$AQ$32,41,)、VLOOKUP(A1,基本资料!
$A$3:
$AQ$32,42,)。
在ZH所对应的参数单元格输入公式IF(AND(A8>=A$7,A8<=A$8),A$3-A8,IF(AND(A8>=A$8,A8<=A$9),A8-A$8,IF(AND(A8>=A$9,A8<=A$11),(A8-A$8-E$3/2),IF(AND(A8>=A$11,A8<=A$12),A$12-A8,"")))),利用编辑工具栏中向下填充公式。
在ZH点与HZ点对应的X、Y单元格中分别输入公式B3+F3*COS(A5+PI())、C3+F3*SIN(A5+PI())、B3+F3*COS(A5+B5*C5)、C3+F3*SIN(A5+B5*C5),首先计算出ZH点与HZ点所对应的X、Y坐标。
在ZH点所对应的切线方位角单元格IF(A8<=A$8,A$5,IF(AND(A8>=A$8,A8<=A$9),0.5*B8^2/D$3/E$3*B$5+A$5,IF(AND(A8>=A$9,A8<=A$11),B8/D$3*B$5+A$5,IF(AND(A8>=A$11,A8<=A$12),0.5*B8^2/D$3/E$3*(-B$5)+A$5+B$5*C$5,IF(A8>=A$12,A$5+B$5*C$5))))),然后利用向下填充功能把公式向下填充,计算相对应的桩号在切线方向的方位角。
在HY点所对应的X、Y单元格中输入相应公式IF(AND(A9>=A$7,A9<=A$8),ROUND(B9*COS(A$5+PI())+B$3,3),IF(AND(A9>=A$8,A9<=A$9),ROUND(C$8+COS(A$5)*(B9-B9^5/40/D$3^2/E$3^2+B9^9/3469/D$3^4/E$3^4)+COS(A$5+PI()/2*B$5)*(B9^3/6/D$3/E$3-B9^7/336/D$3^3/E$3^3+B9^11/42240/D$3^5/E$3^5),3),IF(AND(A9>=A$9,A9<=A$11),ROUND(C$8+COS(A$5)*(B9-B9^3/6/D$3^2+B9^5/120/D$3^4+D$5)+COS(A$5+PI()/2*B$5)*(B9^2/2/D$3-B9^4/D$3^3/24+B9^6/720/D$3^5+I$3),3),IF(AND(A9>=A$11,A9<=A$12),ROUND(C$12+COS(A$5+B$5*C$5+PI())*(B9-B9^5/40/D$3^2/E$3^2+B9^9/3469/D$3^4/E$3^4)+COS(A$5+PI()+B$5*C$5-PI()/2*B$5)*(B9^3/6/D$3/E$3-B9^7/336/D$3^3/E$3^3+B9^11/42240/D$3^5/E$3^5),3),""))))与IF(AND(A9>=A$7,A9<=A$8),ROUND(B9*SIN(A$5+PI())+C$3,3),IF(AND(A9>=A$8,A9<=A$9),ROUND(D$8+SIN(A$5)*(B9-B9^5/40/D$3^2/E$3^2+B9^9/3469/D$3^4/E$3^4)+SIN(A$5+PI()/2*B$5)*(B9^3/6/D$3/E$3-B9^7/336/D$3^3/E$3^3+B9^11/42240/D$3^5/E$3^5),3),IF(AND(A9>=A$9,A9<=A$11),ROUND(D$8+SIN(A$5)*(B9-B9^3/6/D$3^2+B9^5/120/D$3^4+D$5)+SIN(A$5+PI()/2*B$5)*(B9^2/2/D$3-B9^4/D$3^3/24+B9^6/720/D$3^5+I$3),3),IF(AND(A9>=A$11,A9<=A$12),ROUND(D$12+SIN(A$5+B$5*C$5+PI())*(B9-B9^5/40/D$3^2/E$3^2+B9^9/3469/D$3^4/E$3^4)+SIN(A$5+PI()+B$5*C$5-PI()/2*B$5)*(B9^3/6/D$3/E$3-B9^7/336/D$3^3/E$3^3+B9^11/42240/D$3^5/E$3^5),3),""))))。
在公路中桩HY、QZ、YH及ZH点以下所对应的X、Y单元格填充以上公式,利用以公式计算出中桩坐标。
ZH点以下所对桩号内输入上一个交点处HZ点桩号,在与其相邻的递增桩号取5的倍数,例如在表5中桩号1100以下的桩号中输入公式A14+E$5,E$5所表示的步长为5。
在左、右侧任意值分别输入宽度所对公式IF(B$5>0,5,IF(A8<=A$8,5,IF(AND(A8>=A$8,A8=A$9,A8=A$11,A8=A$12,5))))))+I$5、IF(B$5<0,5,IF(A8<=A$8,5,IF(AND(A8>=A$8,A8=A$9,A8=A$11,A8=A$12,5))))))+I$5,利用EXCEL的相下填充功能,向下填充公式,计算左、右侧的任意宽度。
在ZH所对应左侧任侧任意值X、Y单元格内分别输入公式C8+I8*COS(F8-PI()/2)与公式D8+I8*SIN(F8-PI()/2),在ZH所对应右侧任意值X、Y单元格内分别输入公式C8+T8*COS(F8+PI()/2)与D8+T8*SIN(F8+PI()/2),同样利用向下填充功能复制单元格公式。
表5
c.利用上述方式,在工作表JD8-JD13编辑公式。
⑷工作表成果得出所有在K1+100-K2+100段的中桩及左右侧任意点坐标。
参数栏所对应值为从路肩横向增加值(变换常数)。
例如在桩号1100所对应行,左侧任意值X、Y单元格输入公式IF(AND(B4>=1100,B4<=1250),VLOOKUP(B4,JD7!
A:
V,10,FALSE),IF(AND(B4>=1255,B4<=1360),VLOOKUP(B4,JD8!
A:
V,10,FALSE),IF(AND(B4>=1365,B4<=1585),VLOOKUP(B4,JD9!
A:
V,10,FALSE),IF(AND(B4>=1590,B4<=1760),VLOOKUP(B4,JD10!
A:
V,10,FALSE),IF(AND(B4>=1765,B4<=1875),VLOOKUP(B4,JD11!
A:
V,10,FALSE),IF(AND(B4>=1880,B4<=2030),VLOOKUP(B4,JD12!
A:
V,10,FALSE),IF(AND(B4>=2035,B4<=2105),VLOOKUP(B4,JD13!
A:
V,10,FALSE),"")))))))与IF(AND(B4>=1100,B4<=1250),VLOOKUP(B4,JD7!
A:
V,11,FALSE),IF(AND(B4>=1255,B4<=1360),VLOOKUP(B4,JD8!
A:
V,11,FALSE),IF(AND(B4>=1365,B4<=1585),VLOOKUP(B4,JD9!
A:
V,11,FALSE),IF(AND(B4>=1590,B4<=1760),VLOOKUP(B4,JD10!
A:
V,11,FALSE),IF(AND(B4>=1765,B4<=1875),VLOOKUP(B4,JD11!
A:
V,11,FALSE),IF(AND(B4>=1880,B4<=2030),VLOOKUP(B4,JD12!
A:
V,11,FALSE),IF(AND(B4>=2035,B4<=2105),VLOOKUP(B4,JD13!
A:
V,11,FALSE),""))))))),在中桩坐标所对应的X、Y单元格输入公式IF(AND(B4>=1100,B4<=1250),VLOOKUP(B4,JD7!
A:
V,3,FALSE),IF(AND(B4>=1255,B4<=1360),VLOOKUP(B4,JD8!
A:
V,3,FALSE),IF(AND(B4>=1365,B4<=1585),VLOOKUP(B4,JD9!
A:
V,3,FALSE),IF(AND(B4>=1590,B4<=1760),VLOOKUP(B4,JD10!
A:
V,3,FALSE),IF(AND(B4>=1765,B4<=1875),VLOOKUP(B4,JD11!
A:
V,3,FALSE),IF(AND(B4>=1880,B4<=2030),VLOOKUP(B4,JD12!
A:
V,3,FALSE),IF(AND(B4>=2035,B4<=2105),VLOOKUP(B4,JD13!
A:
V,3,FALSE),"")))))))与IF(AND(B4>=1100,B4<=1250),VLOOKUP(B4,JD7!
A:
V,4,FALSE),IF(AND(B4>=1255,B4<=1360),VLOOKUP(B4,JD8!
A:
V,4,FALSE),IF(AND(B4>=1365,B4<=1585),VLOOKUP(B4,JD9!
A:
V,4,FALSE),IF(AND(B4>=1590,B4<=1760),VLOOKUP(B4,JD10!
A:
V,4,FALSE),IF(AND(B4>=1765,B4<=1875),VLOOKUP(B4,JD11!
A:
V,4,FALSE),IF(AND(B4>=1880,B4<=2030),VLOOKUP(B4,JD12!
A:
V,4,FALSE),IF(AND(B4>=2035,B4<=2105),VLOOKUP(B4,JD13!
A:
V,4,FALSE),""))))))),在右侧任意值所对应的X、Y单元格中输入公式IF(AND(B4>=1100,B4<=1250),VLOOKUP(B4,JD7!
A:
V,21,FALSE),IF(AND(B4>=1255,B4<=1360),VLOOKUP(B4,JD8!
A:
V,21,FALSE),IF(AND(B4>=1365,B4<=1585),VLOOKUP(B4,JD9!
A:
V,21,FALSE),IF(AND(B4>=1590,B4<=1760),VLOOKUP(B4,JD10!
A:
V,21,FALSE),IF(AND(B4>=1765,B4<=1875),VLOOKUP(B4,JD11!
A:
V,21,FALSE),IF(AND(B4>=1880,B4<=2030),VLOOKUP(B4,JD12!
A:
V,21,FALSE),IF(AND(B4>=2035,B4<=2105),VLOOKUP(B4,JD13!
A:
V,21,FALSE),"")))))))与IF(AND(B4>=1100,B4<=1250),VLOOKUP(B4,JD7!
A:
V,22,FALSE),IF(AND(B4>=1255,B4<=1360),VLOOKUP(B4,JD8!
A:
V,22,FALSE),IF(AND(B4>=1365,B4<=1585),VLOOKUP(B4,JD9!
A:
V,22,FALSE),IF(AND(B4>=1590,B4<=1760),VLOOKUP(B4,JD10!
A:
V,22,FALSE),IF(AND(B4>=1765,B4<=1875),VLOOKUP(B4,JD11!
A:
V,22,FALSE),IF(AND(B4>=1880,B4<=2030),VLOOKUP(B4,JD12!
A:
V,22,FALSE),IF(AND(B4>=2035,B4<=2105),VLOOKUP(B4,JD13!
A:
V,22,FALSE),""))))))),在切线方位角所对应的单元格中输入公式IF(AND(B4>=1100,B4<=1250),VLOOKUP(B4,JD7!
A:
V,8,FALSE),IF(AND(B4>=1255,B4<=1360),VLOOKUP(B4,JD8!
A:
V,8,FALSE),IF(AND(B4>=1365,B4<=1585),VLOOKUP(B4,JD9!
A:
V,8,FALSE),IF(AND(B4>=1590,B4<=1760),VLOOKUP(B4,JD10!
A:
V,8,FALSE),IF(AND(B4>=1765,B4<=1875),VLOOKUP(B4,JD11!
A:
V,8,FALSE),IF(AND(B4>=1880,B4<=2030),VLOOKUP(B4,JD12!
A:
V,8,FALSE),IF(AND(B4>=2035,B4<=2105),VLOOKUP(B4,JD13!
A:
V,8,FALSE),""))))))),利用向下填充功能就得出桩号5米递增的坐标与方位角。
表6
三、总结
本文的工作原理基于计算机常规软件EXCEL的应用,提高工程测量内业计算速度与准确度,充分发挥了现有办公设备的功能,极大地提高了工作效率。
巧借EXCEL在AUTOCAD中绘曲线
时间:
2009-12-1800:
29:
20 来源:
网络 作者:
未知 我要投稿 我要收藏 投稿指南
我昨天在QQ群中问起过这事,今天刚好看到,出来看看了,以前是用记事本做的,现在在家看看这种方法是否好点呢?
在工程计算时,经常要用AutoCAD画出一条曲线,而这条曲线如果是由多个坐标点连接成的,输入起来就麻烦,而且容易出错。
如果利用EXCEL应用程序来保存数据,并与CAD巧妙地结合起来,就能很容易地画出该曲线。
具体方法为
首先,在Excel中输入坐标值。
我们将x坐标值放入A列,y坐标值放入到B列,再将A列和B列合并成C列,由于AutoCAD中二维坐标点之间是用逗号隔开的,所以我们在C2单元格中输入:
“=A2&“,“&B2”,C2中就出现了一对坐标值。
我们用鼠标拖动的方法将C2的的公式进行复制,就可以得到一组坐标值。
其次,选出所需画线的点的坐标值,如上例中C列
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Excel 编程