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}