角度,是我们搞测量这一行无论如何也避不开的,而电子表格EXCEL软件也是我们测量人最爱的计算工具软件之一,如何在EXCEL中输入、输出(显示)角度,这的确是一个看似简单、但又不是那么简单的问题。

先讲角度的表示形式,我们最习惯的还是度分秒的形式,如134°32′45.6″,最直观,要在EXCEL单元格中输入这组数据,没有任何问题,比如我们熟悉的路线直曲表:

.

.

可是,路线直曲表只是个最终的成果表,在大多时候,我们在EXCEL中输入角度并不只是呈现数据,而是需要根据输入的角度进行相关的计算,这些计算大多都涉及三角函数,比如正弦、余弦、正切等。在EXCEL中,所有三角函数计算的角度单位都规定是弧度。这样,就产生这样一个角度转换,我们输入度分秒的角度,在计算时则需要将它们转换成弧度。

在进一步阐述之前,我们先回顾一下EXCEL中两个有关角度转换的函数,一个是RADIANS()函数,另一个是DEGREES()函数,前者是将括号内的度数(十进制的度数,不是度分秒)转换为弧度,后者则是将括号内的弧度转换为度数(十进制)。这两个函数我们不知道使用也没有多大关系,因为我们都知道度和弧度转换系数是:180/π。

再回到前面提到的将输入的度分秒转换成弧度的这个问题,一般的解决方法是两个:

1.将角度(度分秒)按小数形式输入到一个单元格,如133度32分43秒,就输入为133.3243,然后编一个自定义函数,将这个小数中的度、分、秒数字分别提取出来,转换为度,如133度32分43秒就通过“133+32/60+43/3600”这个计算式得到133.5452778度,再使用RADIANS()函数可计算得到弧度;

2.将度、分、秒分别输入到相邻的三个单元格里,并且可以通过定义单元格格式的方式给数字后面附加显示相应的角度单位,以便求得良好的显示效果,再通过类似上述第1点的转换方法计算求得弧度。


.

前面第一种方式的优点是输入简洁,可以在一个单元格里面一气呵成把度分秒搞定,缺点是小数表示不是很直观,而且需要编程(或者整个函数)把度分秒数字提取出来,第二种方法的优点是角度表现直观,角度转换操作简单,缺点就是要在三个单元格里输入数据,稍显繁琐。

同样,要把角度的计算结果输出显示,通常的做法也不外乎小数形式和度分秒形式,只不过转换过程同前面相反而已。

这两种形式共同的不足在于:输入、输出、计算过程中的角度转换不直接,相当繁琐,一般还需要中间调用几个单元格存储中间结果。

有没有一个能在EXCEL中角度输入、角度显示和角度转换之间找到一个更优、更便捷的方法呢?答案是肯定的。

思路是:利用EXCEL的日期和时间格式。

EXCEL的日期系统是这样定义的:EXCEL为每个日期定义了一个序列号,以1900年1月1日为1,1900年1月2日为2,以此类推,而 2008 年 1 月 1 日的序列号是 39448,简而言之,任何一个日期的数值就是距1900年1月0日(这是个假想的日期)的天数。利用这个特点,我们可以对日期进行加减的运算。比如计算2010年3月4日过56天后的日期,两个日期之间的间隔天数,等等。

再说时间,我们熟知的时间格式是:h:m:s,即:小时:分钟:秒,比如15时23分48秒,就是15:23:48。同日期一样,时间也有数值,以该时间占1天(24小时)的比例作为时间的数值,比如15:23:48的数值是0.641528。

以上过程,可正可逆,通过设定不同的单元格格式,即可将日期(时间)转化为数值,也可将数值转化为日期(时间),并可直接进行加、减等运算操作。

此外,日期和时间可同时输入到一个单元格中,比如“1900/1/3  15:23:48”,日期和时间之间用空格隔开,此时单元格的数值就是日期和时间的总和,即:3. 641528。

为了进一步说明,我们打开EXCEL输入一组数据,体验一下。

如下图所示,我们在第一列输入一组日期时间,分别为:

18:23:34

1900/1/1  0:05:09

1900/1/2  6:30:34

1900/1/3  15:23:48

1900/1/4  22:32:11


.

图中,后面各列单元格内容均与同一行的第一列单元格数值相同,但相关的格式不一样。分别如下:

第一列:日期格式。日期格式有多种选项,可选择日期带时间的,可以发现,其中时间最多只能显示到分。

.

.

第二列:时间格式。我们选择那种以冒号将小时、分、秒隔开的那种。我们发现,同日期格式相比,虽然时间可以显示到秒,但日期缺失,只能显示当天的时间。

.


.

第三列:数值格式。小数位数我们可以任意设定,这里定为5位小数。这个我们很好理解了,这是日期(时间)的数值。

第四列:自定义格式。我们自定义为:d:hh:mm:ss。其中d表示日期值,h表示小时,m表示分,s表示秒。用两个连续的符号表示强制显示两位数,不足两位以0补足。这种格式可以将日期和时间完整地显示出来。

第五列:自定义格式。我们自定义为:h:mm:ss。这种格式与第二列显示相同,同样无法表示出日期值,小时数只能表达当天的,不大于24。

第六列:自定义格式。我们自定义为:[h]:mm:ss。与第五列格式相比,将小时数用方括号括起来,表示累计小时数。我们可以发现,这时候,小时数体现出了日期值,以每天24小时的标准表示了累计小时数。

第七列:自定义格式。我们自定义为:[h]°mm′ss″。与第六列相比,我们把小时、分、秒之间的冒号分别用度、分、秒符号代替,这样显示出来的数值就具有了我们熟悉的度分秒形式的角度表达方式了。

.

.

需要再次强调的是,对于同一行数据,虽然各列显示方式各异,但都具有相同的数值,并都可以直接参与数值计算。当然,我们最有兴趣的是最后一列了,因为在一个单元格中,它具有我们熟悉的度分秒表达方式,而且可以直接参与数值计算。

现在剩下的问题有三个:

第一,输入是不是很麻烦,因为之前是通过诸如“1900/1/4  22:32:11”这样的日期时间方式输入的,如果以后要通过这种方式输入,那会烦死人;

第二,虽然具有象54°30′34″这样的角度表达形式且具有数值可以直接参与计算,它能准确进行角度的数值计算吗,如果需要弧度,又如何转换呢?

第三,部分工程的角度中,秒有保留一位小数或者两位小数的,这种方式能处理吗?

一个一个解决这些问题。

先看输入操作,的确,要把54°30′34″先换算成“1900/1/2  6:30:34”这样的日期再输入进去,确实相当繁琐。现在简洁的输入方式是:将度分秒数字以冒号隔开输入,如输入:“54:30:34”,回车,单元格自动显示为54°30′34″(当然前提是这个单元格的自定义格式[h]°mm′ss″要先设定好),这个问题就算是解决了。

再来看计算,行不行,我们再来几个试验就知道了。在EXCEL中,首先先将相关单元格均自定义为[h]°mm′ss″的格式,然后在角度1和角度2分别输入以下这些角度,然后利用单元格的运算,分别进行“角度1-角度2”、“角度1+角度2”、“角度1×2”这些运算,结果如下:

.


.

从试验结果可以得出:这种方法完全可以准确进行角度的四则运算。但是依然有两个问题:

1.角度结果为负值时,是无法显示的,但根据进一步的试验可得知,负数结果能够保留并可进行下一步计算;

2.角度大于360度时,无法自动减去360度,这一点和我们习惯不一样,需要编程进行调整,但是如果是中间结果,不会影响三角函数的计算值。

虽然存在以上两个问题,显得没有那么完美,但均是显示问题,不会影响计算,因此没有什么大的关系。

再来说说角度转换,由于小时、分、秒之间均是60进制,跟我们角度的度、分、秒60进制是一致的,这是我们这个方法的理论基础。现在由于单元格的数值其实是“天”的数值,显示的“度”的数值其实是累计的小时数,按照这一关系,现在“度分秒”单元格的数值与实际“度”的关系是24倍关系。找到了这一个关系,与弧度的关系也就迎刃而解了。看下面的这几个表格计算试验:

.

.

反之亦然:

.

.

最后关于秒显示的小数位数问题,这个基本不成问题,比如需要把秒设定保留两位小数,只要把自定义格式设定为:[h]°mm′ss.00″即可。下图是相关的几个算例:

.

.

到此,问题基本完全解决。欢迎各位网友提出使用意见和心得。

最后,要感谢湖南路桥建设集团肯尼亚NMT公路改建项目的李坤技术员,是他发给我的一个计算附合导线的EXCEL文件给我以灵感。

EXCEL中关于角度的输入、输出及转换计算技巧相关推荐

  1. 如何在EXCEL中画横线并输入汉字

    如何在EXCEL中画横线并输入汉字 目录 如何在EXCEL中画横线并输入汉字 1.第一种:利用下划线输入,点U即可 2.第二种:利用表格下框线,点击下框线即可 3.第三种:利用直线画,在"插 ...

  2. 复杂公式怎么用计算机计算,在microsoft excel中怎样插入一个复杂的计算公式进行计算...

    在microsoft excel中怎样插入一个复杂的计算公式进行计算以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在m ...

  3. Java中I/O(输入/输出)的操作

    Java的I/O技术可以将数据保存到文本文件.二进制文件甚至是ZIP压缩文件中,以达到永久性保存数据的要求. 1.流概述 流是一组有序的数据序列,根据操作的类型,可分为输入流和输出流两种.I/O(In ...

  4. C++ OJ 中多行数据输入(大小写转换、通过移位运算实现2的n次方、多组输入,每行输入数量不一样)

    1. 多组输入,输出每行最大值 while(cin>>a>>b) 主要解决的是两个为一组的多组数据输入,当一次只输入一个数据时就用 while(cin>>a) 输入 ...

  5. Excel中超级表和普通表的转换及特性

    Excel超级表是一个超级强大的功能,能够快速的对海量数据进行汇总和处理.你会发现,目前在各大平台上,宣传用Excel来做数据分析的各种各样的课程有增无减,只要是和数字打交道的人,都一定要学会使用Ex ...

  6. 在Excel中通过VBA实现不定区域的标准差计算

    需求:在excel中计算固定区域的均值有很多实现方式,但是对于跟随一定条件变化的区域,要求解标准差却很难实现. 解决方案:通过VBA的程序,根据条件改变选定的单元格区域,实现不定区域的标准差计算. 程 ...

  7. Shell中的数据重定向--输入/输出重定向

    在了解重定向之前,我们先来看看linux 的文件描述符. linux文件描述符:可以理解为linux跟踪打开文件,而分配的一个数字,这个数字有点类似c语言操作文件时候的句柄,通过句柄就可以实现文件的读 ...

  8. c语言if函数多条件怎么输,excel中if函数怎么输入多个条件

    1,if()函数有三个参数,简单举例:if(a1"哈哈",1,2) ,那么当A1单元格内容为"哈哈",返回值1,否则返回值2. 2,if()函数多层嵌套,即可这 ...

  9. 14、yolov5-6中数据预处理、模型输出nms单独计算、onnxruntime的gpu版本前向推理

    1.数据输入预处理.模型输出nms等 import os import torch import time import math import cv2 import numpy as np impo ...

  10. Excel中建立数据透视表,想用计算字段功能,但是该选项灰色无法点击,怎么办?

    在添加数据透视表时,将最底下的✔去掉 这样就可以点击"计算字段"了

最新文章

  1. HBase scan 时 异常 ScannerTimeoutException 解决
  2. 【100题】 第四十七题 序列的最长递增、递减序列
  3. Kubernetes学习笔记---常用命令
  4. Windows下一个比较完美的线程池实现
  5. django权限系统实现步骤_在django中实现一个简单的权限管理
  6. 【转】Dubbo架构设计详解
  7. Singleton in java
  8. linux和python那个好学_Python和C#哪个好学?老男孩python
  9. python元组排序_python元组怎么排序
  10. java aspect编译,Java-AspectJ无法编译
  11. 联想g485服务器未能登陆,Lenovo G485 USB3.0驱动程序安装不上的解决方法
  12. SpringBoot2.x 集成 腾讯云短信
  13. Pentaho RestAPI用户角色管理
  14. 儿童汽车拼图游戏 - 儿童游戏拼图2岁-5岁
  15. 举头望明月打计算机术语,关于月亮的谜语
  16. 如果你喜欢平板又是QWERTY键盘控 联想推“握柄键盘”满足你
  17. cpython cython_Cython笔记
  18. iOS 定位和地图
  19. 新手做饮料代理如何运作市场?
  20. sqlmap中的tamper 脚本分析

热门文章

  1. Firefox上IETab插件造成的一个问题
  2. echarts柱状图铺满_echarts 柱状图多种样式设置
  3. python mq_解析Python实现MQ消息队列以及消息队列的优点
  4. 【前端学习】HTML入门
  5. 黑马程序员---初学java建议(亲身经历)
  6. 完整的产品管理工作流程
  7. 《伯克毕生发展心理学1》
  8. ISIS协议基础知识
  9. python物性库能调用哪些物质_Python 调用 CoolProp 计算介质的物性
  10. 商场收银系统服务器安装在哪里,收银系统怎么安装?详细步骤分享