实用VBA:18.角度或坐标的格式转换(单位换算)

news2024/11/25 20:18:21

1.需求场景

在某些行业工作中,可能会遇到需要将角度或者坐标数值进行格式转换或者单位换算的情形。有很多小工具可以实现这样的换算,也有一些大型的专业软件带有单位换算的模块或者小插件,或者在excel单元格中写入计算公式。其实使用VBA写个函数也可以很方便地进行转换,在用Excel进行数据处理时就不用再打开其他软件进行换算了。例如,已知了度分秒格式的数据,需要转换为十进制°值的格式。

2.解决思路

十进制的度值(°)与度分秒(°  ′  ″)之间的转换关系很简单,度值是一个十进制的浮点数,度分秒是一个60进制的数值表示方式。1°=60′=3600″,我们手工或利用计算器计算或者使用excel公式也是使用的这个简单的关系。

因此,就可以用VBA写一个简单的函数,进行不同格式的转换(单位换算):

度值(°)转换为度分秒(°  ′  ″) 定义为函数DDtoDMS()

度分秒(°  ′  ″)转换为度值(°) 定义为函数DMStoDD

度分秒(°  ′  ″)转换为秒值(″) 定义为函数DMStoSS()

秒值(″)转换为度分秒(°  ′  ″) 定义为函数SStoDMS()

……

函数写好之后在excle数据的单元格中调用自定义的函数即可。

例如上图,定义好一个格式化的模板,将“输入值”右侧的空白单元格当做输入框,随时输入需要转换的数值,在“输出值”右侧输入好自定义的函数,于是便可实现输出值实时根据输入值显示转换结果的效果。一个自定义出来的格式转换器就完成了。有大量数据需要转换时,在目标单元格中输入自定义函数即可。

3.VBA实现

'度分秒转换为秒

Function DMStoSS(du As Double) As Double

    Dim dd, ff, mm As Double

    '度位数值换算为秒

    dd = Int(du / 10000) * 3600

    '分位数值换算为秒

    ff = Int((du - Int(du / 10000) * 10000) / 100) * 60

    '秒位数值换算为秒

    mm = du - Int(du / 100) * 100

    '各数位秒值相加作为返回值

    DMStoSS = dd + ff + mm

End Function


'秒转为度分秒

Function SStoDMS(DBss As Double) As String

    Dim dd, mm As Integer

    Dim ss As Double

    '求度位整数值

    dd = Int(DBss / 3600)

    '求分位整数值

    mm = Int((DBss - dd * 3600) / 60)

    '求秒位小数值

    ss = DBss - dd * 3600 - mm * 60

    '返回值,拼接度分秒格式字符串

    SStoDMS = dd & "°" & Format(mm, "00") & "′" & Format(ss, "00.00000") & "″"

End Function


'度转换为度分秒

Function DDtoDMS(DBdd As Double) As String

    Dim dd, mm As Integer

    Dim ss As Double

    '取度值整数位

    dd = Int(DBdd)

    '计算分位

    mm = Int((DBdd - dd) * 60)

    '计算秒位

    ss = (DBdd - dd - mm / 60) * 3600

    

    '返回值,拼接度分秒格式字符串

    DDtoDMS = dd & "°" & Format(mm, "00") & "′" & Format(ss, "00.00000") & "″"

End Function


'度分秒转换为度值

Function DMStoDD(dms As Double) As Double

    Dim dd, mm As Integer

    Dim ss As Double

    '获取度位整数值

    dd = Int(dms / 10000)

    '获取分位整数值

    mm = Int((dms - dd * 10000) / 100)

    '获取秒位数值

    ss = dms - dd * 10000 - mm * 100

    '返回值,计算度值

    DMStoDD = Format(dd + mm / 60 + ss / 3600, "0.00000000")

End Function

4.运行效果

当小工具使用的效果:

批量转换的效果:

喜欢的话欢迎关注、点赞、转发或评论交流!

点赞富三代,分享美一生! ^|^

