Concatenar datos por filas

Quiero una macro q me concatene filas

fila = celdas: a2,b2,c2...m2

Quiero q me concatene la fila con separación de "|" y si al momento de concatenar la fila encuentra una celda vacía q lo concatene como "0" y el resultado lo ponga en la celda p2 y luego pase a la siguiente fila = a3, b3, c3... M3 y concatene y el resultado en p3 y asi sucesivamente concatenar todas las filas asta encontrar celda vacía en la columna A y allí termina la macro, la cantidad de filas es variable pero siempre en la columna a1 asta aX (X valor cualquiera) siempre hay datos, no quiero usar formulas x q antes de concatenar elimino varias filas no deseadas. Doy gracias x su tiempo y paciencia. Bendiciones a su web y a los expertos.

1 respuesta

Respuesta
2

Te mando mi solución con esta macro:

Sub ejemplo()
'por luismondelo
Range("a2").Select
Do While ActiveCell.Value <> ""
fila = ActiveCell.Row
For Each celda In Range(ActiveCell, ActiveCell.Offset(0, 12))
If celda.Value = "" Then celda.Value = 0
lista = lista & "|" & celda.Value
Next
Cells(fila, 16).Value = lista
ActiveCell.Offset(1, 0).Select
lista = ""
Loop
End Sub

recuerda finalizar

Excelente solución a lo solicitado estimado Experto, pero hay un detalle q se me paso por alto las disculpas del caso, Aver si se puede solucionar o en tal sentido abriré otro tema quedando muy satisfecho. Explico: En mis datos en la Columna H tengo datos de N° de serie como 1,15,2,101,etc y al pasar por dicha Columna H quisiera que me concatene con formato "0000" de 4 dígitos osea 0001,0015,0002,0101,etc, lo mismo sucede con la Columna K q tengo datos con números entero y decimales 525.1 - 310.02 - 308.4 - 0.5 etc lo que deseo es que me concatene con formato "#0.00" osea 525.10 -310.02 - 308.40 - 0.50 etc le puse formatos a mis datos de la Columna H y K pero no solucione mi problema sigue concatenando sin formatos. Agradecere y respetare su solución, muchas gracias de antemano.

Saludos

Richar Chavez

Te paso la nueva macro:

Sub ejemplo()
'por luismondelo
Range("a2").Select
Do While ActiveCell.Value <> ""
fila = ActiveCell.Row
For Each celda In Range(ActiveCell, ActiveCell.Offset(0, 12))
If celda.Value = "" Then celda.Value = 0
If celda.Column = 8 Then
celda.NumberFormat = "@"
largo = Len(celda)
ceros = 4 - largo
celda.Value = String(ceros, "0") & celda.Value
End If
If celda.Column = 11 Then
celda.NumberFormat = "@"
celda.Value = Application.WorksheetFunction.Text(celda.Value, "#,##0.00")
celda.Value = Replace(celda.Value, ".", ",")
End If
lista = lista & "|" & celda.Value
Next
Cells(fila, 16).Value = lista
ActiveCell.Offset(1, 0).Select
lista = ""
Loop
End Sub

recuerda finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas