2011-11-17 13:40:49 +0000 2011-11-17 13:40:49 +0000
22
22
Advertisement

Excel extrae la subcadena de una cadena

Advertisement

Estoy buscando una forma de extraer una subcadena de longitud variable de una cadena.

Mis celdas serán algo así

ABC - DEF
ABCDE - DEF
ABCD - ABC

Quiero dividir la cadena en el carácter -, por lo que las celdas se convertirán en:

ABC
ABCDE
ABCD

Esto debería hacerse con una fórmula y no con VBScript.

Estoy usando Excel 2010

EDIT

He encontrado que el conjunto de datos no siempre contiene el carácter -, lo que significa que no debería haber ningún cambio.

Advertisement

Respuestas (5)

26
26
26
2011-11-17 13:51:09 +0000

Este problema se puede dividir en dos pasos:

  1. Encuentre el índice en la cadena de su carácter de división deseado (en este caso, "-" o " - ").
  2. Obtenga la subcadena del prefijo desde el principio del texto original hasta el índice de división.

Los comandos FIND y SEARCH devolverían cada uno el índice de un needle dado en un haystack (FIND distingue entre mayúsculas y minúsculas, SEARCH no distingue entre mayúsculas y minúsculas y permite comodines). Teniendo en cuenta esto, tenemos:

FIND(search_text, source_cell, start_index)

o en este caso

FIND(" - ", A1, 1)

Una vez que tenemos el índice, necesitamos el prefijo de source_cell para hacer la “división”. MID hace precisamente eso:

MID(source_cell, start_index, num_characters)

Juntando ambos, tenemos:

=MID(A1,1,FIND(" - ",A1,1))

con A1 teniendo el texto de ABC - DEF da ABC.

7
7
7
2011-11-17 15:22:44 +0000

Ampliando la respuesta de Andrew basada en tu edición: para encontrar la cadena de caracteres a dividir, estamos usando la función FIND. Si la función FIND no localiza la cadena dada, devuelve un error #VALUE?. Así que tendremos que comprobar este valor y utilizar un valor sustituto en su lugar.

Para comprobar cualquier valor de error, incluido el #VALUE, utilizamos la función ISERROR, así:

=ISERROR(FIND(" - ", A1, 1))

que será verdadera si la función FIND no puede encontrar la cadena “ - ” en la celda A1. Así que usamos eso para decidir qué valor usar:

=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))

Eso dice que si el comando find devuelve un error, usa la celda A1 sin modificar. De lo contrario, haz la función MID que Andrew ya proporcionó.

2
Advertisement
2
2
2014-08-11 08:59:14 +0000

Gracias @AndrewColeson por su respuesta.

Así que sólo para agregar a eso, si usted quiere todo a la derecha de la -, utilice este código:

=MID(A1,LEN(B1)+3,LEN(A1))

Que es:

A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
    B1 = ABC
Therefore A1 = DEF

Este código es genial para si tienes un número indefinido de caracteres después del -.

Por ejemplo:

Si tienes:

ABC - DEFG
AB - CDEFGH
...
1
1
1
2014-08-19 22:50:39 +0000

He aquí una forma muy sencilla de extraer el 5º carácter por la izquierda de una cadena de texto en Excel:

Supongamos que la cadena de caracteres ABCDEFGHIJ está almacenada en la celda A1 de una hoja de cálculo de Excel, entonces la siguiente fórmula

=RIGHT(LEFT(A1,5),1)

produce el 5º carácter por la izquierda de la cadena, es decir, E.

0
Advertisement
0
0
2017-05-02 10:15:45 +0000

La siguiente fórmula eliminará una subcadena de [TEXTCOLUMN_1]

por ejemplo: si quiere convertir -./thumb/hello.jpg en thumb/hello.jpg utilice la siguiente fórmula

=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)

[TEXTCOLUMN_1] = el nombre de la columna que quiere cambiar[NUM_OF_CHARACTERS] = número de caracteres del lado izquierdo que quiere eliminar

Si quiere eliminar del lado derecho utilice lo siguiente

=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
Advertisement