Curso Excel VBA y Macros – Cap. 43 – Usar Fórmulas y funciones de Excel desde macros
En este video tutorial veremos la manera en la que podemos usar las funciones de hoja de cálculo que usamos en celdas, desde VBA. Las funciones de Excel se vuelven muy útiles cuando deseamos simular cálculos en celdas, pero usando macros. Por ejemplo, podemos usar la función BUSCARV para buscar un valor de un TextBox dentro de un rango de celdas y devolver la coincidencia.
Veremos 3 maneras en las que podemos trabajar con fórmulas y funciones desde VBA:
-
Usando Application.WorksheetFunction podemos usar las funciones de Excel desde macros y recuperar el resultado en celdas, formularios o para usar en otros cálculos.
-
Usando Range.FormulaLocal insertamos fórmulas en Excel en el idioma instalado en la computadora.
-
Usando Range.Formula insertamos fórmulas en celdas independientemente del idioma de la PC. Podemos distribuir archivos entre computadoras con diferentes idiomas.
Ver video Capítulo 43 Excel VBA & Macros
Suscríbete al canal de EXCELeINFO en YouTube para aprender más de Excel y macros.
Application.WorksheetFunction
Con esta propiedad podremos usar las funciones de hoja de cálculo directamente en nuestras macros y obtener resultados que podemos volcar en celdas, controles de formulario o usarlos para otros cálculos. Las funciones de Excel ya son lo suficientemente poderosas como para perdernos toda su potencias en nuestros desarrollos.
En el siguiente código VBA usando la función SUM o SUMA para realizar una suma de un rango, y el resultado lo enviaremos a la celda C1.
Range("C1").Value = Application.WorksheetFunction.Sum(Range("B8:B22"))
Range.FormulaLocal
Con esta propiedad podremos insertar fórmulas directamente en celdas escribiendo dichas fórmulas en nuestro idioma local. Usamos la propiedad FormulaLocal y entre comillas solo ingresamos la fórmula tal cual la ingresaríamos en una celda.
Range("C2").FormulaLocal = "=BUSCARV(A8,Hoja2!$A$1:$B$16,2,0)"
Range.Formula
La ventaja de usar la propiedad Formula es que podremos pasar nuestros archivos con macros a cualquier PC sin importar el idioma que tengan instalado. Una desventaja podría ser que tenemos que escribir el nombre de la función en su equivalente en Inglés, pero por el beneficio que obtenemos, vale la pena.
Range("C3").Formula = "=VLOOKUP(A8,Hoja2!$A$1:$B$16,2,0)"
Código VBA de las macros
Esta macro usa la propiedad WorksheetFunction y la función Suma, además de insertar una fórmula en una celda.
Sub Prueba() Range("C1").Value = Application.WorksheetFunction.Sum(Range("B8:B22")) Range("C2").FormulaLocal = "=SUMA(B8:B22)" End Sub
Esta macro inserta el resultado de las funciones SUMA, PROMEDIO y MAX en 3 celdas.
Sub FuncionesWSF() Dim Rango As Range Dim UltimaFila As Integer Set Rango = Sheets("Hoja1").Range("A7").CurrentRegion UltimaFila = Rango.Rows.Count + 6 With Sheets("Hoja1") .Range("B5").Value = WorksheetFunction.Sum(Range("B8", Cells(UltimaFila, 2))) .Range("C5").Value = WorksheetFunction.Average(Range("C8", Cells(UltimaFila, 3))) .Range("D5").Value = WorksheetFunction.Max(Range("D8", Cells(UltimaFila, 4))) End With End Sub
Esta última macro insertar dos fórmulas con la función BUSCARV. Usando tanto FormulaLocal como Formula.
Sub FormulasDesdeVBA() Dim Rango As Range Dim UltimaFila As Integer Set Rango = Sheets("Hoja1").Range("A7").CurrentRegion UltimaFila = Rango.Rows.Count + 6 With Sheets("Hoja1") .Range("E8", Cells(UltimaFila, 5)).FormulaLocal = "=BUSCARV(A8,Hoja2!$A$1:$B$16,2,0)" .Range("F8", Cells(UltimaFila, 6)).Formula = "=VLOOKUP(A8,Hoja2!$A$1:$B$16,2,0)" End With End Sub
Descarga el archivo de ejemplo
043 – Usar Formulas y funciones desde macros.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.