Copiar decimales

2 envíos / 0 nuevos
Último envío
Sotyr
Imagen de Sotyr
Offline
última acción: Hace 4 meses 1 semana
alta: 10/02/2021 - 17:14
Puntos: 35
Copiar decimales

Hola,

Necesito hacer una macro que me copie un conjunto de datos introducidos en una hoja y los pegue transpuestos a otra hoja.

La selección siempre es el mismo rango, y contiene valores numéricos y valores no numéricos.

En la hoja de introducción de datos, "Introducción horas", se ponen valores numéricos en el rango C8:C17.

El rango C3:C7 y la celda C18 son valores de texto.

El rango C3:C17 se copia a la hoja "Horas" transpuesto: de la columna B hasta la columna P.

La celda C18 se copia en la columna AA.

Luego, hacer unos cálculos que ya están definidos en las celdas superiores a las de la copia y que se extienden arrastrandolas hacia abajo.

Hasta aquí, mis macros funcionan y el cliente está satisfecho (aunque sé que no está 100% optimizado, funciona y el cliente lo usará puntualmente y con un volumen de datos pequeño, por lo que no me preocupa el rendimiento).

El problema que tengo es que si en los rangos numéricos pongo valores decimales, la copia se hace como entero redondeado, en ocasiones redondeado hacia arriba y en ocasiones hacia abajo. 

He probado lo siguiente, usando el método PasteSpecial de los objetos Selection. He tratado de cambiar tanto el argumento Paste como el Operation, pero en ningún caso me copia los decimales.

Sub Introducción_datos_2()

    Range("C3:C17").Select

    Selection.Copy

    Sheets("Horas").Select

    Range("B:B").Find("").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _

        False, Transpose:=True

    Sheets("Introducción horas").Select

    Range("C18").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Horas").Select

    Range("AA:AA").Find("").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Sheets("Introducción horas").Select

End Sub

 

También he probado de redondear los valores a copiar durante el proceso, tanto como en el ejemplo de abajo como tratando de sumar un valor minúsculo (0.0001) para que el redondeo siempre sea al decimal que está en la celda inicial. Tampoco he tenido demasiado éxito.

Sub Introducción_datos_2()

    Range("C3:C7").Copy

    Sheets("Horas").Select

    Range("B:B").Find("").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:= _

        False, Transpose:=True

    Dim valor As Double

    Dim rc As Long

    rc = Range("B" & Rows.Count).End(xlUp).Row

    For i = 8 To 17:

        Sheets("Introducción horas").Select

        valor = Round(Cells(i, 3).Value, 1)

        Sheets("Horas").Select

        Cells(rc, i - 1).Value = valor

        Next i

    Sheets("Introducción horas").Select

    Range("C18").Select

    Application.CutCopyMode = False

    Selection.Copy

    Sheets("Horas").Select

    Range("AA:AA").Find("").Select

    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _

        :=False, Transpose:=False

    Sheets("Introducción horas").Select

End Sub

 

He probado de juguetear con los puntos y las comas con Replace, pero nada parece copiarme los decimales.

¿Alguien tiene alguna idea?

Tengo claro que el problema debe ser muy básico, pero no se me ocurre que más probar.

 

¡Muchas gracias!

Etiquetas: 

Sotyr
Imagen de Sotyr
Offline
última acción: Hace 4 meses 1 semana
alta: 10/02/2021 - 17:14
Puntos: 35
Hola,El problema está en otra

Hola,

El problema está en otra Macro del fichero, y ya está resuelto.

Gracias!