您的当前位置:首页正文

基于VBA的Excel常用测量函数开发

2022-12-01 来源:图艺博知识网
维普资讯 http://www.cqvip.com 2008年第2期 ·北京测绘· 47 基于VBA的Excel常用测量函数开发 王少文 (广州市房地产测绘所,广东广州510030) 【摘要]基于VBA开发Exeel测量程序具有简便、高效和通用的特点。考虑到参考文献一中已经比较详细 地介绍了VBA在Exeel中的开发技术,本文将介绍利用VBA在Excel中开发几个常用测量函数的实例,深入地 剖析用度分秒表示的角度与用弧度表示的角度之间的相互转换和坐标方位角反算三个VBA函数,并提供了 VBA源代码,供同行借鉴与直接使用。 『关键字1 VBA;Excel;测量;函数 【中图分类号]P207 【文献标识码]B [文章编号]1007—3ooo(2008)02—4 Excel电子表格系统作为Office软件的一部 VBA程序开发基础和基本方法,这里不重复 介绍,本文将详细介绍度分秒与弧度的相互转换 和坐标方位角反算三个常用测量函数的开发,并 给出这三个函数的完整源代码,供同行借鉴。 分,在社会各行各业使用非常普遍。在测绘行业 利用ExCel电子表格系统可以进行平差、数据统 计等工作,Excel计算的成果表格可直接复制到 Word中,然后通过Word输出相应报告。应用 Excel进行测绘方面的计算可大大提高工作效 率。但是,在Excel进行测绘计算,常需要VBA的 1 Excel中VBA的相关函数 Excel的功能强大,但是Excel中三角函数不 能直接处理60进制的度分秒所表示的角度。由 于在测量作业过程中采用的是60进制的度分秒 二次开发,才使Excel在测绘行业的应用更为方 便。目前,介绍这类VBA二次开发的文献不多 见。 表示的角度,而Excel的函数采用弧度,这使得在 Excel中计算测量角度很不方便。为此,必须利用 VBA开发出与Excel公式一样方便的函数,完成 度分秒到弧度、弧度到度分秒的转换。另外,坐标 方位角的反算很常用,而且能够检验该转换函数 的正确性。 在参考文献1中,介绍了在Excel中利用 VBA开发测量程序的基本方法,在“程序开发与 使用”一节中介绍了“后方交会”和“方位角推算” 两个实例,提到了DMS、DEG、TS几个自编的处 理角度函数。遗憾的是没有详细介绍这些在测量 中很常用的函数。 在此VBA二次开发过程中,需要应用几个 函数,其名称、功能、语法如表1所示: 表1 VBA函数说明 函数名称 PI() 功能 订的值 语法 示例 3.14159265358979 Fix R0und 返回参数的整数部分 行Fix(参数一1,其中:参数一为需要取整的数 Fix将一8.4转换成一8 返回按照指定的小数位数进 Round(参数一【j参数二]),其中:参数一,要进行 四舍五入运算的结果 四舍五入运算的数值;参数二:可选的。进行 Round(一1.475 21等于一1.48 四舍五入运算时小数点右边应保留的位数。 Atn 返回以弧度表示的反正切值 Atn(11等于0.785398( ̄r/4弧 度) Sgn 指出参数的正负号 Sgn渗数一1,参数一大于0返回1,等于0返回 0,小于0返回一1 Sgn(0.11等于1 [收稿日期]07—12—17 [作者简介]王少文(1980一),女,天津人,助理工程师,主要从事房地产测绘及房地产信息化建设。 维普资讯 http://www.cqvip.com 48 ·北京测绘· 2008年第2期 2利用VBA开发测量常用函数 VBA开发测量函数的基本操作分为三步: 第一步、Alt+F1 1进入Microsoft Visual Basic 编辑器,通过插入操作增加一个模块; 第二步、通过插入操作增加“过程”,在添加 过程对话框中选择“函数”,并输入名称。例如:函 数DmsToRad; 第三部、添加VBA函数代码。 经过上述三步完成了一个VBA函数的开 发,在Excel中就可直接应用这一函数。 2.1度分秒到弧度的转换函数 1)度分秒的表示 用带有小数点的数字表示度分秒,整数表示 “度”,小数点后一、二位表示“分”,余下表示 “秒”。如图一所示,例如:89.56348为89度56分 34.8秒。 1__.I...r.... ..!..............I..............】 图1度分秒角度表示 2)转换的基本步骤 将度分秒表示的角度转换为弧度过程,主要 分为四个步骤: 第一步、通过Fix函数取出度、分、秒; 第二步、采用公式“度+分/60+秒/3600”, 将需要转换的角度转换为度; 第三步、采用公式“角度  ̄v/180”,将角度转 换为弧度; 第四步、由于Excel的数据计算有一定的精 度限制,同一数据进行相互转换多次后结果会产 生不一致,取位操作主要是通过一定小数位的四 舍五入运算使数据转换完全一致。取位操作通过 Round函数实现,例如:Round(0.235,21等于0.24。 3)度分秒转换到弧度的VBA源代码 Public Function DmsToRad(Dms) ’函数功能:度分秒转换到弧度 Dim Rad As Double Dim D As Double,M As Double,S As Double D=Fix(Dins) M=Fix(Round(((DmS—D)术100),8)) S=Round((Dms 100一Fix(Dms 100)) 1oo, ̄ Rad=(D+M/60+S/3600) PI/180 DresToRad=Rad Fnd Function 2.2弧度到度分秒的转换函数 11转换的基本步骤 将弧度转换为度分秒表示的角度过程,主要 分为四个步骤: 第一步、采用公式“弧度 180/竹”,将弧度转 换为度; 第二步、采用公式“小数部分*60”,通过Fix 函数取出度、分、秒; 第三步、采用公式“度+分/100+秒/10000”, 将需要转换的角度转换为度分秒; 第四步、通过取位操作让角度数据转换完全 致。 2)弧度到度分秒转换的VBA源代码 Public Function RadToDms(Rad) 函数功能:弧度转换到度分秒 Dim Dms As Double Dim D As Double,M As Double,S As Double Dim dblDgree As Double dblDgree=Rad 180/PI D=Fix(Round(dblDgree,1o)) M=Fix(Round((dblDgree—D) 60,8)) S=Round(((dblDgree—D) 60一M) 60,6) Dms=D+M/100+S/10000 RadToDms=Dms End Function 2-3坐标方位角反算函数 在测量工作中,常用两点坐标反算坐标方位 角。坐标方位角定义为真北方向到该方向的夹角 (如图2所示)。 图2方位角示意图 直线12的坐标方位角T 计算应根据△x、 △Y的“+”、“一”符号来确定所在的象限,再采用表 2第四列的方位角计算公式进行。该方法需要多 重判断,再利用相应的公式,不利于VBA编程。 维普资讯 http://www.cqvip.com

2008年第2期 ·北京测绘· 49 表2方位角计算公式表 象限 AX=X2一X】 AY=Y2一Yl 方位角计算公式 变换方位角计算公式 Sgn(AY) 2-Sgn(AY) 1 + + 舰 。一 1 1  【2 + 帆等枷。 T12=90- 1 1  l3 — 枷。 Tz2=270-nrc 等 一1 3  l4 + 。 Tl2=270- 等 一1 3 我们利用三角函数的特『生变换方位角,可以 ’返回值:弧度 得到相对统一的计算公式如表3第五列所示。我 DimTAs Double 们再考察VBA中的符号函数Sgn,就可以统一方 T=(2一Sgn(y2一y1)) PI/2一Atn((x2一x1)/ 位角计算的公式,而不用考虑△x、△Y的“+”、 (y2一y1)) ”符号以及所在的象限,具体统一的公式如式一 XYtoT=T 所示: End Function Tl ̄(2-sgn(△y)) 3应用与结论 』 其中:AX-X ̄X 在Excel中应用VBA函数,主要是在 △Y=Y2-Y (式1) Excel中填写函数表达式(与Excel的公式一样 我们根据这一统一简便的坐标方位角反算公 使用)。应用VBA开发的函数过程,也是检验 式,在VBA中编写三行代码即可完成该项计算功 其正确性的过程,利用度分秒表示的角度转 能,完整的VBA源代码如下: 换成弧度后,将该弧度转换为度分秒,如果结 Public Function XYtoT(x1,yl,x2,y2) 果完全一样,证明程序的正确性。度分秒与弧 ’函数功能:根据两点坐标计算坐标方位角 度相互转换的实例如表3所示,坐标方位角 水平角f度分秒1 填写公式 水平角f弧度1 填写公式 水平角f度分秒1 59.0001 =DMSTORAD f) 1.029749 =RADTODMS() 590001 方算实例如表四所示 VBA二次开发的优势。针对参考文献一,本文剖 表4坐标方位角计算 析了几个常用测量函数的开发实例,并提供了 已知点 X Y H 坐 VBA源代码,供同行借鉴与使用。 A 843.400 1264.290 定向点 B 640.930 1068.440 35.233 A一>B 224.0252 参考文献 l、度分秒与弧度的相互转换 [1]周卫.基于VBA的EXCEL测量程序开发技术lJ1.测绘 2、计算坐标方位角 通报,2005,f6):37~40 在坐标方位角单元格填写公式 [2]姬玉华,夏冬君.测量学[M】.哈尔滨:哈尔滨工业大学出 =RADTODMS(XYTOT(XA,YA,XB,YB))”,直接计算 版社.2004 出坐标方位角为224度02分52秒。 [3]孔祥元,郭际明.控制测量学(下册)『M].武汉:武汉大学 充分利用VBA开发常用测量函数,可大大 出版社.2006 丰富Excel进行测量方面计算的能力,提高工作 【4]韩小良,周宁.EXCEL VBA实用技巧大全[M1.北京:中 国铁道出版社.2007 效率,使得Excel在测绘行业中更为广泛深入的 l5]沃肯巴赫(美).EXCEL 2003高级VBA编程宝典[M1.北 应用。 京:电子工业出版社.2006 笔者在Excel中开发了高斯正反算、换带计 算、导线平差等程序,体会到在Excel中利用 (下转第26页) 维普资讯 http://www.cqvip.com

北京测绘· 2008年第2期 小;在小区域,2kmx2km范围内,该方法达到了 3.8cm的精度。 高精度大地水准面的确定[J1.测绘学报,2003,32(2): 102-107 (2)在保持4cm精度的情况下,进行高程异 常规则格网的内插时,nearest方法最差;同时插 值格网的宽度不可能无限大,当格网的边长达到 【3]孔祥元,郭际明,刘宗泉.大地测量学基础【M].武汉:武 汉大学出版社,2001,26—28 [4]张剑清,潘励,王树根.摄影测量学[M].武汉:武汉大学 出版社.2003.134—138 定的长度时,在有些地方会出现插值点周围没 『5]王玉富.温度曲线的二维插值法优化及MATLAB仿 真 潍坊学院学报,2004,4(4):61—63 有足够的已知点数据而导致插值失败的情况,而 且这样插值的精度不会很好;经过分析,文中的 其他方法可以将格网的间隔变为1250m;由实验 的曲线的变化可以看出,高程异常插值采用 spline、bicubic这两种方法比较好。 参考文献 [1]管泽霖,管铮,黄谟涛.局部重力场逼近理论和方法 [M].北京:测绘出版社,1997,163—167 『6]薛定宇’陈阳泉.高等应用数学问题的MATLAB求解 fM1.北京:清华大学出版社,2004,260—298 [7]胡守信,李柏年.基于MATLAB的数学实验[M].北京: 科学出版社.2005。63—68 f81严伯铎.平坦地区GPS水准的实验与分析[J1.测绘工 程,1998.7(3):12—18 f91曾宪畦,刘陶胜.基于DelaunY三角形的GPS高程异 常内插方法[J1.南方冶金学院学报,2004,25(5):1—5 f101 NING Jin sheng.Modem Geodetic Reference Systems [2]宁津生,罗志才,杨沾吉.深圳市lkm高分辨率厘米级 [J].Bulletin of Surveying and Mapping,2002,6:125—129 Research of Interpolation Methods for Area Elevation Anomaly SHEN Jing-xiang,WANG He,LANG Gang,CHEN Ping-ehuan AVIC Institute of Geotechnical Engineerig,Beijing,100098 Abstract:This paper introduces some fitting methods of elevation anomaly.Through a speciic example,f the method of polynomials fitting method is used to approach the surface of elevation anomaly in a small area, 2km 2km;through further analyzing,the fitting method of five parameters polynomials is adopted and it proves that it Can reach the precision of 3.8cm by testing the fitting with some data acquired by GPS leveling.Based on these,analysis of elevation anomaly regular grid network interpolation is summarized and several interpolation methods are carried out by writing MATLB program. Key words:Elevation Anomaly;Surface Fitting;Regular Grid Network;Walues of Interpolation; Quasi——geoid (上接第49页) Development of Surveying Functions with Excel based on VBA HU Daguo .LI Jian 1.Real Estate Surveying and Mapping Institute of Guangzhou Municipality,Guangzhou,Guangdong510030; 2.The Surveying&Designing Institute of Xin jiang Production and Construction Coos,Urumchi,Xinjiang,830002 Abstract:The surveying programs developed with Excel based onVBA has convenience,high eficiency fnd wiade application characters.The development of such programs has been generally introduced in the reference 1 and this paper introduces several surveying functions developed with Excel based on VBA and the relative detailed application examples.Meanwhile,this paper discusses how to use degrees,minutes,seconds to represent angles,and how to use radians to represent angles,and how to realize the conversion between them, and how to realize coordinates azimuth inverse calculating.Furthermore,this paper offers the source codes of these three VBA functions. Key words:VBA;Excel Surveying;Function 

因篇幅问题不能全部显示,请点此查看更多更全内容