Fórmulas de Excel VBA: la guía definitiva

Este tutorial le enseñará cómo crear fórmulas de celda usando VBA.

Fórmulas en VBA

Con VBA, puede escribir fórmulas directamente en rangos o celdas en Excel. Se parece a esto:

123456789 Sub Formula_Example ()'Asignar una fórmula codificada a una sola celdaRango ("b3"). Fórmula = "= b1 + b2"'Asignar una fórmula flexible a un rango de celdasRango ("d1: d100"). FórmulaR1C1 = "= RC2 + RC3"End Sub

Hay dos propiedades de rango que necesitará conocer:

  • .Fórmula - Crea una fórmula exacta (referencias de celda codificadas). Bueno para agregar una fórmula a una sola celda.
  • .FórmulaR1C1 - Crea una fórmula flexible. Bueno para agregar fórmulas a un rango de celdas donde las referencias de celda deberían cambiar.

Para fórmulas simples, está bien usar la propiedad .Formula. Sin embargo, para todo lo demás, recomendamos utilizar el Grabador de macros

Grabador de macros y fórmulas de celda

Macro Recorder es nuestra herramienta de referencia para escribir fórmulas de celda con VBA. Simplemente puede:

  • Iniciar la grabación
  • Escriba la fórmula (con referencias relativas / absolutas según sea necesario) en la celda y presione enter
  • Para de grabar
  • Abra VBA y revise la fórmula, adaptándola según sea necesario y copiando + pegando el código donde sea necesario.

Lo encuentro más fácil ingresar una fórmula en una celda que escribir la fórmula correspondiente en VBA.

Observe un par de cosas:

  • La grabadora de macros siempre usará la propiedad .FormulaR1C1
  • El registrador de macros reconoce las referencias de celda absolutas frente a las relativas

VBA FormulaR1C1 Propiedad

La propiedad FormulaR1C1 utiliza referencias de celda de estilo R1C1 (a diferencia del estilo A1 estándar que está acostumbrado a ver en Excel).

Aquí hay unos ejemplos:

12345678910111213141516171819 Sub FórmulaR1C1_Examples ()'Referencia D5 (Absoluto)'= $ D $ 5Rango ("a1"). FórmulaR1C1 = "= R5C4"'Referencia D5 (relativo) de la celda A1'= D5Rango ("a1"). FórmulaR1C1 = "= R [4] C [3]"'Referencia D5 (Fila absoluta, Columna relativa) de la celda A1'= D $ 5Rango ("a1"). FórmulaR1C1 = "= R5C [3]"'Referencia D5 (Fila relativa, Columna absoluta) de la celda A1'= $ D5Rango ("a1"). FórmulaR1C1 = "= R [4] C4"End Sub

Tenga en cuenta que la referencia de celda de estilo R1C1 le permite establecer referencias absolutas o relativas.

Referencias absolutas

En la notación estándar A1, una referencia absoluta se ve así: “= $ C $ 2”. En la notación R1C1 se ve así: “= R2C3”.

Para crear una referencia de celda absoluta utilizando el tipo de estilo R1C1:

  • R + Número de fila
  • C + Número de columna

Ejemplo: R2C3 representaría la celda $ C $ 2 (C es la tercera columna).

123 'Referencia D5 (Absoluto)'= $ D $ 5Rango ("a1"). FórmulaR1C1 = "= R5C4"

Referencias relativas

Las referencias de celda relativas son referencias de celda que se "mueven" cuando se mueve la fórmula.

En la notación estándar A1 se ven así: “= C2”. En la notación R1C1, usa corchetes [] para compensar la referencia de celda de la celda actual.

Ejemplo: Ingresar la fórmula “= R [1] C [1]” en la celda B3 haría referencia a la celda D4 (la celda 1 fila a continuación y 1 columna a la derecha de la celda de fórmula).

Utilice números negativos para hacer referencia a las celdas que se encuentran arriba o a la izquierda de la celda actual.

123 'Referencia D5 (relativo) de la celda A1'= D5Rango ("a1"). FórmulaR1C1 = "= R [4] C [3]"

Referencias mixtas

Las referencias de celda pueden ser parcialmente relativas y parcialmente absolutas. Ejemplo:

123 'Referencia D5 (Fila relativa, Columna absoluta) de la celda A1'= $ D5Rango ("a1"). FórmulaR1C1 = "= R [4] C4"

Propiedad de fórmula de VBA

Al configurar fórmulas con.Propiedad de la fórmula siempre utilizará la notación de estilo A1. Ingresa la fórmula como lo haría en una celda de Excel, excepto rodeada de citas:

12 'Asignar una fórmula codificada a una sola celdaRango ("b3"). Fórmula = "= b1 + b2"

Consejos sobre fórmulas de VBA

Fórmula con variable

Cuando se trabaja con fórmulas en VBA, es muy común querer usar variables dentro de las fórmulas de las celdas. Para usar variables, usa & para combinar las variables con el resto de la cadena de fórmulas. Ejemplo:

1234567 Sub Formula_Variable ()Dim colNum As LongcolNum = 4Rango ("a1"). FormulaR1C1 = "= R1C" & colNum & "+ R2C" & colNumEnd Sub

Cotizaciones de fórmulas

Si necesita agregar una cita (“) dentro de una fórmula, ingrese la cita dos veces (“ ”):

123 Sub Macro2 ()Rango ("B3"). FórmulaR1C1 = "= TEXTO (RC [-1]," "mm / dd / aaaa" ")"End Sub

Una sola cita (“) significa para VBA el final de una cadena de texto. Mientras que una cita doble (“”) se trata como una cita dentro de la cadena de texto.

Del mismo modo, use 3 comillas (“” ”) para rodear una cadena con una comilla (“)

12 MsgBox "" "Use 3 para rodear una cadena con comillas" ""'Esto imprimirá una ventana inmediata

Asignar fórmula de celda a variable de cadena

Podemos leer la fórmula en una celda o rango determinado y asignarla a una variable de cadena:

123 'Asignar fórmula de celda a variableDim strFormula como cadenastrFormula = Rango ("B1"). Fórmula

Diferentes formas de agregar fórmulas a una celda

Aquí hay algunos ejemplos más sobre cómo asignar una fórmula a una celda:

  1. Asignar fórmula directamente
  2. Definir una variable de cadena que contenga la fórmula
  3. Utilice variables para crear fórmulas
12345678910111213141516171819202122232425 Sub MoreFormulaExamples ()'Formas alternativas de agregar fórmula SUM'a la celda B1'Dim strFormula como cadenaAtenuar celda como rangodim fromRow como rango, toRow como rangoEstablecer celda = Rango ("B1")'Asignación directa de una cadenacell.Formula = "= SUM (A1: A10)"'Almacenar cadena en una variable'y asignando a la propiedad "Fórmula"strFormula = "= SUMA (A1: A10)"cell.Formula = strFormula'Usando variables para construir una cadena'y asignándola a la propiedad "Fórmula"fromRow = 1toRow = 10strFormula = "= SUM (A" & fromValue & ": A" & toValue & ")cell.Formula = strFormulaEnd Sub

Actualizar fórmulas

Como recordatorio, para actualizar fórmulas, puede usar el comando Calcular:

1 Calcular

Para actualizar una fórmula, un rango o una hoja de cálculo completa, use .Calculate en su lugar:

1 Hojas ("Hoja1"). Rango ("a1: a10"). Calcular

Va a ayudar al desarrollo del sitio, compartir la página con sus amigos

wave wave wave wave wave