texto tamaño longitud length lenb largo campo excel search excel-formula

tamaño - Excel, MID, error de búsqueda



lenb vba (4)

Tengo dos cadenas, quiero extraer el número en el medio "2200" estoy usando la fórmula

=VALUE(MID(C3,SEARCH("_",C3)+11,4))

C3 es donde está la cadena. Esta fórmula trabaja en "string 2" y me da el valor que estoy buscando "2200" pero no funciona para "String 1" ¡obtengo #VALUE !. si cambio la fórmula

=VALUE(MID(C3,SEARCH("_",C3)+10,4))

funciona para "Cadena 1" pero no funciona para "Cadena 2" ¿Cómo puedo hacer que la misma fórmula funcione en ambas situaciones?

Cadena 1: ABC_1A1B_33C_2200_4AB_ABC4_4800

Cadena 2: ABC_10A1B_33C_2200_4AB_ABC4_4800

Gracias,


Esto debería funcionar siempre y cuando el ejemplo 2200 tenga siempre 4 dígitos de longitud:

=LEFT(REPLACE(D7,1,FIND("@",SUBSTITUTE(D7,"_","@",3)),""),4)


A esto no le importa la longitud, solo que es el cuarto bloque:

=TRIM(MID(SUBSTITUTE(A1,"_",REPT(" ", 999)),3*999,999))

Nota

Lo anterior devuelve una cadena de texto que se parece a un número. Si un número es lo que se quiere, entonces reemplace el TRIM con --

=--MID(SUBSTITUTE(A1,"_",REPT(" ", 999)),3*999,999)


Esta solución se basa en la posición estática del número que se encuentra entre el tercer y cuarto carácter de subrayado.

=--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A2, "_", REPT(" ", LEN(A2)), 4), "_", REPT(" ", LEN(A2)), 3), LEN(A2), LEN(A2)))

Tenga en cuenta el doble-unario (también conocido como double-minus o -- ) que convierte texto-que-parece-como-un-número a un número verdadero.


Si el valor que desea extraer está siempre en la cuarta posición, puede intentar:

=INDEX(TRIM(MID(SUBSTITUTE(C3,"_",REPT(" ",99)),seq_99,99)),4,1)

donde seq_99 es una Fórmula nombrada que se refiere a:

=IF(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))=1,1,(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))-1)*99)

seq_99 devolverá una matriz: {1,99,198,297,...,25146}