Recorrer cadena de caracteres

Espero que puedas solucionarme una duda que me esta volviendo loco.
Tengo una lista en una hoja de calculo en la cual uno de los campos consta de registros que son cadenas de caracteres alfanuméricas en formato texto. Necesito recorrer la cadena de cada registro hasta encontrar un dígito en concreto para poder asignarle un código en otra celda diferente. Por ejemplo, si en una celda tengo la cadena FH12HUK34*4TR necesito encontrar la letra T para asignarle un código.
Confío en que mi torpe explicación sea suficiente.

2 Respuestas

Respuesta
1
Es relativamente fácil, te recomiendo una macro como sigue, en la que supongo que tu columna que me dices es la "A", y lo que va a hacer cuando encuentre una "T" es adicionarla a un valor que al final te va a mostrar en AA1.
Si quieres que haga otra cosa, sólo dime:
Sub Texto()
CARACTER = "5"
Range("A1").Select
Selection.End(xlDown).Select
UBICACION = ""
While ActiveCell.Row > 1
CONTENIDO = ActiveCell.Value
CELDA = ""
NUMERO = 1
While Not CONTENIDO = ""
If Left(CONTENIDO, 1) = CARACTER Then
If UBICACION = "" Then
UBICACION = "Renglón " & ActiveCell.Row & ", caracter " & NUMERO
Else
UBICACION = "Renglón " & ActiveCell.Row & ", caracter " & NUMERO & "; " & UBICACION
End If
CELDA = CELDA & Left(CONTENIDO, 1)
CONTENIDO = Mid(CONTENIDO, 2, 100)
NUMERO = NUMERO + 1
Else
CELDA = CELDA & Left(CONTENIDO, 1)
CONTENIDO = Mid(CONTENIDO, 2, 100)
NUMERO = NUMERO + 1
End If
Wend
ActiveCell.Value = CELDA
ActiveCell.Offset(-1, 0).Select
Wend
Range("AA1").Value = UBICACION
End Sub
Respuesta
1
La verdad que no.
Creo que no he entendido bien tu duda.
Pero, podría ser que lo que estés buscando sea, precisamente, la función ENCONTRAR() o HALLAR() que funcionan exactamente igual:
Supongamos que tu cadena de caracteres está en la celda G71 y colocas en B21 el carácter a buscar. La siguiente fórmula te dirá en qué posiciónse encuentra la primera coincidencia del carácter en B21:
=ENCONTRAR(G71;$B$21)
[Considera si sueles usar comas o punto y coma para separar argumentos de las funciones. Yo usé ";"]
Si no lo encontrase, la fórmula devolverá #¡VALOR!. En tal caso, tal vez quieras "atrapar" el error con un condicional para que muestre, por ejemplo, un cero si no lo encuentra.
Tu fórmula sería entonces:
=SI(ESERROR(ENCONTRAR(G71;$B$21));0;ENCONTRAR(G71;$B$21))
Si continuo tratando adivinar tu objetivo y tienes varias líneas a controlar, puedes copiar la celda donde colocaste aquella fórmula y pegarla para el resto de las cadenas a monitorear. Así tendrás una columna auxiliar donde, si no encuentra el valor colocado en B21 tendrás ceros. Un filtro automático sobre tal columna te permitirá seleccionar los casos distinto de cero, por ejemplo.
La verdad que no fui capaz de entender eso de asignarle un código en otra celda diferente.
Remotamente, podría ser que quieras SUSTITUIR el carácter encontrado por otro.
Si fuese esto, MS Excel cuenta con otra función similar para resolverlo:
Sustituir()
Si el nuevo carácter estuviera en la celda C21, tu fórmula sería:
=SUSTITUIR(G71;$B$21;$C$21)
Si, en G71, encuentra el carácter colocado en B21 lo reemplzará por el que esté en C21. Si no lo encuentra, esta fórmula devolverá la cadena original.
Ojalá haya acertado a lo que necesitas. Si así fuera, agradeceré un comentario y que la finalices.
Pd: Disculpa la demora, pero actualmente estoy con mucho trabajo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas