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

Excel extrae la subcadena de una cadena

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.

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
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
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]),)