Como copiar rango sin tomar como valores, celdas con fórmulas

Tengo un problema con una macro, la cual me esta pegando con un valor (0 o un espacio en blanco)a las celdas copiadas de un rango, cuando estas contienen una fórmula.Les detallo mi macro...

Sub Copiar()
Sheets("Hoja1").Select
Range("A1:B6").Copy 'En este rango están los importes que deben multiplicarse
Sheets("Hoja2").Select
Range("A500000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues 'busca la ultima celda con valor

Sheets("Hoja1").Select
Range("C1:C6").Copy  'En Este rango tengo celdas con formulas, q suman datos del rango ("C1:C6")
Sheets("Hoja2").Select
Range("C500000").End(xlUp).Offset(1, 0).PasteSpecial xlPasteValues

End Sub

Lo que necesitaría es que me copie solamente las celdas que contengan un valor mayor a 0 dentro del Rango("C1:C6"), así cuando me pase los datos no me ocupen una celda

("C1:C6") las formulas dentro de este rango son =SI.ERROR(A1*B1;"0"), lo tengo así porque los datos a multiplicar provienen de otra hoja, los cuales son traídos a la Hoja1 por medio de la función BUSCARV

          A     B     C 

1       2     2      4 

2       3     5      15

3       5     5      25

4                        0 ' Este 0 me lo pasa a la hoja2, 

5                        0 ' Este 0 me lo pasa a la hoja2, 

6                        0 ' Este 0 me lo pasa a la hoja2, 

Respuesta
1

Usa esta macro, hace un filtro de números mayores a 0 y los copia a la hoja2

Sub copiar_mayores_a_0()
With Sheets("hoja1").Range("A1").CurrentRegion
    .AutoFilter 3, ">0"
    .Copy
    With Sheets("hoja2").Range("a1").CurrentRegion
        filas = .Rows.Count
        If filas = 1 Then .PasteSpecial
        If filas > 1 Then .Rows(filas + 1).PasteSpecial
    End With
    .AutoFilter
End With
End Sub

Hola James, te agradezco tu interés en ayudarme, pero no sería lo que estoy necesitando. Ya que la macro que detalle arriba es parte de una macro mucho más grande, solo que la resumí para que se entienda más fácil.

Pensaba que había una forma de agregar o reemplazar la siguiente línea de la macro que te detallo a continuación, por algo que copie solo de esa columna los datos mayores a 0

Range("C1:C6").Copy  'Copiar solo celdas con valor mayor a 0

Te subo, unas imágenes para que veas que es lo que causa el error

Buenas tardes, ¿alguna idea? O me dicen por favor porque servidor de archivos les podría pasar el archivo adjunto así es más sencillo. Saludos

Sube el archivo a un servicio de nube y pega el link aquí porque con la imagen no me queda nada claro tu requerimiento

Buen día, te paso el link del archivo

https://1drv.ms/x/s!ArTYQfetHOH1lGbi8jmThcT7C7b3

Cargue 2 ventas como para que  veas como queda cuando pasa las ultimas columnas

si te pide una contraseña en alguna hoja es 5895

Saludos

¿Y la macro que hace la copia se llama?

Es la del módulo 1, se llama relleno si no me equivoco 

Prueba esta macro

Sub copiar_datos()
Set datos = Sheets("carpintero").Range("b1").CurrentRegion
With datos
    col = .Columns.Count
    filas = WorksheetFunction.CountA(.Columns(1))
    Set datos = .Rows(2).Resize(filas - 1, col + 13)
Set vendidos = Sheets("vendido").Range("a1").CurrentRegion
    With vendidos
        filas2 = .Rows.Count
        col = .Columns.Count
        Set vendidos = .Rows(filas2 + 1).Resize(filas - 1, col)
        .Columns(2).Value = datos.Columns(2).Value
        .Columns(3).Value = datos.Columns(5).Value
        .Columns(4).Value = datos.Columns(6).Value
        .Columns(5).Value = datos.Columns(7).Value
        .Columns(6).Value = datos.Columns(8).Value
        .Columns(7).Value = datos.Columns(10).Value
        .Columns(8).Value = datos.Columns(11).Value
        .Columns(9).Value = datos.Columns(12).Value
        .Columns(10).Value = datos.Columns(18).Value
        .Columns(11).Value = datos.Columns(19).Value
        .Columns(12).Value = datos.Columns(20).Value
        .Columns(13).Value = datos.Columns(21).Value
    End With
End With
Set vendidos = Nothing: Set datos = Nothing
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas