Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Ideas para concatenar celdas con VBA o Macros

| 8 comentarios

Usualmente se concatena la data con pocas celdas.

Entonces que pasaría si deseo concatenar muchas mas celdas??

Para ello se creó la Función CONCATENARCELDAS HECHOS EN VBA:

Con esta función se logrará concatenar a grandes rangos de data de manera mas rápida. A continuación se muestra el código para concatenar en VBA:

Function ConcatenarCeldas(rango As Range)

For Each celda In rango.Cells

If celda.Value <> "" Then

resultado = resultado & "; " & celda.Value

End If

Next

resultado = Right(resultado, Len(resultado) - 2)

ConcatenarCeldas = resultado

End Function

 

 

tarea4.2

(Para mayor visualización de la imagen, hacer click en la misma)

EL SIGUIENTE EJEMPLO ESTA AL FINAL DE LA HOJA CON LINK DE DESCARGA DEL EXCEL tarea4.1

__________________________________

Concatenar celdas con VBA o Macros

8 comentarios

  1. Hola buenas tardes, he realizado esta Practica, pero a la hora de querer llamar la Funcion en EXCEL no la manda llamar, sigue apareciendo solo la funcion CONCATENAR nativa de Excel, en un principio si me aparecían ambas, pero ahora no la manda llamar, que puede ser lo que no permita llamar la funcion??, de favor.
    Por anticipado muchas gracias por su gran ayuda.

    • Buenas tardes, verifique si guardo el código en un modulo y que el libro donde este el modulo este abierto a la hora de emplear la funcion

    • Buenas tardes, verifique si guardo el código en un modulo y que el libro donde este el modulo este abierto a la hora de emplear la funcion

      Igualmente el código correcto de la función es como aparece en la imagen:

      Lo transcribo:

      Function ConcatenarCeldas(rango As Range)
      For Each celda In rango.Cells
      If celda.Value <> "" Then
      resultado = resultado & "; " & celda.Value
      End If
      Next
      resultado = Right(resultado, Len(resultado) - 2)
      ConcatenarCeldas = resultado
      End Function

      ** Por ultimo al buscar en funciones debera aparecer al lado de la nativa Concatenar aparece ConcatenarCeldas, que es la que corresponde al código, brillantemente planteado por Fernando Santos

      • Function ConcatenarCeldas(rango As Range)
        For Each celda In rango.Cells
        If celda.Value <> "" Then
        resultado = resultado & "; " & celda.Value
        End If
        Next
        resultado = Right(resultado, Len(resultado) - 2)
        ConcatenarCeldas = resultado
        End Function

  2. Buena tarde, como seria el código si quisiera concatenar unas celdas pero antes de la ultima celda me anteponga la "y". me explico , con el código quedaría, alex; maría; juan; pilar; alberto; ale, que instrucción tendría que aumentar para que me quedara alex, maría, juan, pilar, alberto y ale.

  3. Hola, esto te podría servir

    Function ConcatenarCeldas(rango As Range)
    cantidad = rango.Count
    contador = 0
    For Each celda In rango.Cells
    contador = contador + 1
    If contador = cantidad Then
    resultado = resultado & " y " & celda.Value
    Else
    resultado = resultado & ", " & celda.Value
    End If
    Next
    resultado = Right(resultado, Len(resultado) - 2)
    ConcatenarCeldas = resultado
    End Function

  4. Hola, me interesa la parte de celdas con codigo. Realmente estoy tratando de concatenar rangos discontinuos pero a partir de la varibale que los define.

    es decir supongamos que el rango M8:M15 lo defino con el nombre venta

    Mi pregunta es como puedo indicar en VBA que concatene varios rangos pero llamados por el nombre que los define

    ej. tengo la tabla sgt y en una columna quiero poner la concatenacion de sexo y peso, celda a celda

    sexo condicion peso lote concatenacion

    femenino muerta 25 5 femenino 5
    macho bueno 45 6 macho 6

    lo que quisera es poner lo sgt For Each Celda In Range("sexo, lote")

    pero no me funciona no se como llamar a los rangos definidos por nombres y que los concatene

    Alguna sugerencia, por favor?

  5. Hola Fernando, estoy tratando de concatenar rangos discontinuos pero a partir de la varibale que los define.

    es decir supongamos que el rango M8:M15 lo defino con el nombre venta

    Mi pregunta es cómo puedo indicar en VBA que concatene varios rangos pero llamados por el nombre que los define

    ej.

    tengo la tabla sgt y en una columna quiero poner la concatenacion de sexo y peso, fila a fila, celda a celda

    sexo: incluye el rango de femenino y macho y asi cada encabezado de la columna es el nombre definido para el rango correspondiente.

    sexo condicion peso lote concatenacion

    femenino muerta 25 5 femenino 5

    macho bueno 45 6 macho 6

    lo que quisera es una funcion o codigo donde con solo declarar los nombres
    concatene fila a fila las celdas de los namerango seleccionados
    ej. For Each Celda In Range("sexo, lote") - claro esto no funciona

    pero no logro hacerlo, no se como llamar a los rangos definidos por nombres y que los concatene

    Alguna sugerencia, por favor?

Deja una respuesta

Los campos requeridos estan marcados con *.