Copiar fila con fórmulas.

¿Qué código necesito para que al insertar una fila, me copie los formatos y fórmulas de otra determinada, pero no los valores que pueda contener?

1 Respuesta

Respuesta
1
Si por ejemplo tenemos la fila 1 con los formatos y fórmulas que queremos copiar y lo queremos hacer sobre la fila 2. La macro que lo haría sería la siguiente:
Sub Macro Copiar Formato y Formula()
'
    Rows("1:1").Select
    Selection.Copy
    Rows("2:2").Select
    Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
End Sub
Te explico como podrías hacer tú lo que hace esta fórmula.
- Selecciones la fila 1, y pulsas en la bara de menús "Edición", "Copiar"; o si lo prefieres Control + C
- Te sitúas en la fila 2 y pulsas en la bara de menús "Edición", "Pegado Especial" y aquí seleccionas lo que quieres pegar.
Si quieres pegar varias cosas, repites la operación.
Hola experto :
El código copia todo lo de la fila anterior, pero también los valores, por lo tanto no es lo que yo buscaba, copiar solo fórmulas y formatos.
Un saludo
Miralo bien, porque dice bien claro, "PasteFormulas" si la fórmula es la misma y hace referencia a los mismas celdas, es normal que los valores sean iguales.
Si lo que pretendes es por ejemplo copiar una fórmula de B1 que hace referencia a A1 y coiarlo en B2 y con referencia a A2, tu pregunta está mal planteada.
Hola experto:
Creo que lo que pido no se puede hacer. La fórmula que me diste funciona pero copia los valores de la fila anterior (celdas que tienen algún tipo de dato, introducido manualmente y que no tiene ningún tipo de fórmula, como puede ser texto o número, es decir si en A1 figura Jesús, con tu fórmula en B1 aparecerá Jesús, cuando tendría que estar en blanco).
Si consideras que no se puede realizar, cerramos esta pregunta.
Gracias por todo.
Creo comprender lo que pretendes.
Lo que quieres es que si lo que hay en una celda es una fórmula, copie el enunciado de esa fórmula y si no lo es que lo deje en blanco.
Yo en estos caso hago varios pasos intermedios.
Suponiedo que las fórmulas estén en la fila1
Lo que hago es poner un espacio delante del signo =
Si quieres una macro aquí la tienes.
Sub Macro1()
'
    Rows("1:1").Select
    Selection.Replace What:="=", Replacement:=" =", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub
En la fila 3 pondría estas fórmulas columna 1, que arrastraría por todas las columnas que contienen las fórmulas.
=SI(IZQUIERDA(A1;2)=" =";A1;"")
Que lo que hace es detectar si empieza por " =", es decir, que es una fórmula.
Ahora lo que tienes que hacer es copiar el formato de la fila 1 y el valor de la fila 3. y volver a dejar la fila1 como fórmulas.
La Macro sería
Sub Macro2()
'
    Rows("3:3").Select
    Selection.Copy
    Rows("2:2").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Rows("1:1").Select
    Application.CutCopyMode = False
    Selection.Copy
    Rows("2:2").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Rows("1:1").Select
    Selection.Replace What:=" =", Replacement:="=", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas