¿Cómo dividir una cadena basada en ":" en MS-Excel?

58

Mi columna de Excel está llena de palabras como esta:

1.) ABC:DCF
2.) DCF:FED

Quiero dividir cada palabra según ":" y poner el resultado en columnas adyacentes de modo que "ABC: DCF" en la celda "A: 1" se convierta en "ABC" en la celda "B: 1" y "DCF" en la celda " C: 1 "y también los valores correspondientes en cada columna. ¿Como hacer esto?

Andrea
fuente

Respuestas:

63

Vaya a la pestaña Datos y luego a la opción Texto a columnas. Más tarde, elija la opción "Delimitado" y luego seleccione "otro" y coloque el delimitador que desee.

BrOSs
fuente
80

El texto a columnas funcionará. Otra opción, si desea mantener el valor original, es utilizar fórmulas:
en B1

=left(a1,find(":",a1)-1) 

en C1

=mid(a1,find(":",a1)+1,len(a1))
Nutsch
fuente
2
El valor original se puede mantener incluso con la otra solución (puede especificar una columna diferente para almacenar los nuevos valores), pero esta solución me gusta más porque permite tener valores siempre actualizados (es decir, si modifica A1, B1 y C1 se actualizarán, mientras que la opción de texto a columna no).
psychowood
Esta es una solución brillante
jsg
26

Si puede usar VBA, puede hacer uso de la Split()función. Aquí hay una función definida por el usuario (UDF) que puede usar en una celda. Se divide en su elección de carácter y devuelve el n -ésimo elemento de la lista dividida.

Consulte ¿Cómo agrego VBA en MS Office? para obtener información sobre cómo definir un UDF.

Function STR_SPLIT(str, sep, n) As String
    Dim V() As String
    V = Split(str, sep)
    STR_SPLIT = V(n - 1)
End Function

Entonces deberías ingresar:

=STR_SPLIT(A1, ":", 1) // for the first half
=STR_SPLIT(A1, ":", 2) // for the second half
Jamie Bull
fuente
1
Muy bien, no sabía que era tan fácil crear sus propias fórmulas
capuchas
1
Esto es perfecto para dividir una URL en sus componentes.
Underverse
7

Péguelo en B1 y llénelo a columnas a la derecha y filas hacia abajo:

=TRIM(MID(SUBSTITUTE($A1,":",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

Editar: publiqué previamente una versión localizada de la fórmula, donde ',' fue reemplazado por ';'. Eso no funciona en la versión estadounidense de Excel:

=TRIM(MID(SUBSTITUTE($A1;":";REPT(" ";999));COLUMNS($A:A)*999-998;999))

Hardi Uutma
fuente
1
Bienvenido a Super User. ¿Podría agregar algunas oraciones a su respuesta para explicar qué hace esto y cómo funciona? Eso mejorará su valor educativo. Gracias.
Fixer1234
Si seguro. Hace lo mismo que hace Texto a Columnas desde la pestaña Datos, excepto que no lo hace con la fórmula. Puede reemplazar el ":" por un delimitador diferente o referirse a un delimitador de la otra celda.
Hardi Uutma
Excel dice que esta no es una fórmula válida cuando la pega en una celda. Por favor verifique y actualice.
thilina R
Hola thilina r Gracias por avisar Hice el ajuste para la versión estadounidense de Excel. Avíseme si tiene algún problema con eso ahora o si algo no está claro.
Hardi Uutma
Muy agradable. La única respuesta hasta ahora que le permite manejar tantos delimitadores como desee, sin crear su propia función.
CWilson