martes, 19 de enero de 2010

Ejemplo de la función ENCONTRAR.

Resolveré en esta ocasión, empleando diferentes funciones básicas, una duda de una lectora:
...Tengo una serie de datos que debo completar de la siguiente manera
DatoS /RESULTADO BUSCADO
300T-1 /T0001
300T-1A /T0001A
300T-33 /T0033
300T-33A/T0033A
300T33 /T0033
34T33 /T0033,
Basica la data puede contener guion o no, y puede contener letras al final que deben ser mantenidas,lo que debo garantiza es que el numero de caracteres numericos despues de la primera letra debe ser 4 ,por lo que debo completar con en el caso que lo necesite....
Es importante plantear correctamente el ejercicio, ya que necesitaremos ir empleando distintas funciones sencillas para llegar finalmente al resultado buscado.
Usaremos las funciones
=ENCONTRAR(texto buscado; en el texto; [comenzando en la posición])

  • Texto_buscado: es el texto que queremos encontrar.
  • en el texto: es el texto que a su vez contiene el texto que deseamos encontrar.
  • comenazando en la posición: especifica el carácter a partir del cual comenzará la búsqueda, es decir, el primer carácter del argumento 'en el texto' será el carácter número 1; si lo omitimos se supone que es 1.
Deberemos tener en cuenta que esta función si distingue entre mayúsculas y minúsculas, pero que no admite caracteres tipo comodín (* y ?); al contrario que la función HALLAR(texto buscado; en el texto; [comenzando en la posición]).
También emplearemos para resolver esta cuestión planteada la función ESERROR(valor), ya vista; y las funciones DERECHA(texto; caracteres), IZQUIERDA(texto; caracteres) y LARGO(texto).
Todas estas funciones que emplearemos están categorizadas dentro de Excel como funciones de texto.
Para nuestro ejemplo partimos del siguiente listado de códigos:

Ejemplo de la función ENCONTRAR.
el resultado buscado consiste en cambiar la segunda parte del código por la que aparece en la columna B.
El trabajo a realizar es algo largo, pero sin duda muy sencillo, ya que sólo vamos a emplear funciones de texto. Por razones didácticas lo explicaré paso a paso en columnas auxiliares, aunque todas ellas se podrían resumir en una única fórmula.

  1. Nuestro primer paso es localizar la letra 'T' dentro de cada código. Esto lo haremos con la función ENCONTRAR:
    =ENCONTRAR("T";código)
    Ejemplo de la función ENCONTRAR.
  2. Un segundo paso será determinar qué códigos tienen un guión '-' entre sus caracteres. Anidando la función ENCONTRAR en una función ESERROR obtendremos:
    =ESERROR(ENCONTRAR("-";código))
    Ejemplo de la función ENCONTRAR.
  3. Ya podemos visualizar cómo sería la segunda parte de los códigos extraidos sin guiones ni la letra 'T'. Ejecutamos una funcion SI condicional en base a la prueba lógica 'tiene guión el código':
    =SI(D2;DERECHA(A2;LARGO(A2)-C2);DERECHA(A2;LARGO(A2)-C2-1))
    es decir, si el código contiene un guión entonces extrae por la derecha del 'Código' el número de caracteres hasta la 'T', determinado por LARGO(código)-C2.
  4. La siguiente etapa sirve para descubrir cuales valores de los obtenidos en el paso anterior acaban en texto. Esta operación es muy fácil, ya que si multiplicamos por uno aquellos valores obtendremos un error para todos los que tengan texto:
    =E2*1
    Si lo convertimos en VERDADERO o FALSO anidándolo en una función ESERROR:
    =ESERROR(F2)
    podremos emplearlo posteriormente como prueba lógica de una función SI condicional.
  5. Ya llegamos al final, no desespereis. Nos queda convertir los códigos obtenidos al formato definido en el planteamiento, es decir, que el número de caracteres numéricos después de la primera letra debe ser cuatro.
    Para esto determinamos cuál es el número de caracteres del código obtenido anteriormente, es decir, del número que tenemos en cada código después de la 'T'. Aplicamos la siguiente función:
    =SI(G2;LARGO(E2)-1;LARGO(E2))
    donde al preguntar si la segunda parte del código tiene texto, nos quedaremos con una longitud de éste u otra.
    Con este valor podemos visualizar ya el valor numérico a tratar, ya que en función de los dígitos que tengamos deberemos incrementarlo con ceros hasta alcanzar ese formato con cuatro dígitos.
  6. Llegamos al final. Recopilamos todos esos cálculos intermedios. De la etapa anterior mediante un SI convierto el valor en uno de cuatro dígitos más el caracter tipo texto.
    =SI(H2=1;"000"&E2;SI(H2=2;"00"&E2;SI(H2=3;"0"&E2;SI(H2=4;E2;"error"))))
    si el número de caracteres numéricos es 1, añadiremos tres ceros hasta completar los cuatro dígitos, si tiene dos dígitos ñadiremos dos ceros para en total lograr ese formato buscado, etcétera.
    Ejemplo de la función ENCONTRAR.
Como paso final podemos concatenar la primera parte del código, es decir, hasta la 'T', y la segunda que hemos conseguido tan laboriosamente.
Adjunto fichero para su mejor análisis.

9 comentarios:

  1. Gracias, Excel foro. EXCELente tu solucion



    Para los parametros que te di, esta excelente sin embargo, no fui explicita,

    la letra puede ser cualquier letra del abecederia y puede ser hasta 4:

    ejemplo



    20T-29 / T0029



    33AXH-300/ AXH0300



    250MBXH-300A/ MBXH0300A



    56LFV1 / LFV0001



    disculpa, que no fui tan explicita, porque para tu solucion la formula busca una caracter especifico en ese caso "T",



    pero existe alguna manera de que me busque el ultimo caracter tipo "alpha" no numerico desde la derecha antes de antes del guion en el caso que exista

    ResponderEliminar
  2. Hola,
    queda subido una solución
    http://excelforo.blogspot.com/2010/01/funcion-estexto-y-esnumero-en-excel.html

    Un saludo

    ResponderEliminar
  3. NO ENTENDI, ME LO PUEDEN PONER DE OTRA FORMA

    ResponderEliminar
  4. Hola...
    ¿que es exactamente lo que no entendiste???
    Si fueras más explicito intentaría ayudarte...
    Un saludo

    ResponderEliminar
  5. hola buenos dias buscando una solucion a mi problema encontre esta pagina tngo un problema debo de encontrar el nombre de una ciudad con la funcion,encontrar y la funcion largo a partir de los datos de una persona le he hecho de muchas maneras y no me sale si me ayudas quedo agradecida, envio los datos y la funcion que estoy tratando de hacer =EXTRAE(A3;ENCONTRAR("/";A3;ENCONTRAR("/";A3;ENCONTRAR("/";A3;1)+1)+1)+1;ENCONTRAR("/";A3;ENCONTRAR("/";ENCONTRAR("/";A3;1)+1)+1)-ENCONTRAR("/";A3;1)-LARGO(A3;ENCONTRAR("/";A3;1)+)+1)+1)+1) y los datos de las personas son asi como estos.ADRIANALORENA / ADRIS556@HOTMAIL.COM / ADRIANA LORENA / ORTIZ ARBOLEDA / BOGOTA.

    ResponderEliminar
  6. Hola,
    yo probaría primero aplicando la herramienta Texto en columnas
    http://excelforo.blogspot.com/2010/02/texto-en-columnas.html
    y luego sobre la celda donde se encuentra finalmente la ciudad aplicar la función ENCONTRAR pero centrándome en algo más concreto.
    Si tienes dudas, envíame un correo a
    excelforo@gmail.com
    Slds

    ResponderEliminar
  7. a la función TEXTO necesito darle un largo determinado y que complete con espacios los lugares no usados, ¿saben como hacer?

    ResponderEliminar
  8. La función TEXTO(valor; formato) convierte un valor numérico en texto; óptima cuando queremos dar formato a un número y combinarlo con texto.
    No entiendo a qué te refieres con darle un largo determinado a la función TEXTO...
    ¿Puedes ser más específico???

    ResponderEliminar
  9. Ya lo solucioné, agregando espacios a la selda.
    Gracias!!

    ResponderEliminar