Documente Academic
Documente Profesional
Documente Cultură
inShar e
Existen varias funciones en VBA que podemos utilizar para manipular cadenas de texto. A continuacin revisaremos algunas de estas funciones VBA y observaremos el resultados de cada una de ellas. Para iniciar con esta revisin, debes colocar un botn de comando dentro de una hoja de Excel y despus hacer doble clic sobre l para introducir el cdigo.
La funcin Left
La funcin Left en VBA nos ayuda a extraer un nmero determinado de caracteres a la izquierda de la cadena de texto.
La funcin Right
La funcin Right nos permite extraer caracteres a la derecha de una cadena de texto. Observa el siguiente cdigo:
En esta funcin la cuenta de caracteres se hace de derecha a izquierda siendo el ltimo carcter de la cadena de texto el primero que extraer la funcin Right. Para este ejemplo he pedido los ltimos 5 caracteres a la derecha de la cadena de texto:
La funcin Len
La funcin Len nos ayuda a conocer la longitud de una cadena de texto, es decir, la cantidad de caracteres que conforman a una cadena.
La funcin Len contar cada uno de los caracteres de la cadena y regresar un nmero:
La funcin InStr
La funcin InStr devuelve la posicin de un carcter dentro de la cadena. Supongamos que quiero encontrar la posicin de la letra M dentro de la cadena que contiene el valor Hola Mundo.
Es importante resaltar que la funcin InStr es sensible a maysculas y minsculas. Observa cmo he especificado buscar la letra M (mayscula) y el resultado de la funcin es el siguiente:
La funcin InStr encontr la letra M en la posicin nmero 6 comenzando desde la izquierda. Si en lugar de la letra M busco la letra m (minscula), la funcin InStr devolver el valor 0 (cero) indicando que no ha encontrado dicha letra. Adems de indicar letras individuales en la funcin InStr, tambin podemos especificar palabras completas por ejemplo:
Por ejemplo, al buscar la palabra Mundo dentro de la cadena de texto obtendremos como resultado la posicin nmero 6 ya que en esa posicin comienza la palabra Mundo.
La funcin Mid
Con la funcin Mid podemos extraer una subcadena de otra cadena de texto con tan solo especificar la posicin inicial de la subcadena y su longitud. Observa el siguiente ejemplo:
La funcin Mid se mover a la posicin 15 de la cadena y a partir de ah contar 7 caracteres y devolver como resultado la cadena comprendida entre ambas posiciones. En nuestro ejemplo, la palabra funcion es la que se encuentra entre dichas posiciones.
Las funciones de texto en VBA nos ayudarn a manipular adecuadamente las cadenas de texto y podremos obtener los resultados que necesitamos. Artculos relacionados Funciones VBA Variables en VBA
En los pases occidentales utilizamos un sistema de escritura con una direccin de izquierda a derecha y los sistemas computacionales reflejan dicho comportamiento. Excel no es la excepcin y sus funciones de bsqueda analizan las cadenas de texto en esa misma direccin. Si alguna vez has intentado hacer una bsqueda de derecha a izquierda te habrs dado cuenta que es un objetivo difcil de conseguir dada la naturaleza de las funciones de Excel. Pero Por qu alguien querra realizar una bsqueda de derecha a izquierda?
Si quiero encontrar la ltima aparicin de la palabra mam y hago una bsqueda de izquierda a derecha, entonces tengo que preguntarme si la instancia encontrada es efectivamente la ltima aparicin, de lo contrario debo realizar otra bsqueda. Sin embargo, si hago una bsqueda de derecha a izquierda, no tengo que hacerme esa pregunta, sino que simplemente busco la primera aparicin de la palabra para llegar a la misma posicin. Este razonamiento es excelente y de hecho es la mejor alternativa a implementar cuando utilizamos lenguajes de programacin, pero nos encontramos con cierta dificultad si queremos hacerlo con funciones de Excel. Por esta razn, hoy mostrar dos alternativas de cmo
encontrar caracteres o palabras en Excel como si estuviramos haciendo una bsqueda de derecha a izquierda.
La lgica de esta frmula es encontrar el nmero de apariciones de la palabra dentro de la cadena de texto original para saber cul es la ltima aparicin y entonces reemplazarla por un carcter especial, que en este caso es @. Una vez hecho este reemplazo ser cuestin de encontrar la posicin de dicho carcter especial para conocer la posicin de la ltima aparicin de la palabra. Observa el comportamiento de esta frmula:
La frmula devuelve el valor 48 que es precisamente la posicin de la letra m que da inicio a la ltima aparicin de la palabra mam dentro de la cadena de texto. Como puedes observar, la frmula no es nada simple debido a la naturaleza de las funciones de Excel de buscar de izquierda a derecha, pero aun as con un poco de pericia podemos encontrar la posicin de la ltima aparicin de la palabra. Si quieres saber ms sobre esta frmula, te recomiendo leer el artculo Encontrar la posicin de la ltima aparicin de una palabra en Excel donde explico paso a paso la lgica utilizada para el desarrollo de la frmula.
primer carcter de la izquierda. Pero antes de hacer un ejemplo revisemos los cuatro argumentos de la funcin InStrRev:
String (obligatorio): La cadena de texto original. StringMatch (obligatorio): La palabra o carcter que se desea encontrar. Start (opcional): La posicin donde inicia la bsqueda. Si se omite se inicia a partir del ltimo carcter de la cadena de texto original. Compare (opcional): El tipo de comparacin que se realizar: 0 = Comparacin binario, 1 = Comparacin textual, 2 = Comparacin basada en basada de datos.
Si la funcin InStrRev no encuentra la palabra o carcter dentro de la cadena de texto original, entonces devolver el valor cero. Para utilizar la funcin InStrRev en mi hoja de Excel crear una funcin definida por el usuario (UDF) que reciba tanto la cadena original como la palabra a buscar y entonces devuelva el resultado de la funcin InStrRev:
1 2 3 4 5
Function ENCONTRARINV(cadena As String, palabra As String) As Long ENCONTRARINV = InStrRev(cadena, palabra) End Function
Esta funcin es muy sencilla y nos devuelve el resultado correcto, que adems concuerda con la posicin que obtuvimos anteriormente con la frmula de Excel:
En cualquiera de los dos ejemplos anteriores hemos encontrado la posicin de la ltima aparicin de una palabra. Si quieres encontrar la posicin pero contando desde la derecha ser suficiente con hacer una resta entre la longitud de la cadena original y el resultado de la funcin anterior. Por ejemplo:
En este ejemplo, el nmero 48 indica la posicin de la palabra mam empezando a contar de la izquierda y el nmero 11 la posicin si se realiza la cuenta comenzando por la derecha. Ahora ya conoces dos alternativas para encontrar caracteres de derecha a izquierda en Excel, descarga el libro de trabajo y utiliza tanto la frmula desarrollada como la funcin InStrRev en tus bsquedas. Artculos relacionados Cadenas de texto en VB