在Excel表中进行度分秒单位转换

在Excel表中进行度分秒单位转换
前言
       日前在做项目的时候遇到了一个度分秒单位转换小问题,查询到网上的Excel度分秒单位转换的教程都是依据单元格中某个字符以固定长度截取字符,这样带来的后果就是缺位的情况下,会出现截取字符与期望值不符而造成结果出错,因此经过重新梳理教程,彻底解决了这个问题。
实现目标:

 


转换为

 


思路:以逗号为分隔符,分别对前后两部分进行转换
一、提取逗号以前的字符(纬度)
=LEFT(J2,FIND(",",J2)-1)
二、提取逗号以后的字符(经度)
=RIGHT(J2,LEN(J2)-FIND(",",J2))
三、x°,x',x"度分秒之前数字的提取
①度
=LEFT(O2,FIND("°",O2)-1)
②分
=MID(O2,FIND("°",O2)+1,FIND("′",O2)-FIND("°",O2)-1)
③秒
=MID(O2,FIND("′",O2)+1,FIND(CHAR(34),O2)-FIND("′",O2)-1)
提示:CHAR(34)实际为""",但Excel函数识别不了,提示函数错误,需要用字符代码进行替换
拓展:=FIND(CHAR(34),A1)
CHAR()是CODE()的反函数。
CODE()用来找字符的值,CHAR()用值来找字符。
CHAR(34):34就是"的code
注:如果Excel提示出错,则逐步检查,如果确定位置为CHAR(34),则可能是因为用户的"的符号编码问题,通过CODE函数检查"的编号,即可继续通过CHAR函数引入相应的编号。
④度分秒组合转换算法
=LEFT(O2,FIND("°",O2)-1)*1+MID(O2,FIND("°",O2)+1,FIND("′",O2)-FIND("°",O2)-1)/60+MID(O2,FIND("′",O2)+1,FIND(CHAR(34),O2)-FIND("′",O2)-1)/3600
四、将步骤三分别组合步骤一和步骤二
①经度
=LEFT(RIGHT(J2,LEN(J2)-FIND(",",J2)),FIND("°",RIGHT(J2,LEN(J2)-FIND(",",J2)))-1)*1+MID(RIGHT(J2,LEN(J2)-FIND(",",J2)),FIND("°",RIGHT(J2,LEN(J2)-FIND(",",J2)))+1,FIND("′",RIGHT(J2,LEN(J2)-FIND(",",J2)))-FIND("°",RIGHT(J2,LEN(J2)-FIND(",",J2)))-1)/60+MID(RIGHT(J2,LEN(J2)-FIND(",",J2)),FIND("′",RIGHT(J2,LEN(J2)-FIND(",",J2)))+1,FIND(CHAR(34),RIGHT(J2,LEN(J2)-FIND(",",J2)))-FIND("′",RIGHT(J2,LEN(J2)-FIND(",",J2)))-1)/3600
②纬度
=LEFT(LEFT(J2,FIND(",",J2)-1),FIND("°",LEFT(J2,FIND(",",J2)-1))-1)*1+MID(LEFT(J2,FIND(",",J2)-1),FIND("°",LEFT(J2,FIND(",",J2)-1))+1,FIND("′",LEFT(J2,FIND(",",J2)-1))-FIND("°",LEFT(J2,FIND(",",J2)-1))-1)/60+MID(LEFT(J2,FIND(",",J2)-1),FIND("′",LEFT(J2,FIND(",",J2)-1))+1,FIND(CHAR(34),LEFT(J2,FIND(",",J2)-1))-FIND("′",LEFT(J2,FIND(",",J2)-1))-1)/3600
---2018年6月于东莞麻涌

转载于:https://www.cnblogs.com/pycsharpthon/p/9517189.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值