Excel - No respeta rango concatenar

 
Vista:
sin imagen de perfil

No respeta rango concatenar

Publicado por Fernando (3 intervenciones) el 17/12/2021 00:04:04
hola amigos... espero alguien pueda ayudarme....

no logro entender por que la macro no respeta en la etapa2 el rango de inicio establecido por Pos3 y empieza a concatenar siempre desde la celda h2

desde ya agradezco la ayuda



Sub ConcatColumns()



Range("h2").Select

pos1 = ActiveCell.Offset(0, -2).Address

ActiveCell.Offset(ActiveCell.Value - 1, 0).Select

pos2 = ActiveCell.Offset(0, -2).Address

For Each celda In Range(pos1, pos2)

If celda.Value <> "" Then


Resultado = Resultado & "/" & celda.Value


End If

Next celda



'Se remueve el ; y espacio inicial
Resultado = Right(Resultado, Len(Resultado) - 1)

ActiveCell = Resultado

ActiveCell.Offset(1, 0).Select


' ********ETAPA 2************


Do While ActiveCell <> Empty



pos3 = ActiveCell.Offset(0, -2).Address

ActiveCell.Offset(ActiveCell.Value - 1, 0).Select

pos4 = ActiveCell.Offset(0, -2).Address


For Each celda In Range(pos3, pos4)


If celda.Value <> "" Then

Resultado = Resultado & "/" & celda.Value


End If

Next celda


ActiveCell = Resultado

ActiveCell.Offset(1, 0).Select
Loop




End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

No respeta rango concatenar

Publicado por Antoni Masana (2481 intervenciones) el 17/12/2021 17:19:34
La macro hace exactamente lo que le has dicho que haga, que empiece a concatenar desde la fila 2.
He visto la macro y lo hace todo correctamente.
Creo que se cual es el fallo, el problema es que no se que es lo que tu quieres que haga la macro y donde yo pienso que esta el fallo puede no serlo.
No puedo saber qué es lo que quieres hacer si no me lo explicas.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

No respeta rango concatenar

Publicado por Fernando (3 intervenciones) el 17/12/2021 18:10:25
Hola Antoni, muchas gracias por atender mi consulta...

si puedes observar , en la etapa 2 de la macro en linea: pos3 = ActiveCell.Offset(0, -2).Address la instrucción es darle a Po3 el valor de la celda en la que se encuentra la celda con lugar de inicio con los datos a concatenar, para así de esta forma el rango a recorrer por: For Each celda In Range(pos3, pos4) sea entre las celdas establecidas entre Pos3 y pos4...

en cierto modo lo que necesito es tomar de determinadas celdas activas una referencia de rangos a recorrer para concatenar.

lo que mas me resulta extraño es, que si toma como valido el valor de pos4 a medida que avanza en el bucle, pero no respeta el valor de pos3. y este toma siempre el inicio desde H2

me disculpo si no me se expresar con los términos correctos, agradezco la paciencia!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

No respeta rango concatenar

Publicado por Antoni Masana (2481 intervenciones) el 17/12/2021 18:18:59
Es lo que me imaginaba.

¿Has probado a limpiar la variable antes de entrar en el FOR?

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

No respeta rango concatenar

Publicado por Fernando (3 intervenciones) el 17/12/2021 20:24:28
Antoni, esto es lo que en realidad necesitaba... mi problema estaba en la memoria del resultado y no como yo creía en los rangos

muchas Gracias por el apoyo...SLds

Sub ConcatColumns()

Application.ScreenUpdating = False
Range("H2").Select
Do While ActiveCell <> Empty
pos3 = ActiveCell.Offset(0, -2).Address
ActiveCell.Offset(ActiveCell.Value - 1, 0).Select
pos4 = ActiveCell.Offset(0, -2).Address
Resultado = ""
For Each celda In Range(pos3, pos4)
If celda.Value <> "" Then
Resultado = Resultado & "/" & celda.Value
End If
Next
ActiveCell = Mid(Resultado, 2)
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar