Añadir una fórmula con VBA

Una de las propiedades de VBA más útiles es añadir una fórmula en nuestra hoja de Excel mediante VBA. Esto nos puede servir para calcular rápidamente en nuestra hoja algunos elementos.

Cuando empecé a trabajar con VBA pensé que todo debía hacerse a través de código, incluso una humilde suma, y luego reflejarla en el Excel como un valor… todo lo contrario, el usuario, incluso yo mismo, quiere saber de donde sale cada valor… y si es una suma, ver la fórmula de la suma para cerciorarse de que no hay errores:La propiedad de VBA que nos permite hacer esto es:

Cells.Formula

En la siguiente imagen podéis ver la que lleva:

Image añadir una fórmula con VBA

En el ejemplo, se añaden valores a las celdas A1 y A2 y luego en la celda A3 habremos añadido la fórmula que suma las dos primeras.

También podríamos haber añadido la fórmula como:

Cells(3, 1). Formula = “=Suma(A1:A2)” o cualquier otra operación en Excel que hubiéramos querido siempre y cuando vaya entre comillas.

También podremos insertar el valor de la fórmula sin especificar el atributo .Formula. Esto no daría ningún problema. En el caso en que quisiéramos conocer la fórmula de una celda, es decir, el proceso contrario, sí que la necesitaríamos. Sino, Excel nos devolverá el valor de la operación y no la fórmula en sí misma.

Ahora bien, desde aquí os animamos a utilizar siempre el atributo para aumentar la legibilidad del código de VBA, para que cuando vuelvas sobre el mismo al cabo de los meses tú mismo, u otro cualquiera, no tenga problemas a la hora de interpretar la sintaxis.

Autor: Quique Arranz

Quique es un fanático del Excel desde que empezó a trabajar con ello hace unos pocos años. Adquirió su conocimiento a través de Google y de infinitas pruebas y más pruebas. Además, Quique es un entusiasta de su familia (mujer e hijos), del deporte y de la cerveza... no dudes en contactar con él para cualquier duda que tengas.

6 opiniones en “Añadir una fórmula con VBA”

  1. Hola Quique, quisiera saber como puedo ingresar una formula en una celda vacia de una columna especifica desde un botón de comando y que la vaya ingresando en las filas siguientes de la misma columna cada vez que oprima el boton

    1. Hola Gustavo, la instrucción NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 sirve para lo que quieres. Ten en cuenta que en Cells(Rows.Count, 1) el 1 después de la coma indica que es la columna 1 y deberás sustituirla por el número de columna específica. NextRow es una variable Long (estoy trabajando con Office 2013) que almacena el número de fila. La celda en dónde irás poniendo la fórmula será por ejemplo Cells(NextRow,1). Saludos,

  2. que tal quique arranz gusto en saludarte. mi pregunta es: cómo puedo personalizar una celda para que sin meter una función físicamente en ella, me redondee los decimales que al calcular mediante formulas lo haga. se puede lograr esto mediante las propiedades de celdas? te agradezco tus comentarios

    1. Hola Sebastian,
      Para que aparezcan los valores redondeados puedes hacerlo en la pestaña “inicio” en el grupo que pone “Número”. Ahí puedes investigar todos los formatos numéricos que necesitas.
      Espero haberte ayudado!
      Saludos!

  3. Hola Quique. Enhorabuena por el blog. Una pregunta sobre este tema:
    He intentado meter fórmulas, como el ejemplo que has puesto Cells(3, 1). Formula = “=Suma(A1:A2)” . Pero sólo me acepta fórmulas en inglés. Es siempre así o hay alguna forma de cambiarlo? Un saludo

    1. Hola Ignacio. Gracias por visitar el blog. VBA te aceptará las funciones en el idioma en el que tengas Excel. Intuyo que el tuyo está en inglés. Si es así, efectivamente, sólo podrás ingresar fórmulas en inglés.
      Saludos!
      Quique

Comentarios cerrados.