Copiar fórmulas de Excel a otra hoja con VBA

Para copiar fórmulas de una hoja de cálculo de Excel a otra con VBA, asigne el rango de origen FormulaR1C1a un rango de destino del mismo tamaño. Esto transfiere el patrón de la fórmula sin copiar el formato de las celdas, y las referencias relativas se ajustan a las celdas de destino. La macro que se muestra a continuación utiliza los nombres de las hojas de cálculo, por lo que no depende de la hoja activa.

Origen de la hoja de cálculo con la celda C2 seleccionada y la fórmula =A2*B2 visible en la barra de fórmulas.
El ejemplo de la hoja de cálculo Origen utiliza =A2*B2 en la celda C2.

Antes de empezar

Utilice la versión de escritorio de Excel; Excel para la web puede abrir un libro de trabajo que contenga macros, pero no puede crear, ejecutar ni editar macros VBA, como se explica en la guía de Microsoft sobre Excel para la web . Confirme los nombres exactos de las pestañas y las direcciones de origen y destino. En este ejemplo, las fórmulas están en Source!C2:C10y se colocarán en Summary, comenzando en C2.

El ejemplo utiliza ThisWorkbook, que se refiere al libro de trabajo donde se almacena el código de la macro. Mantenga la macro en ese libro de trabajo o cambie la referencia del libro de trabajo si el código se encuentra en otro lugar. Los nombres de las hojas de cálculo se seleccionan de la Worksheetscolección del libro de trabajo; el nombre entre comillas debe coincidir exactamente con la pestaña.

Pestaña Desarrollador de Excel con el botón Visual Basic resaltado sobre una cuadrícula del libro de trabajo.
Abra el Editor de Visual Basic desde la pestaña Desarrollador de Excel.

Copiar fórmulas a otra hoja con VBA

Abra el Editor de Visual Basic desde la pestaña Desarrollador de Excel , seleccione Visual Basic y, a continuación, seleccione Insertar > Módulo . Pegue este procedimiento en el módulo:

Sub CopyFormulasToAnotherSheet()
    Dim wb As Workbook
    Dim sourceRange As Range
    Dim targetCell As Range
    Dim targetRange As Range

    Set wb = ThisWorkbook
    Set sourceRange = wb.Worksheets("Source").Range("C2:C10")
    Set targetCell = wb.Worksheets("Summary").Range("C2")
    Set targetRange = targetCell.Resize(sourceRange.Rows.Count, _
                                        sourceRange.Columns.Count)

    targetRange.FormulaR1C1 = sourceRange.FormulaR1C1
End Sub

Modifique Source, Summary, y las direcciones de rango para que coincidan con su libro de trabajo. targetCelles la primera celda de destino; Resizehace que el destino tenga la misma altura y anchura que el origen, lo cual es necesario para una asignación de varias celdas. Para una sola fórmula, establezca el origen en una celda, como C2.

Panel de código del Editor de Visual Basic que muestra los rangos de la hoja de cálculo sourceRange y destRange, y una asignación FormulaR1C1.
La macro asigna el patrón FormulaR1C1 del rango de origen al rango de destino.

Ejecuta y guarda la macro.

  1. Coloque el punto de inserción en cualquier lugar CopyFormulasToAnotherSheetdel Editor de Visual Basic y pulse F5 . También puede volver a Excel, seleccionar Desarrollador > Macros , elegir el procedimiento y seleccionar Ejecutar .
  2. Compruebe las celdas de destino en Summary. Con una fórmula de origen como =A2*B2en Source!C2, el patrón de fórmula copiado en Summary!C2también es =A2*B2. Si la fórmula debe seguir leyendo valores en la hoja de origen, califique esas referencias en la fórmula de origen, por ejemplo =Source!A2*Source!B2.
  3. Guarde el libro como un libro de Excel habilitado para macros ( .xlsm) para que se conserve el procedimiento VBA. Si Excel le pregunta sobre la seguridad de las macros, ejecute solo las macros en las que confíe.
Resumen de la hoja de cálculo con la celda C2 seleccionada y la fórmula copiada =A2*B2 visible en la barra de fórmulas.
La hoja de cálculo de destino ahora tiene el mismo patrón de fórmula relativa que C2.

Elige el método adecuado para tus fórmulas.

FormulaR1C1Copia la estructura de la fórmula. Una referencia situada dos columnas a la izquierda de la celda con la fórmula permanece dos columnas a la izquierda en el rango de destino; las referencias absolutas se mantienen fijas. Esto resulta útil cuando se desea el mismo patrón de cálculo en un rango de destino correspondiente. No copia el formato. Si el rango de origen incluye constantes o celdas en blanco, estas también se transfieren como valores o celdas vacías, por lo que se recomienda usar un rango compuesto por las fórmulas que se desean copiar.

Para un comportamiento normal de copia en Excel, incluyendo fórmulas y formato, utilice Range.Copycon un destino:

wb.Worksheets("Source").Range("C2:C10").Copy _
    Destination:=wb.Worksheets("Summary").Range("C2")

Copia el contenido y el formato completos de la celda; Excel ajusta las referencias relativas como lo hace en una copia estándar. Úselo cuando el destino deba recibir más que fórmulas. Microsoft documenta tanto la propiedad FormulaR1C1 como el método Range.Copy .

Solucionar problemas comunes

  • “Subíndice fuera de rango”: Compruebe que los nombres de las hojas de cálculo estén escritos exactamente como aparecen en las pestañas, incluidos los espacios.
  • La fórmula apunta a celdas incorrectas: FormulaR1C1 contiene referencias relativas a la hoja de destino. Añada el nombre de la hoja a la fórmula cuando deba seguir apuntando a la hoja de origen.
  • El código utiliza el libro de trabajo incorrecto: ThisWorkbook hace referencia al archivo que contiene la macro. Si el código se encuentra en un libro de trabajo de macros personal, indique wbel nombre del libro de trabajo abierto.
  • La macro no aparece en la lista: Confirme que el archivo esté guardado con un nombre específico .xlsmy que las macros estén habilitadas para un archivo de confianza. Las instrucciones de Microsoft sobre macros explican cómo habilitar la pestaña Desarrollador y ejecutar un procedimiento.

Cuando se configuran deliberadamente los nombres de origen y destino, los rangos y el comportamiento de las referencias, la macro puede copiar una sola fórmula o un bloque completo sin seleccionar hojas ni depender del portapapeles.

Dejar un comentario

Convierte fotos en pinturas, bocetos y dibujos animados con FotoSketcher.

Convierte fotos en pinturas, bocetos y dibujos animados con FotoSketcher.

Convierte una foto en una pintura, un boceto a lápiz o una caricatura con FotoSketcher Studio. Aprende a elegir un efecto, ajustar la vista previa y guardar tu obra.

Analice e identifique archivos de audio en detalle con Audio Identifier.

Analice e identifique archivos de audio en detalle con Audio Identifier.

Descubre qué revela Audio Identifier sobre la tasa de bits, los codificadores y las etiquetas, cómo funciona su flujo de trabajo anterior y qué herramientas actuales inspeccionan archivos o identifican canciones.

My Photo Index: Un organizador de fotos de código abierto para Windows

My Photo Index: Un organizador de fotos de código abierto para Windows

My Photo Index es un catalogador de fotos antiguo de Windows para etiquetar, clasificar y explorar imágenes locales. Consulta sus funciones documentadas, limitaciones de compatibilidad y una alternativa actualizada.

Cambiar atributos, fechas y horas de archivos y carpetas con Attribute Changer

Cambiar atributos, fechas y horas de archivos y carpetas con Attribute Changer

Aprenda a usar Attribute Changer para editar los atributos y las marcas de tiempo de los archivos de Windows, actualizar las fechas EXIF ​​de las fotos JPEG y previsualizar los cambios por lotes de forma segura.

NeoDownloader: Configura parámetros y descarga imágenes por lotes desde sitios web.

NeoDownloader: Configura parámetros y descarga imágenes por lotes desde sitios web.

Aprende a crear un proyecto de NeoDownloader, elegir el alcance del rastreo, configurar los filtros de imagen y el destino, y revisar las descargas por lotes.

pViewer: Un visor de imágenes minimalista y lector de manga y cómics.

pViewer: Un visor de imágenes minimalista y lector de manga y cómics.

Aprende qué hace pViewer, cómo funcionan sus modos de foto y cómic, qué edición de Windows descargar y en qué se diferencian las versiones anterior y la reescrita.

Cómo configurar un fondo de pantalla diferente en cada monitor en Windows 10

Cómo configurar un fondo de pantalla diferente en cada monitor en Windows 10

Configura un fondo de pantalla diferente para cada monitor de Windows 10, identifica las pantallas, ajusta el tamaño de la imagen y soluciona problemas con la falta de opciones de monitor.

Cómo cambiar al siguiente fondo de escritorio con una combinación de teclas en Windows 7 y 8.

Cómo cambiar al siguiente fondo de escritorio con una combinación de teclas en Windows 7 y 8.

Configura una presentación de diapositivas en Windows 7 u 8, crea un pequeño acceso directo en VBScript y asigna una combinación de teclas para pasar al siguiente fondo de pantalla.

XnConvert: Aplica efectos y convierte formatos de imagen por lotes.

XnConvert: Aplica efectos y convierte formatos de imagen por lotes.

Usa XnConvert para aplicar efectos, redimensionar fotos y convertir formatos de imagen por lotes. Elige la configuración de salida, previsualiza las ediciones y protege tus originales.

Controla tus horas de trabajo y el uso del ordenador con ManicTime.

Controla tus horas de trabajo y el uso del ordenador con ManicTime.

Aprende cómo ManicTime realiza un seguimiento del uso de las aplicaciones, el tiempo de actividad e inactividad y los documentos, y luego convierte tu historial de actividad en etiquetas de proyecto y hojas de horas.