MACRO que pase a otra hoja solo los datos filtrados

Elsa Matilde, quiero utilizar la MACRO que diseño en la pregunta MACRO con opción de escoger celda de origen y destino para "convertir texto a numero" del 07 de noviembre 2015, pero cuando lo realiza me copia todas las filas no logrando lo que quiero osea pasar solo las filas filtradas, por favor ayúdeme con la modicacion de su creación, es la que sigue:

Sub PasarVal_otraHoja_SELEC()   'con selección de rangos
'x Elsamatilde
'hoja destino
Set ho2 = Sheets("Hoja2")
'solicitar inicio del rango de datos de la hoja activa
'controla posible error al cancelar ventana
On Error Resume Next
'evitar que se ejecute el evento Selection_Change
Application.EnableEvents = False
Set rango = Application.InputBox("Seleccione 1 celda o el rango que desee volcar a hoja y luego presione ACEPTAR.", Type:=8)
rgo1 = rango.Address
Set rango = Nothing
Set rango = Application.InputBox("Seleccione la PRIMER celda de destino y luego presione ACEPTAR.", Type:=8)
rgo2 = rango.Address
On Error GoTo 0
If rgo1 = "" Or rgo2 = "" Then
    MsgBox "Error en el ingreso de celdas origen-destino."
    Exit Sub
End If
'se recorre la col a partir de la celda origen hasta encontrar 1 celda vacía
Range(rgo1).Select
'cantidad de columnas a convertir
colx = Range(rgo1).Columns.Count
While ActiveCell <> ""
For i = 0 To colx - 1
    'si se trata de celdas con texto se pasa sin convertir
    If IsNumeric(ActiveCell.Offset(0, i)) Then
        If Val(ActiveCell.Offset(0, i)) <> 0 Then
        ho2.Range(rgo2).Offset(0, i) = ActiveCell.Offset(0, i).Value * 1
        End If
    Else
        'pasa el dato sin convertir
        ho2.Range(rgo2).Offset(0, i) = ActiveCell.Offset(0, i).Value
    End If
Next i
    'pasa a la fila siguiente en rango destino
    rgo2 = Range(rgo2).Offset(1, 0). Address(False, False)
    'pasa a fila sgte en rango origen
    ActiveCell.Offset(1, 0).Select
Wend
Application.EnableEvents = True
End Sub

1 respuesta

Respuesta
1

Esta macro recorre un rango a partir de la celda seleccionada como Origen.

¿Tu idea entonces cual es? ¿Seleccionar un rango filtrado?

Aclarando un poquito más lo que necesitas o mejor envíame una hoja de muestra de lo que necesitas. Mis correos aparecen en el sitio que dejo al pie.

Estimada experta Elsa Matilde, le acabo de enviar un correo que Anexo tiene una lista filtrada por la columna cantidad, en realidad quiero una MACRO que copie solo los datos filtrados utilizando el mismo sistema de la MACRO con opción de escoger celda de origen y destino para "convertir texto a numero".Ya que en ciertas ocasiones quizás solo necesite una parte de las filas filtradas.La idea es que la selección del bloque de datos filtrados sea copiado a otra hoja, Muchas gracias estima expera, saludos, JOHNMOR41

Adjunto macro adaptada a tu modelo.

Sub rgoFiltrado_otraHoja()   'con selección de rangos
'x Elsamatilde
'hoja destino
Set ho2 = Sheets("Hoja2")
'solicitar inicio del rango de datos de la hoja activa
'controla posible error al cancelar ventana
On Error Resume Next
Set rango = Application.InputBox("Seleccione 1 celda o el rango que desee volcar a hoja y luego presione ACEPTAR.", Type:=8)
rgo1 = rango.Address
Set rango = Nothing
Set rango = Application.InputBox("Seleccione la PRIMER celda de destino y luego presione ACEPTAR.", Type:=8)
rgo2 = rango.Address
On Error GoTo 0
If rgo1 = "" Or rgo2 = "" Then
    MsgBox "Error en el ingreso de celdas origen-destino."
    Exit Sub
End If
'se copia el rango filtrado en destino
Range(rgo1).Copy Destination:=ho2.Range(rgo2)
'opcional, quedarse en hoja destino
ho2.Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas