Concatenar hasta encontrar una celda vacía

Sucede que necesito una macro que concatene muchos datos pero no sólo eso, mis datos están agrupados de forma que al documento uno le corresponden otros;
n° doc contenido concatenado
5 espacio en blanco a,b,c,d,h

a

b

c
d
h
6 espacio en blanco h,a,g

h

a

g
8 espacio en blanco ...
...

Tengo 10,000 documentos y cada uno tiene diferente contenido, mi idea era que la macro comenzara a concatenar desde la primer celda que tuviese un valor hasta que encontrara una celda vacía y asi sucesivamente hasta terminar la lista. Si alguien me puede ayudar se lo agradecería muchísimo.

Respuesta
2

Con todo gusto, te ayudo con una macro.

Me puedes contestar lo siguiente:
1. Abro el documento 5, como tienes en tu ejemplo, concateno a, b, c, d, h
1.1 Dónde pongo los datos a,b,c,d,h?
1.2 Cuando llego al primer espacio, ¿me detengo y abro el siguiente libro?
1.¿3 Solamente leo la información de la primer columna o me sigo con todas las columnas?
2. ¿Son documentos en Excel?
3. ¿La macro debe ejecutar en automático la lectura de los 10,000 documentos o tú le vas a decir 1 por 1 cuál quieres procesar?
4. ¿Todos los documentos están en el mismo directorio?
5. Podrías poner un ejemplo o una imagen de cómo están los documentos y cómo quieres que queden, con datos reales, sería más fácil de entender.
La imagen la puedes poner en subeimagenes.com
Espero tus comentarios.
Saludos. Dam

Hola Dam, muchas gracias por su pronta respuesta, me gustaría más enviar el documento pero no sé como subirlo... envío la imagen, si mi explicación en la imagen es confusa, tengo un código de una macro que te suma en subtotales, esta macro hace algo similar a lo que quiero, sólo que en lugar de arrojarme las sumas quiero que concatene

Sumar parciales
Sub atcon()
Range("b65000").End(xlUp).Offset(1, 0).Value = "final"
Range("B2").Select
Do While ActiveCell.Value <> "final"
Suma = Suma + ActiveCell.Value
If ActiveCell.Value = "" Then
ActiveCell.Offset(0, 1).Value = Suma
Suma = 0
End If
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "final" Then
ActiveCell.Offset(0, 1).Value = Suma
Suma = 0
End If
Loop
ActiveCell.ClearContents
End Sub

Te regreso la macro para que concatene:

Sub atcon()
Range("b65000").End(xlUp).Offset(1, 0).Value = "final"
Range("B2").Select
Do While ActiveCell.Value <> "final"
If ActiveCell.Value = "" Then
ActiveCell.Offset(0, 1).Value = Suma
Suma = ""
End If
Suma = Suma & ActiveCell.Value & ","
ActiveCell.Offset(1, 0).Select
If ActiveCell.Value = "final" Then
ActiveCell.Offset(0, 1).Value = Suma
Suma = ""
End If
Loop
ActiveCell.ClearContents
End Sub

Si además quieres que agregue una coma, cambia esta instrucción:

Suma = Suma & ActiveCell.Value

Por esta

Suma = Suma & ActiveCell.Value & ","

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas