how to convet degree/mins to decimal in excel? -


i've googled lot did not find solution. want convert lat long data (degree, min, sec) decimal in excel.

traditionally lat long data 25°43'21.3", database i'm working not have degree (°) symbol, has dot(.) instead of degree.for example- 25.43'21.3"

so script convert 25.43'21.3" decimal like- 25.722583333333333 ??

the following code works when data comes (°) symbol.

    function convert_decimal(degree_deg string) double    ' declare variables double precision floating-point.    dim degrees double    dim minutes double    dim seconds double    ' set degree value before "°" of argument passed.    degrees = val(left(degree_deg, instr(1, degree_deg, "°") - 1))    ' set minutes value between "°" , "'"    ' of text string variable degree_deg divided    ' 60. val function converts text string number.    minutes = val(mid(degree_deg, instr(1, degree_deg, "°") + 2, _              instr(1, degree_deg, "'") - instr(1, degree_deg, _              "°") - 2)) / 60     ' set seconds number right of "'"     ' converted value , divided 3600.     seconds = val(mid(degree_deg, instr(1, degree_deg, "'") + _             2, len(degree_deg) - instr(1, degree_deg, "'") - 2)) _             / 3600    convert_decimal = degrees + minutes + seconds end function 

this it:

private const vbquote string = """"  public sub test()     debug.print answer("25.43'21.3""") end sub   public function answer(byval s string) double     dim degrees double     dim minutes double     dim seconds double      dim dotpos integer 'position of first dot in string     dim commapos integer 'position of comma in string     dim quotepos integer 'position of quote in string      dotpos = instr(s, ".")     commapos = instr(s, "'")     quotepos = instr(s, vbquote)      if dotpos = 0 or _         commapos = 0 or _         quotepos = 0 or _         dotpos > commapos or _         commapos > quotepos          'some error handling here         stop     end if      degrees = cdbl(left(s, dotpos - 1))     minutes = cdbl(mid(s, dotpos + 1, commapos - dotpos - 1))     seconds = cdbl(mid(s, commapos + 1, quotepos - commapos - 1))      answer = degrees + minutes / 60 + seconds / 3600  end function 

Comments