Macro en excel para ordenar números y reemplazarlos en un listado de texto

Solicito por favor de su ayuda para generar una macro que me ayude a ordenar un listado de números en forma horizontal y separados por coma, los cuales a su vez deben ser reemplazados uno a la vez en un listado de texto

Anexo a través del siguiente link un ejemplo en Excel. https://we.tl/t-pygax1QonG

1 Respuesta

Respuesta
1

Explica con más detalle el paso 2 esta un confuso lo que quieres en ese paso.

Ofrezco disculpas si no fui claro. Lo que requiero es que la macro tome los números de la columna K y los reemplace en los textos de la columna N indicados en la siguiente imagen con colores y separados por comas. A mi parecer los pasos para que funcione la macro son los siguientes:

1. se generan los números de la columna K (hasta 30 números) los cuales se generan manualmente obtenidos a través de coordenadas de autocad.

2. Se da inicio a la macro y toma los números de la columna K y los reemplaza en la línea de texto de la celda N4 separados con comas y  los cuales se marcan de color rojo en la siguiente imagen y se detiene la macro.

3. se repite el paso 1 manualmente.

4. Nuevamente se da inicio a la macro y reemplaza los números de columna K como en el paso 2 pero se reemplazan en la celda N5 (color cyan) y se detiene la macro.

5. se repite el paso 1 manualmente.

6. Nuevamente se da inicio a la macro y reemplaza los números de columna K como en el paso2 pero se reemplazan en la celda N6 (color verde) y se detiene la macro.

Y así sucesivamente hasta terminar de reemplazar todas las líneas de textos que aparecen en la columna N y se detiene la macro de tal forma que reinicia el proceso con una nueva lista de textos que se cambia manualmente.

Anexo nuevamente el archivo de excel en el siguiente enlace con el ejemplo simplificado:

https://we.tl/t-vp6A8Kl0St

Para lo que quieres se requiere hacer una modificación completa a tu información, en la imagen que ves es el resultado de la macro que al final hace el reemplazo como quieres aunque para ello la amcro hace lo siguiente primero lee las coordenadas y crea las dos tablas la (X, Y) y la de cuadros amarillos, de hay crea un contador en la celda G1, el cual cada que ejecutes la macro se posicionara en el siguiente registro a modificar, y hará el reemplazo, con funciones hallar, extraer, un concatenado, la tabla de color amarillo la pondrá primero en fórmula y luego la pasara a valor esto porque de dejarla así pone el concatenado así, 0.01000000, 0.0500000, etc, en resumen lo único que vas a hacer es teclear las coordenadas de autocad y una vez que terminas la macro hará el resto

y esta es la macro

Sub armar_datos()
Set datos = Range("c4").CurrentRegion.Columns(2)
With datos
    filas = .Rows.Count
    Set tabla = .Columns(6).Resize(filas, 2)
    celda = datos.Cells(1, 1).Address(0, 0)
End With
With tabla
    .Columns(1).Formula = "=MID(" & celda & ",23,10)"
    .Columns(2).Formula = "=MID(" & celda & ",37,10)"
    Set tabla2 = .Cells(2, 4).Resize(filas - 1, 1)
    Set tabla3 = .Columns(7).CurrentRegion
End With
With tabla2
    celda1 = datos.Cells(2, 1).Address(0, 0)
    celda2 = tabla.Cells(1, 1).Address(0, 0)
    celda3 = tabla.Cells(2, 1).Address(0, 0)
    celda4 = tabla.Cells(1, 2).Address(0, 0)
    celda5 = tabla.Cells(2, 2).Address(0, 0)
    .Formula = "=round(if(" & celda1 & "=" & """""" & "," & """""" & _
    ",sqrt((" & celda2 & "-" & celda3 & ")^2+(" & celda4 & "-" & celda5 & ")^2)),2)"
    .Value = .Value
End With
 Range("g1") = Range("g1") + 1
 With tabla3
    If Range("g1") <= .Rows.Count - 1 Then
        Set fila = .Rows(Range("g1") + 1)
        hallar = WorksheetFunction.Search(",", fila, 1)
        texto = Left(fila, hallar)
        matriz = Application.Transpose(tabla2)
        cadena = Join(Application.Index(matriz, 1, 0), ",")
        fila.Value = texto & cadena
    Else
        MsgBox ("Alcanzaste el fin del registro "), vbInformation, "AVISO"
    End If
 End With
 Erase matriz
 Set datos = Nothing: Set tabla = Nothing: Set tabla2 = Nothing
 Set tabla3 = Nothing
End Sub

Cordial saludo, era precisamente lo que necesitaba te agradezco mucho por tu valiosa colaboración. Como puede ver el proceso de introducir los datos de las coordenadas desde autocad es muy manual. Me gustaría contactarme con usted para revisar la posibilidad de realizar esto mismo en una rutina lisp para autocad tomando directamente las coordenadas  y la cotización para desarrollarla. Gracias.

No tengo autocad para realizar la programación del archivo .lisp, una alternativa seria grabar las coordenadas como archivo TXT y de ahí se puede hacer modificar la macro para que abra el archivo y ejecute las líneas que te pase, solo que, lo que pides ya es una pregunta independiente de esta que ya fue solucionada.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas