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
Post a Comment