En una celda tengo datos de latitud y en otra longitud, 194623 y 1012804, respectivamente. ¿Cómo puedo hacer para cada uno de los datos extraerlos a una celda diferente pero ya convertidos a grados, minutos y segundos, es decir 19°46'23'' y 101°28'04''.Efectivamente, la longitud y la latitud se miden en grados, minutos y segundos, tal como los ángulos. Pero lo que busca nuestro lector no es convertir medidas entre distintos sistemas de unidades (la explicación va más adelante), ya que sus datos muestran las coordenadas pero sin los símbolos correspondientes.
Antes de entrar en el tema de los ángulos en Excel, vamos a resolver el problema de nuestro lector. La "conversión" puede verse en esta imagen
La fórmula en la celda B1 es:
=IZQUIERDA(A1,LARGO(A1)-4)&CARACTER(176)&EXTRAE(A1,LARGO(A1)-3,2)&CARACTER(39)&DERECHA(A1,2)&CARACTER(34)
Usamos el operador "&" para concatenar las distintas partes de la cadena de texto y usamos la función CARACTER para representar el símbolo de los grados, de los minutos y de los segundos. La función LARGO nos permite determinar cuantos dígitos conforman los grados (puede variar de 1 a tres) dinánicamente. La fórmula supone que siempre los minutos y los segundos tienen dos cifras.
El resultado de esta fórmula es un texto, por lo que si bien representa correctamente las medidas de la longitud y la latitud, no nos sirve para realizar cálculos.
Los ángulos, como las fechas y horas, pueden expresarse en el sistema decimal. Así como 20/07/2015 12:30:00 puede expresarse en forma decimal como 42205.52 donde la parte entera es la fecha y la parte decimal las horas, minutos y segundos, lo mismo podemos hacer con ángulos. Así si tenemos por ejemplo el ángulo de 19° 46' 23'' de nuestro ejemplo puede expresarse decimalmente con el número 19.773. Si tenemos el ángulo expresado en forma decimal podemos mostraralo en forma sesxagesimal usando la función TEXTO y dándole formato de hora, dividiendo los grados por 24, como en el sistema horario
Y ahora entraremos en el meollo de la cuestión. Si queremos hacer algún tipo de operación con ángulos tendremos que transformarlos a radianes ya que Excel usa el radián como unidad de medida para trabajar con ángulos. Convertir angulos en forma decimal a radianes es fácil, como mostraré más adelante. Pero no contamos con ninguna función o fórmula para convertir ángulos sexagesimales a decimales. Para hacerlo usamos esta función UDF publicada gentilmente por Microsoft
Function Convert_Decimal(Degree_Deg As String) As Double
' Declare the variables to be double precision floating-point.
Dim degrees As Double
Dim minutes As Double
Dim seconds As Double
' Set degree to value before "°" of Argument Passed.
degrees = Val(Left(Degree_Deg, InStr(1, Degree_Deg, "°") - 1))
' Set minutes to the value between the "°" and the "'"
' of the text string for the variable Degree_Deg divided by
' 60. The Val function converts the text string to a number.
minutes = Val(Mid(Degree_Deg, InStr(1, Degree_Deg, "°") + 2, _
InStr(1, Degree_Deg, "'") - InStr(1, Degree_Deg, _
"°") - 2)) / 60
' Set seconds to the number to the right of "'" that is
' converted to a value and then divided by 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
Para convertir de grados decimales a radianes usamos la función RADIANES() o este algoritmo (ver la explicación aquí)
radianes = ángulo decimal x (Pi / 180)Para convertir ángulos de radianes a decimales usamos la función GRADOS().
Como indicamos anteriormente, Excel usa radianes para cálculos con ángulos (trigonometría). Por lo tanto si queremos calcular el seno de un ángulo expresado como número decimal, debemos previamente convertirlo a radianes