Macro para copiar y pegar valores en celdas filtradas en Excel

A quién le ha pasado que aplicamos un filtro, ponemos una fórmula en las celdas filtradas y al final queremos copiar y pegar valores?

A mi sí. Y el resultado es que Excel no me deja copiar y valores en las celdas filtradas por que “No podemos pegar ya que el área Copiar y el área de pegado tienen formas distintdas”. Y tiene razón, pero si aún así deseamos copiar y pegar valores qué hacemos ?

Copiar y pegar valores en datos filtrados en Excel

Figura 1. Intentamos copiar y pegar valores en celdas filtradas.

Ver video Copiar y pegar en celdas filtradas

Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.

La solución

Ante la situación de no encontrar una manera nativa en Excel de pegar valores en celdas filtradas, me di a la tarea de crear un macro que prácticamente lo que hace es recorrer cada una de las celdas elegidas y evaluar si la celda está visible. Sí la celda está visible deja sólo el valor de la celda quitando la fórmula.

Ésta macro está incluída mi EXCELeINFO add-in.

Convertir valor de la celda en su valor calculado

Figura 2. EXCELeINFO addin, convertir valor de la celda en su valor calculado.

Plus – código de la macro

Y para que vean que los quiero mucho, les comparto el código de la macro.

Sub EXCELeINFOPegarValores()
Dim Celdas As Range
'
On Error GoTo Errores
'
If MsgBox("Desea convertir a valor las celdas seleccionadas?", vbQuestion + vbYesNo, AddIn) _
   = vbNo Then Exit Sub
'
Application.Calculation = xlCalculationManual
'
For Each Celda In Selection
    If Celda.EntireRow.Hidden = True Then
    Else
        Celda.Value = Celda.Value
    End If
Next Celda
'
Application.Calculation = xlCalculationAutomatic
'
Exit Sub
'
Errores:
Application.Calculation = xlCalculationAutomatic
MsgBox "Ha ocurrido un error: " & err.Description, vbExclamation, "EXCELeINFO"
End Sub

Descarga el archivo de ejemplo

Copiar y pegar en celdas filtradas – Repaso curso macros – EXCELeINFO.zip

Si te gustó este tutorial por favor regístrate en nuestra Lista de correo y Suscríbete a nuestro canal de YouTube para que estés siempre enterado de lo nuevo que publicamos.

You may also like...

2 Responses

  1. Ramiro Balmaceda says:

    Gracias por el aporte Amigo, simple y útil.

  2. Edgar Chimal says:

    ¡Me ha sido de gran utilidad tu código!
    Dado que mis datos están ordenados para que al filtrarlos los datos estén contiguos, he modificado tu código para actualizar valores por bloques:

    For Each celda In Selection
    If celda.EntireRow.Hidden = True Then
    Else
    Renglon_Inicial = ActiveCell.Row
    Exit For
    End If
    Next celda
    Selection.End(xlDown).Select
    Renglon_Final = ActiveCell.Row
    ‘ACTUALIZA VALORES
    Range(“F” & CStr(Renglon_Inicial) & “:” & “F” & CStr(Renglon_Final)).Value = NewValue

    Saludos.

Leave a Reply

Your email address will not be published.

%d bloggers like this: