martes, 7 de julio de 2015

Función en vba para concatenar múltiples celdas en excel

Existen muchas maneras de concatenar las celdas de una hoja en excel, lo común es hacerlo con la función concatenar o con el símbolo "&". Pero cuando deseamos concatenar varias celdas nos resulta muy trabajoso realizarlo de manera individual así que a veces nuestra paciencia se acaba.

La otra de forma de  realizarlo es crear una función UDF en excel vba que nos permita concatenar las celdas que nosotros necesitemos en un solo paso.  Entonces pasaremos a crear la sintaxis de nuestra función a crear.


Una vez que tengamos abierto nuestro libro de excel realizaremos lo siguiente:

- Presionamos ALT + F11 para ingresar a VBA
- Clic en el menú insertar / Agregar modulo

Luego en el modulo pegamos el siguiente código

Function UnirCeldas(Rango As Range, Sep As String)
For Each celda In Rango
    concat = concat & celda & Sep
Next
UnirCeldas = Left(concat, Len(concat) - 1)
End Function


Esta función nos sirve para poder concatenar todas las celdas tanto verticales como horizontales que nosotros necesitemos.

Entonces vamos a explicar la sintaxis de nuestra función para luego aplicarla en una hoja de excel

=UnirCeldas(Rango,Sep)

Rango: Rango de celdas a concatenar
Sep: Separador de cada celda al momento de concatenar

Ponemos un ejemplo para su mayor comprensión


Luego tienen que guardarlo como libro de excel habilitado para macros 

4 comentarios:

  1. la funcion esta mal, si copias y pegas de un post en ingles por favor, comprueba que has puesto bien el nombre de la formula en todo el codigo!!! y funciona con ; no con coma!!!

    Function UnirCeldas(Rango As Range, Sep As String)
    For Each celda In Rango
    UnirCeldas = UnirCeldas & celda & Sep
    Next
    UnirCeldas = Left(UnirCeldas, Len(UnirCeldas) - 1)
    End Function

    ResponderEliminar
  2. El post lo he creado yo, no lo he copiado de ningun blog en ingles.
    Quisiera saber cual es tu duda? Algo no te funciona?

    ResponderEliminar
  3. Hola! estoy utilizando esta función y me va perfectamente pero quería saber si es posible hacer que sólo concatene valores únicos. Es decir, en el rango tengo valores que se repiten varias veces y quisiera que sólo me lo concatenase una vez. Creo que sería un condicional pero soy bastante mala con esto y no veo cómo hacerlo.

    Mil gracias!

    ResponderEliminar
  4. Hola amigo quiero concatenar dos celdas en especifico y luego copiarla al portapapeles, sabes como puedo hacerlo con vba.
    gracias

    ResponderEliminar

Cargar multiples archivos txt en SSIS

 Fuentes Archivos planos Descargar AQUÍ los archivos Consulta SQL de creacion de tabla Despacho en SQL Server CREATE TABLE [dbo].[Despacho]...