将 116°24'26.64" 转为 116.4074 的核心公式为:
=度 + 分/60 + 秒/3600
但实际数据中,DMS格式常以文本形式存在(如 "116°24'26.64""),需先提取度、分、秒。Excel没有内置DMS解析函数,需组合使用文本函数。
✅ 方案一:DMS为标准格式(含°、'、"符号)
假设A2 = 116°24'26.64",可用以下公式提取:
=LEFT(A2,FIND("°",A2)-1) → 度
=MID(A2,FIND("°",A2)+1,FIND("'",A2)-FIND("°",A2)-1) → 分
=MID(A2,FIND("'",A2)+1,LEN(A2)-FIND("'",A2)-2) → 秒(需去掉结尾引号)
组合为完整转换公式:
=VALUE(LEFT(A2,FIND("°",A2)-1)) + VALUE(MID(A2,FIND("°",A2)+1,FIND("'",A2)-FIND("°",A2)-1))/60 + VALUE(MID(A2,FIND("'",A2)+1,LEN(A2)-FIND("'",A2)-2))/3600
✅ 方案二:紧凑型DMS(无符号,如116242664)
若数据为 116242664(表示116°24'26.64"),可按位提取:
=LEFT(A2,3) + MID(A2,4,2)/60 + MID(A2,6,2)/3600 + (MID(A2,8,2)/100)/3600
但需注意:若度为2位(如东经85°),则需动态定位。更稳健的方案是使用正则表达式(需VBA)或Power Query。
✅ 方案三:混合格式(如116,24,26.64)
若DMS以逗号分隔(116,24,26.64),使用 TEXTSPLIT(Excel 365)或 TEXTTOCOLUMNS:
=VALUE(TEXTSPLIT(A2,","))/1 + VALUE(TEXTSPLIT(A2,","))/60 + VALUE(TEXTSPLIT(A2,","))/3600
或兼容旧版Excel:
=VALUE(LEFT(A2,FIND(",",A2)-1)) + VALUE(MID(A2,FIND(",",A2)+1,FIND(",",A2,FIND(",",A2)+1)-FIND(",",A2)-1))/60 + VALUE(MID(A2,FIND(",",A2,FIND(",",A2)+1)+1,LEN(A2)-FIND(",",A2,FIND(",",A2)+1)))/3600
? 重要提示
若原始DMS为南纬(S)或西经(W),需在最终结果前添加负号。可在公式外层嵌套判断:
=IF(OR(RIGHT(A2,1)="S",RIGHT(A2,1)="W"),-1,1) [转换公式]