VBA: Crear mega-formulas complejas pero fáciles de usar

En ocasiones debemos realizar algún calculo combinando varias funciones en una gran formula, que al final resulta algo difícil de entender, por ejemplo la formula:

=REEMPLAZAR(A2, ENCONTRAR(“facil”,A2,1), LARGO(“facil”),”complicada”)

Que busca en un texto la palabra facil y la reemplaza por la palabra complicada, este ejemplo es solo para hacer una demostración. Esta formula seria más fácil de usar de esta forma:

=ReemplazarTexto(A2,”facil”,”muy facil”)

Para llegar a este resultado puedes crear una función personalizada, haciendo uso de las funciones que ya vienen incorporadas en Excel. Para acceder a ellas debes utilizar el objeto WorksheetFunction de VBA como en el siguiente ejemplo:

Function ReemplazarTexto(Valor As String, Buscar As String, NuevoValor As String) As String

With WorksheetFunction
ReemplazarTexto = .Replace(Valor, .Find(Buscar, Valor, 1), Len(Buscar), NuevoValor)
End With

End Function

La sección With WorksheetFunction … End With se usa para indicar que todo lo que se escriba a continuacion de un punto (.) es parte del objeto WorksheetFunction, el cual es un objeto que contiene las funciones incorporadas en Excel, de otra forma tendríamos que llamarlas asi: WorksheetFunction.Replace

Notas:

  1. No importa si tu Excel esta en ingles o español, las funciones en el objeto WorksheetFunction, siempre estarán en ingles.
  2. Los parámetros de las funciones en este objeto son los mismos que usas en la hoja de calculo.
  3. No todas las funciones de Excel están disponibles en el objeto WorksheetFunction.
  4. Si tienes algún problema o duda sobre como crear una funcion personalizada te recomiendo leer este articulo.
  5. ¿VBA?, si no estas familiarizado con VBA, puedes leer este articulo.

 


Quizá te interesen estos otros articulos: