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

En ocasiones debemos realizar algún cálculo combinando varias funciones en una gran fórmula, 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 fácil y la reemplaza por la palabra complicada, este ejemplo es solo para hacer una demostración. Esta fórmula sería 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 continuación 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 así: WorksheetFunction.Replace

Notas:

  1. No importa si tu Excel está 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 cálculo.
  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 función personalizada, te recomiendo leer este artículo.
  5. ¿VBA?, si no estás familiarizado con VBA, puedes leer este articulo.

Deja un comentario