5.往期列表

实用VBA:1.向下填充空白单元格

实用VBA:2.隔行插入空白行

实用VBA:3.向下合并空白单元格

实用VBA:4.按列拆分工作表

实用VBA:5.批量汇总工作簿、合并工作表

实用VBA:6.一键批量提取文件名和存储路径 

实用VBA:7.按文件列表一键汇总excel工作簿 

实用VBA:8.一键输出多表格为单独文件

实用VBA:9.使用Excel批量套模板,一键输出多个工作表

实用VBA:10.用VBA向Excel文件中自动插入图片 

实用VBA:11.用Excel自动生成商品调拨单

实用VBA:12.用VBA将txt文本文件导入Excel表格 

实用VBA:13.Excel数据批量套模板输出pdf文件

实用VBA:14.在二维数组中查找特定元素 

实用VBA:15 一键批量汇总工作表的更优方法 

实用VBA:16.一键批量删除工作表

实用VBA:17.大量word文件中的文本内容进行批量替换 

(佛系更新中……)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1565603.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ImportError: cannot import name ‘PILLOW_VERSION‘ from ‘PIL‘

原因:torchvision模块在运行时要调用PIL模块的PILLOW_VERSION函数,但PILLOW_VERSION在Pillow 7.0.0之后的版本被移除了,Pillow 7.0.0之后的版本使用__version__函数代替PILLOW_VERSION函数。 解决方法:降低pillow版本即可。 参考…

网络原理 - HTTP / HTTPS(2)——http请求

目录 一、认识 “方法”(method) 1、GET方法 2、POST方法 (1)登录 (2)上传 (3)GET和POST使用习惯 3、GET方法和POST方法的区别 正确滴 关于一些网上的说法,错误滴…

两数之和-考察哈希表的运用

题目 给定一个整数数组 n u m s nums nums和一个整数目标值 t a r g e t target target,请你在该数组中找出和为目标值 t a r g e t target target的那 两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同…

Apache ECharts-数据统计(详解、入门案例)

简介:Apache ECharts 是一款基于 Javascript 的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。 1、介绍 图 1.1 Apache ECharts 功能、运行环境 功能: ECharts&#xff…

pymc,一个灵活的的 Python 概率编程库!

目录 前言 安装与配置 概率模型 贝叶斯推断 概率分布 蒙特卡罗采样 贝叶斯网络 实例分析 PyMC库的应用场景 1. 概率建模 2. 时间序列分析 3. 模式识别 总结 前言 大家好,今天为大家分享一个超强的 Python 库 - pymc Github地址:https://gith…

开源大模型AI代理操作系统:像Windows一样,操控AI代理

去年,AutoGPT的出现让我们见识到了AI代理强大的自动化能力,并开创了一个全新的AI代理赛道。但在子任务调度、资源分配以及AI之间协作还有不少的难题。 因此,罗格斯大学的研究人员开源了AIOS,这是一种以大模型为核心的AI代理操作系…

JVM 记录

记录 工具 https://gceasy.io 资料 尚硅谷宋红康JVM全套教程(详解java虚拟机) https://www.bilibili.com/video/BV1PJ411n7xZ?p361 全套课程分为《内存与垃圾回收篇》《字节码与类的加载篇》《性能监控与调优篇》三个篇章。 上篇《内存与垃圾回收篇…

鸿蒙开发-ArkTS语言-并发

鸿蒙开发-UI-交互事件-键鼠事件 鸿蒙开发-UI-交互事件-焦点事件 鸿蒙开发-UI-交互事件-手势事件 鸿蒙开发-UI-web 鸿蒙开发-UI-web-页面 鸿蒙开发-ArkTS语言-基础类库 文章目录 前言 一、并发概述 二、异步并发开发 1. 异步并发概述 1.1 Promise 1.2 async/await 2. 单次…

Linxu的开发工具(三):缓冲区、进度条程序和调试器gdb

