Buenas tardes, necesito concatenar varia filas hasta encontrar la siguiente clave, ayuda por favor

planteamiento del problema:

clave concepto unidad cantidad pu importe

prel01 trazo y nivelación de terreno m2 100 4.25 425.00

estableciendo crucetas

incluye; materiales mano de

obra y equipo

perl02 afine de terreno con herramienta m2 100 12.75 1,275.00

manual, incluye; materiales y

mano de obra

la fila concepto debe quedar en una sola linea concatenada, la macro debe de ser capaz de

reconocer un cambio de clave, se puede hacer algo asi en el excel?

muchas gracias por su atención.

1 Respuesta

Respuesta
1

Si se puede, solo aclarame si la clave está en col A y no hay datos en ninguna otra celda de las otras filas, solo el concepto... porque luego esas filas se eliminarán.

la columna a tiene la clave

en la columna b en varias filas esta el concepto

en la columna c unidad, en la columna d pu y en la columna e importe.

la idea es que b se concierta en una sola fila y quede a,b,c,d,e

la macro o programa tendría que detectar que al haber cambio de clave o espacio en blanco termina el concepto y empieza otro buscando la siguiente clave.

no se como subir un ejemplo en excel, ojala haya quedado claro

le agradezco mucho su tiempo y ayuda.

gracias

Está clara tu consulta, aunque no respondiste a lo que te solicitaba (*), pero no importa, ya veremos cuando te envíe la rutina para esto. Será recién mañana.

(*) Si algún otro campo utiliza + de 1 fila ... xq solo concatenaré la col B y se eliminarán las filas sobrantes

Sdos

Elsa

perdón, pero es correcta su apreciación solo utiliza mas de una fila la columna (b) concepto que seria la que quiero concatenar, en la columna a esta la clave y solo esta una vez en cada concepto, y si se devén de eliminar las filas que no tenga clave,

gracias estaré atento a cualquier duda.

muchas gracias por tomarse el tiempo de revisar y ayudarme con esta situación, actualmente lo hameos manual, pero hablamos de presupuestos muy extensos, con esa rutina sera mucho mas rapido.

gracias

Entrá al Editor de macros, insertá un módulo y allí copiá esto:

Sub CONCATENANDO()
'x Elsamatilde
Dim cadena As String
'obtengo la última fila con datos de col B
finfil = Range("B65536").End(xlUp).Row
'selecciono la primer fila de datos
Range("A2").Select
'guardo el primer contenido de col B y la primer fila
cadena = ActiveCell.Offset(0, 1)
filx = 2
ActiveCell.Offset(1, 0).Select
'recorro un bucle desde A3 hasta encontrar una celda vacía en col B
While ActiveCell.Offset(0, 1).Value <> ""
'si la celda no tiene dato es la misma clave y agrego a la cadena
If ActiveCell = "" Then
cadena = cadena & " " & ActiveCell.Offset(0, 1)
Else
'guardo la cadena en la fila correspondiente
Cells(filx, 2) = cadena
'elimino las filas sgtes si las hay
If filx < ActiveCell.Row - 1 Then
Range("B" & filx + 1 & ":B" & ActiveCell.Row - 1).EntireRow.Delete
End If
'se vuelve al código que sigue
Range("A" & filx + 1).Select
'guardo los datos del nuevo código
cadena = ActiveCell.Offset(0, 1)
filx = ActiveCell.Row
End If
'paso a la fila siguiente para repitir el bucle
ActiveCell.Offset(1, 0).Select
Wend
'si quedó algo en la cadena se coloca en col B
If cadena <> "" Then
Cells(filx, 2) = cadena
If filx < ActiveCell.Row - 1 Then Range("B" & filx + 1 & ":B" & ActiveCell.Row - 1).EntireRow.Delete
End If
End Sub

Desde el menú Macros (¿y la versión Excel? ) Podés ejecutarla.

IMPORTANTE: como aquí se eliminan filas es recomendable realizar una copia del libro antes de ejecutarlo.

Sdos y no dejes la consulta sin finalizar si el tema queda resuelto,

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas