Macro excel buscar copiar y pegar

Se que esto es muy sencillo para muchos pero soy nuevo trabajando con excel. Necesito una macro que busque en el rango (B10:B20) el valor 1(o cualquier valor que yo quiera programar) sin que se detenga en las celdas vacías, luego valla a C1:C10 encuentre la siguiente celda vacía y pegue el 1.

1 respuesta

Respuesta
1

Puedes poner un par de imágenes explicando lo que tienes antes de ejecutar la macro y otra imagen donde se vea el resultado que esperas.

Son 2 columnas: 1 con números del 1 al 10 hay 10 botones donde están asignadas las macros y cada uno de ellos acciona un numero que debe ser copiado en la columna de destino.

La macro debe buscar y no parase en las celdas en blanco y al conseguir el numero debe copiarlo y pegarlo en la siguiente celda desocupada de la columna de destino.

Ah y me olvidaba que uso Excel 2007.

Te anexo la macro

Sub Pegar()
    Set rango = Range("C5:C15")
    rango.SpecialCells(xlCellTypeConstants, 23).Copy
    Range("E5").PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
End Sub

[' Si es lo que necesitas. No olvides valorar la respuesta. 

Buen día amigo Dante... Gracias por el tiempo que estás invirtiendo en ayudarme. probé la macro y funciona... solo que hay un problema: ella copia todas las celdas que tienen valor. Yo necesito que sea selectiva. en el caso del ejemplo que solo busque un solo factor, en este caso el "1" y lo copie y hay algo que no me había dado cuenta es que necesito que cuando consiga el "1" lo copie junto a la celda de la derecha y pegue el contenido de ambas celdas en las dos celdas de destino

Te anexo todas las macros, de la 1 a la 9, solamente asigna la correspondiente a cada uno de tus botones.

Sub copiar_1()
    Call Copiar_numeros(1)
End Sub
Sub copiar_2()
    Call Copiar_numeros(2)
End Sub
Sub copiar_3()
    Call Copiar_numeros(3)
End Sub
Sub copiar_4()
    Call Copiar_numeros(4)
End Sub
Sub copiar_5()
    Call Copiar_numeros(5)
End Sub
Sub copiar_6()
    Call Copiar_numeros(6)
End Sub
Sub copiar_7()
    Call Copiar_numeros(7)
End Sub
Sub copiar_8()
    Call Copiar_numeros(8)
End Sub
Sub copiar_9()
    Call Copiar_numeros(9)
End Sub
'
Sub Copiar_numeros(num)
    Range("H5:J15").ClearContents
    n = 5
    For i = 5 To 15
        If Cells(i, "C").Value = num Then
            Cells(n, "H").Value = num
            Cells(n, "I").Value = Cells(i, "D").Value
            n = n + 1
        End If
    Next
End Sub


['No olvides valorar la respuesta. 

Hola Dante... gracias por tu tiempo. La macro funciona, pero no busca la siguiente celda vacia en el rango de destino sino que me borra o sustituye lo que hay en las primeras celdas y siempre lo que se conserva es la ultima operación.

Realmente no estás poniendo ejemplos de lo que esperas de resultado.

Utiliza la siguiente macro

Sub copiar_1()
    Call Copiar_numeros(1)
End Sub
Sub copiar_2()
    Call Copiar_numeros(2)
End Sub
Sub copiar_3()
    Call Copiar_numeros(3)
End Sub
Sub copiar_4()
    Call Copiar_numeros(4)
End Sub
Sub copiar_5()
    Call Copiar_numeros(5)
End Sub
Sub copiar_6()
    Call Copiar_numeros(6)
End Sub
Sub copiar_7()
    Call Copiar_numeros(7)
End Sub
Sub copiar_8()
    Call Copiar_numeros(8)
End Sub
Sub copiar_9()
    Call Copiar_numeros(9)
End Sub
'
Sub Copiar_numeros(num)
    For i = 5 To 15
        u = Range("H" & Rows.Count).End(xlUp).Row + 1
        If Cells(i, "C").Value = num Then
            Cells(u, "H").Value = num
            Cells(u, "I").Value = Cells(i, "D").Value
        End If
    Next
End Sub

['No olvides valorar la respuesta. 

Gracias por tu ayuda Dante. La macro Funciona perfectamente.

Al final de mi respuesta hay 2 opciones para valorar la respuesta, "votar" y "excelente". Espero que puedas cambiar la valoración. La macro está tal cual la pediste.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas