1. Esta comunidad utiliza cookies. Si continuas utilizando nuestra comunidad estás aceptando la utilización de nuestras cookies. Más información.
  2. Se avecinan cambios en AyudaExcel.com

    Necesito que me des tu opinión sobre la nueva plantilla que estoy preparando para la web. Te muestro cinco imágenes del resultado. Solo tienes que pulsar aquí para escribir tu comentario.

  3. ¡Bienvenid@ a AyudaExcel! El foro más visitado sobre Excel en habla hispana.

    Si esta es tu primera visita, asegúrate de revisar los temas de la sección Utilización y Funcionamiento para familiarizarte con las funciones del foro. Si deseas publicar mensajes, será necesario que te Registres para que puedas dejar respuestas y crear tus propios mensajes, recuerda que es gratuito.

Solucionado Transformación a segundos con 2 dígitos decimales

Tema publicado en 'Temas resueltos' iniciado por aspirino00, 22 Ene 2009.

Estado del tema:
Cerrado para nuevas respuestas
  1. aspirino00

    aspirino00 Nuevo Usuario

    Reg:
    22 Ene 2009
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Hola, he encontrado esta macro para transformar grados decimales a grados, minutos y segundos:

    Function Convert_Degree(Decimal_Deg) As Variant
    With Application
    'Set degree to Integer of Argument Passed
    Degrees = Int(Decimal_Deg)
    'Set minutes to 60 times the number to the right
    'of the decimal for the variable Decimal_Deg
    Minutes = (Decimal_Deg - Degrees) * 60
    'Set seconds to 60 times the number to the right of the
    'decimal for the variable Minute
    Seconds = Format(((Minutes - Int(Minutes)) * 60), "0")
    'Returns the Result of degree conversion
    '(for example, 10.46 = 10~ 27 ' 36")
    Convert_Degree = " " & Degrees & "° " & Int(Minutes) & "' " _
    & Seconds + Chr(34)
    End With
    End Function

    Funciona perfectamente, el problema es que me gustaría recibir todo igual pero los segundos con 2 decimales (la función sólo devuelve segundos sin decimales). ?Cómo podría cambiar la macro para conseguirlo? Muchas gracias.
     
  2. ioyama

    ioyama Moderador Staff AyudaExcel

    Reg:
    24 Jun 2008
    Mensajes:
    4.693
    Me Gusta recibidos:
    402
    Hola aspirino00

    Prueba con

    Seconds = Format(((Minutes - Int(Minutes)) * 60), "0.00")

    en lugar del actual

    Seconds = Format(((Minutes - Int(Minutes)) * 60), "0")

    Un saludo desde Vitoria
     
  3. aspirino00

    aspirino00 Nuevo Usuario

    Reg:
    22 Ene 2009
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Hey, muchas gracias, funciona perfectamente. Un saludo desde Alemania ;)
     
  4. aspirino00

    aspirino00 Nuevo Usuario

    Reg:
    22 Ene 2009
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Perdona Ioyama, pero ahora tengo el problema contrario con otra macro que hace lo contrario:

    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

    Pensaba que si escribía la entrada con números decimales lo tenía en cuenta, pero solo lo calcula para valores mayores o iguales que 01,00" (por ejemplo no funciona con 00,99"). ?Como cambio el código? Muchas gracias e nuevo y perdón por las molestias :)
     
  5. ioyama

    ioyama Moderador Staff AyudaExcel

    Reg:
    24 Jun 2008
    Mensajes:
    4.693
    Me Gusta recibidos:
    402
    Hola aspirino00

    CÓDIGO:
    Es necesario iniciar sesión o registrarse para ver este contenido.
    He introducido un par de cambios (en azul), de todas las maneras si pones un valor en una celda y a contiuación pasas a sexagesimal y este lo vuelves a pasar a decimal, éste último no te coincidirá con el primero, ya que hemos cortado los decimales en el paso a sexagesimal en 2, por lo que habrá un desfase en la milésima.

    Un saludo desde Vitoria
     
  6. aspirino00

    aspirino00 Nuevo Usuario

    Reg:
    22 Ene 2009
    Mensajes:
    4
    Me Gusta recibidos:
    0
    Muchas gracias de nuevo, todo funciona ;)
     
Estado del tema:
Cerrado para nuevas respuestas

Compartir esta página