Cortar cadena de caracteres

Hol a todos, tengo una base de datos de 10000 registros compuesta por 5 campos, donde el ultimo campo es una secuencia de ADN compuesta por cadenas de caracteres sin espacios que puede ir desde los 500 a 2000 caracteres. Excel esta celda me la toma como una sola "palabra".
Como puedo hacer un macro para cortar esta cadena por ejemplo cada 100 caracteres e insertar un "enter" y me distribuya hacia abajo estas cadenas dentro de la celda por ejemplo:
En la columna f tengo:
Aaactttgaaaaaacccccctttttttttsasasaggggggaaaa...
Y quisiera tener algo así en cada celda de la columna F:
Aaactttg
Aaaaaaa
CCCCCC
TTTTTTTT
Tttsaas
GGGGGG
Ggaaaa
...

1 respuesta

Respuesta
1
Prueba configurando el formato de la celda (click derecho) y activando la opción de AJUSTAR TEXTO, luego configura el ancho de la celda al que te quede más cómodo. Creo que eso te puede ayudar.
Hola Experto! Por contestar mira no puede resolverlo de esta forma que me comentas, te comento que la base la convertí a formato msql con ayuda de un programa. Luego la pude publicar en una intranet que administro.
Programe un "search" con php y puedo ver todos los campos pero este ultimo me queda horizontal como si fuese una sola palabra de hasta 2000 caracteres y se pone medio engorroso para los usuarios que consultan la base...
Por esto es que pensaba en "cortar" la secuencia con espacios en blanco desde el archivo "nativo" que a mi me llega en foramato excel...
Muchas gracias
sdos
Te dejo el código que te corta el contenido de la celda al largo que tu le indiques, la he probado con números, signos y textos y me anda de 100. Quedo pendiente de tu éxito. Saludos
******************************************************************
Sub AjustedeLinea()
''Creada por FSerrano ([email protected]) en 110629 para Saino en TodoExpertos.com
''Inserta un enter cada n caracteres en el contenido de una cadena de texto
'Captura la ubicación inicial para volver a ella al finalizar el proceso
comienzo = ActiveCell.Address
'solicita el largo de cada linea del texto
largo = InputBox("Ingrese el largo deseado", "EXTENSION") * 1
If Application.WorksheetFunction.IsNumber(largo) = False Then
Exit Sub
End If
'solicita la aplicación a todos los datos de la columna
eleccion = MsgBox("Aplicar a todos los datos de la columna actual?", vbYesNoCancel)
'Establece el limite de aplicación del ciclo
If eleccion = vbYes Then
Cells(ActiveSheet.Rows.Count, ActiveCell.Column).Activate
ultimacelda = Selection.End(xlUp).Row
Range(comienzo).Activate
ElseIf eleccion = vbNo Then
ultimacelda = ActiveCell.Row
Else
Exit Sub
End If
'Aplicación del proceso
While ActiveCell.Row <= ultimacelda
For i = 1 To Int(Len(ActiveCell.Value) / largo) * 1
previo = Mid(ActiveCell, (i - 1) * largo + 1, largo)
valor = valor & Chr(10) & previo
Next
RESTO = Mid(ActiveCell, (i - 1) * largo + 1, Len(ActiveCell) - (i - 1) * largo + 1)
valor = valor & Chr(10) & RESTO
If Right(valor, 1) = Chr(10) Then
valor = Mid(valor, 1, Len(valor) - 1)
End If
ActiveCell = Application.WorksheetFunction.Substitute(valor, Chr(10), "", 1)
valor = ""
ActiveCell.Offset(1, 0). Activate
Wend
Range(comienzo). Activate
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas