APP下载

EXCEL表格在导线测量成果计算中的应用

2009-01-12李广平李文阳

企业技术开发·中旬刊 2009年4期

罗 昆 李广平 李文阳

摘要:文章主要讲述利用excel办公软件,按照常用的导线测量成果计算本的样式,直接编辑导线测量的正算和返算软件,并形成固定的模版。

关键词:excel表格;导线测量;正算;返算

中图分类号:TP319文献标识码:A文章编号:1006-8937(2009)08-0054-02

我们知道导线测量的成果计算虽然有多种计算机软件,但与我们习惯的导线成果计算格式不统一,输入数据不直观,使用起来不习惯,很难推广。针对这种情况,我们按照常用的导线成果计算本的样式,直接利用excel办公软件,按照这样的固定格式,编制了一套导线测量成果计算软件。

EXCEL是常用的办公软件,文章将利用其自带的函数,和其强大的数据处理能力,创建一个EXCEL模板,利用预先编辑好的公式,输入外业测量成果后自动进行内业的成果计算。

1设计需求

①能够根据输入的外业测量数据自动进行坐标成果正算;反过来,又能根据两点的坐标自动反算出两点之间的距离和方位角,能自动识别测量路线,计算导线间水平角;

②能进行简单的条件分析,对一些误输入能自动识别;

③能够有效的保护公式和表格,防止误操作的更改,或者蓄意的修改计算结果。

2解决方案

2.1需求一的解决方法

因为需要条件判断和循环引用的关系,EXCEL不能在图1所示的表格范围内完成所有的计算,这就需要在其他区域进行演算,再将演算结果引用到对应位置。我们选择在成果表的右侧建立演算区,见图2和图3。

在正算中,如何让EXCEL自动判别测量路线,即在图1中根据A列的仪器站测点编号,在R列中找到这个测点所在行,进而引用在O列和P列中的此测点的坐标值以进行下一步的计算,是编程重点和难点。

我们采用的解决办法是,先使用MATCH函数判断测点(R列中)在图表1的中的行号,有了这个行号值作为参数,就可以使用CHOOSE函数在测 点坐标(O列和P列)中找到此测点的坐标值。关于两函数的用法及参数请查阅EXCEL自带的帮助文件。

举例说明,当在图2的V12单元格输入公式

V12=MATCH(A12,$R$1:$R$11,0),EXCEL就会在R1和R11单元格范围内寻找和A12单元格相同值的单元格,并返回它的行号,在输入没有错误的情况下,它的返回值会是5、6、8、10中的某个数,这由测量路线决定。对应的,在AA12单元格的公式为AA12=CHOOSE(V12,$O$1,$O$2,$O$3,$O$4,$O$5,$O$6,$O$7,$O$8,$O$9,$O$10,$O$11),其返回值就是A12单元格测点的X坐标,同样的,公式稍做调整就可以得到此测点的Y坐标。X列中也是使用类似公式得到后视导线方位角并换算为10进制角度供计算。

正算演算区中(见图2),V判别后视测点在图表1中的位置,W列和X列将图表1中的60进制角度换算成10进制角度,Y列进行两个角度的夹角计算获得导线方位角,如果Y列初步计算得到的是负值角度,在Z列中将它们换算成正值。这样,正算的参数就全部得到了。下面进行正算运算,在成果表(图1)中O12单元格公式为O12=AA12+COS(RADIANS(Z12))*G13,得到测点的X坐标,RADIANS函数是将角度转换成弧度的函数,P12单元格公式为P12= AB12+SIN(RADIANS(Z12))*G13,得到测点的Y坐标。L12单元格公式为L12=TRUNC(Z12),TRUNC为取小数整数部分的函数,M12单元格公式为M12=TRUNC(Z12-L12)*60,N12单元格公式为N12=(Z12-(L12+M12/60))*3600,得到换算为60进制的方位角。其他行依此类推。

反算过程所用的函数和公式与正算过程类似,在反算演算区中(见图3),V列用MATCH函数来判别后视测点在图1中的位置,AC、AD列用CHOSE函数获得后视测点坐标并进行存放,留待引用。Y列用MATCH函数判别前视点在图表1中的位置,X列用CHOOSE函数获得后视点到前视点的方位角,W列用来计算导线间水平角。下面以图1中12行为例,介绍反算公式的编写,这里就不再重复MATCH和CHOOSE两个函数公式的编写了。G13单元格为两点间距,公式为G13= SQRT((O12-AC12)^2+(P12-AD12)^2),Z12单元格为后视点到前视点方位角,公式为Z12= ATAN2(O12-AC12,P12-AD12),结果为弧度值,AA12单元格中将其换算成角度,公式为AA12= DEGREES(Z12),其结果可能为负值,在AB12单元格中换算成正值的角度,AB12= IF(AA8<0,AA8+360,AA8)。W12为水平角,公式为:

W12=IF((AB12-X12+180)>0,AB12-X12+180,

B12-X12+180+360)。将得到的角度经过换算填到图1对应的表格中上文已做介绍,这里就不再重复了。

经过以上公式的编辑,我们需要的工作表已经初步形成了,但是你可能看到表中没有数据的行会有错误引用的提示,我们用个小技巧解决这个问题。假设在图表一中的第12行没有数据,那么V12单元格的公式就可以优化成V12=IF(A12<>””,MATCH(A12,$R$1:$R$11,0),””),这样,当A12单元格中有数据时V12单元格才进行计算,否则V12单元格也将显示为空值。同理,图表1中其他有公式的单元格都可以在计算前判别所引用单元格有无数据,利用这个方法,那些没有数据的行就不再有错误提示,方便将计算成果直接打印了。

2.2需求二的解决方法

点开EXCEL的“数据”菜单,找到“有效性”命令,点击就可以打开“数据有效性”对话框,这里可以对单元格数据的输入进行一些规则设置,比如距离值不可能是负值,也不会过大,进行这样的设置以后,在输入的时候如果输入负值,EXCEL会提示错误并不会将数据写入。

2.3需求三的解决方法

为了保证EXCLE的计算过程不受人为的干扰,防止人为修改计算结果,EXCLE提供了保护工作表的设置。首先选中整个工作表,选择“格式”菜单中的“单元格”命令,出现“单元格格式”对话框,选择“保护”选项卡,给“锁定”复选框打上勾,再选择“数据”菜单中的“保护”命令,然后选择“允许用户编辑区域”,出现“允许用户编辑区域”对话框,可以新建或修改允许用户编辑的区域,选择好这些区域后,点击“保护工作表“,出现”保护工作表“对话框,只选择能够选定单元格操作,在设置好密码,操作完成后,工作表就会被保护起来,只能在允许用户编辑的区域进行写操作,其他区域会禁止用户编辑。这样对图1中的工作表进行相应设定以后,人工只能输入水平角和水平边长,方位角和测点坐标、测点编号,以及演算区内的内容有计算机生成,没有密码就不能更改这些单元格的内容,能够有效保证数据的真实性和准确性。

一切都做好以后,将工作簿另存为模板。

3程序的应用

对照图1中格式,直接将野外测量数据输入对应表格中,如,导线:A-B-C-D,已知A、B点坐标或已知AB方位和B点坐标,在表格中填入ABC和BCD夹角及BC和CD边长及可直接解算C和D点的坐标,如表1中。反之,输入C和D点坐标可直接反算出CD的方位和边长值。