目录 缓冲区 倒计时程序 对出现swp文件报错的补充: 进度条程序 将tab键设置为四个空格 调试器-gdb 对比测试 实际应用 缓冲区 前言:\n会产生换行和回车两个动作: 回车:回到下一行行首换行:移动到当前所在位置…

《大模型面试宝典》(2024版) 正式发布!

2022 年11月底,OpenAI 正式推出 ChatGPT ,不到两个月的时间,月活用户就突破1亿,成为史上增长最快的消费者应用。 目前国内已发布的大模型超过200个,大模型的出现彻底改变了我们的生活和学习方式。 只要你想从事 AI 相…

【论文阅读笔记】SAM-Adapter: Adapting Segment Anything in Underperformed Scenes

1.论文介绍 SAM-Adapter: Adapting Segment Anything in Underperformed Scenes SAM适配器:在表现不佳的场景中适配任何片段 2023年 ICCV Paper Code SAM Fails to Segment Anything? – SAM-Adapter: Adapting SAM in Underperformed Scenes: Camouflage, Shado…

HR是怎么看待PMP证书的呢?

考PMP证书为什么值得?对管理人员有用么? 首先,在行业内部,一名项目经理,需要有PMP证书已经是行业内的共识了。而且面试的时候,如果是同样的年龄段,同样的背景,那有证书在手的人&…

2013年认证杯SPSSPRO杯数学建模C题(第二阶段)公路运输业对于国内生产总值的影响分析全过程文档及程序

2013年认证杯SPSSPRO杯数学建模 C题 公路运输业对于国内生产总值的影响分析 原题再现: 交通运输作为国民经济的载体,沟通生产和消费,在经济发展中扮演着极其重要的角色。纵观几百年来交通运输与经济发展的相互关系,生产水平越高…

九州金榜家庭教育:关注孩子心理健康,增强亲子沟通

家庭教育现在越来越受重视,尤其孩子心理健康,当下社会,孩子心理健康问题频出,很多地方不时传出孩子轻生的新闻,这就是在教育过程中,沟通出现了严重问题,随着心理变化产生,孩子这时候…

Python(乱学)

字典在转化为其他类型时,会出现是否舍弃value的操作,只有在转化为字符串的时候才不会舍弃value 注释的快捷键是ctrl/ 字符串无法与整数,浮点数,等用加号完成拼接 5不入??? 还有一种格式化的方法…

AI绘画软件有什么用?

人工智能(AI)的应用已经渗透到我们生活的各个角落,其中就包括图像生成。AI绘画软件,是一种基于深度学习技术的创新工具,它能够根据指定的风格、主题或者素材自动创作出新的图片。那么,AI绘画软件具体有什么用呢? 首先&#xff0c…

笔记本电脑外放有声音,插耳机没声音

我的笔记本最近因为微信插耳机没声音,每次电话沟通需求,能把人折磨的要死,我实在不知道是哪个设置出现了问题,如果你也遇到了有的软件插耳机有声音,而换一个软件就没声音,那你可以试试我这个高端的方法 1、…

openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint

文章目录 openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint254.1 功能描述254.2 语法格式254.3 参数说明254.4 示例 openGauss学习笔记-254 openGauss性能调优-使用Plan Hint进行调优-子链接块名的hint 254.1 功能描述 指明子链接块的名称。…

MongoDB 6.1 及以上版本使用配置文件的方式启动报错 Unrecognized option: storage.journal.enabled

如果你使用的 MongoDB 的版本大于等于 6.1,并且在 MongoDB 的配置文件中编写了如下内容 storage:journal:# 启用或禁用持久性日志以确保数据文件保持有效和可恢复# true 启用;false 不启用# 64 位系统默认启用,启用后 MongoDB 可以在宕机后根…

JavaSE:抽象类和接口

目录 一、前言 二、抽象类 (一)抽象类概念 (二)使用抽象类的注意事项 (三)抽象类的作用 三、接口 (一)接口概念 (二)接口语法规则 (三&a…