Cómo encontrar una subcadena con VBA (9 formas)

  • Compartir Este
Hugh West

Si usted está buscando algunas de las maneras más fáciles de encontrar subcadena utilizando VBA, entonces usted está en el lugar correcto. Después de pasar por este artículo, usted será capaz de encontrar la posición de una subcadena o extraer datos utilizando esta subcadena o cambiar el formato de una subcadena fácilmente. Vamos a entrar en el artículo.

Descargar el cuaderno de ejercicios

Contenido de la muestra

9 Maneras de Encontrar Subcadenas Usando VBA

Aquí, tengo la siguiente tabla de datos por el cual voy a mostrar las formas de encontrar subcadena en una cadena utilizando VBA. También voy a tratar de mostrar las formas de encontrar subcadena en una cadena aleatoria.

He realizado esta tarea utilizando Microsoft Excel 365 puede utilizar cualquier otra versión según su conveniencia.

Método-1: Encontrar una subcadena en una cadena usando VBA

Si desea encontrar la subcadena deseada en una cadena utilizando VBA, puede utilizar la función InStr en el código VBA.

Paso-01 :

➤Ir a Desarrollador Tab>> Visual Basic Opción

Entonces, el Editor de Visual Basic se abrirá.

➤Ir a Inserte Tab>> Módulo Opción

Después de eso, un Módulo se creará.

Paso-02 :

➤Escribe el siguiente código

 Sub FindFirst() Dim Pos As Integer Pos = InStr(1, "pienso luego existo", "pienso") MsgBox Pos End Sub 

Toma, InStr(1, "Pienso luego existo", "pienso") devolverá la posición de la subcadena de una cadena. 1 es la posición inicial, " Pienso, luego existo". es la cadena donde encontrará la subcadena deseada, y "pensar" es la subcadena que quieres buscar. Por defecto distingue entre mayúsculas y minúsculas, así que ten cuidado con las mayúsculas y minúsculas de la subcadena que quieres buscar.

➤Prensa F5

Resultado :

Después, obtendrá lo siguiente Buzón de mensajes que contiene la posición del "pensar" subcadena.

Método-2: Encontrar una subcadena sensible a mayúsculas/minúsculas en una cadena

Si desea encontrar la subcadena deseada en una cadena independientemente del caso utilizando VBA, siga este método.

Paso-01 :

➤Seguir Paso-01 de Método 1

 Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Pienso luego existo", "pienso",vbTextCompare) MsgBox Pos End Sub 

Toma, vbTextCompare se utiliza para encontrar una subcadena que no distinga entre mayúsculas y minúsculas.

➤Prensa F5

Resultado :

A continuación, obtendrá lo siguiente Buzón de mensajes que contiene la posición del "pensar" subcadena.

Puede hacer lo mismo utilizando el siguiente código.

 Opción Comparar Texto Public Sub caseinsensitive() Dim Pos As Integer Pos = InStr(1, "Pienso luego existo", "pienso") MsgBox Pos End Sub 

Toma, Opción Comparar texto encontrará la subcadena sin distinguir mayúsculas de minúsculas.

➤Prensa F5

Resultado :

Después, obtendrá lo siguiente Buzón de mensajes que contiene la posición del "pensar" subcadena.

Método-3: Uso de la función InstrRev en VBA

Aquí mostraré la forma de encontrar una subcadena a partir del final de una cadena.

Paso-01 :

➤Seguir Paso-01 de Método 1

 Sub FindFromEnd() MsgBox InStrRev("Pienso luego existo", "Yo") End Sub 

InStrRev encontrará la subcadena por la derecha en lugar de por la izquierda.

➤Prensa F5

Resultado :

A continuación, obtendrá lo siguiente Buzón de mensajes que contiene la posición del segundo "I" subcadena del lado derecho.

Método-4: Encontrar la posición de la Subcadena en una Cadena en un Rango de Datos

Si desea encontrar el carácter especial "@" en el Dirección de correo electrónico He añadido aquí el método Columna de posición para este fin.

Paso-01 :

➤Seguir Paso-01 de Método 1

 Function FindSubstring(value As Range) As Integer Dim Pos As Integer Pos = InStr(1, value, "@") FindSubstring = Pos End Function 

Creará una función llamada BuscarSubcadena (puede utilizar cualquier otro nombre)

valor es la referencia de la celda que contiene la cadena y se declara como Gama .

Paso-02 :

➤Seleccionar la salida Célula E5

➤Type la siguiente función (creada por VBA )

=BuscarSubcadena(D5)

D5 es la celda que contiene la cadena.

➤Prensa INTRODUCE

➤Arrastrar hacia abajo el Asa de llenado Herramienta

Resultado :

A continuación, obtendrá las posiciones del carácter especial " @" en el Dirección de correo electrónico .

Lecturas similares:

  • Cómo encontrar una cadena en una celda usando VBA en Excel (2 métodos)
  • FindNext Usando VBA en Excel (2 Ejemplos)
  • Cómo encontrar cadena con VBA en Excel (8 Ejemplos)
  • VBA Buscar última fila en Excel (5 maneras)

Método-5: Comprobación de una determinada subcadena de una cadena en un intervalo de datos

Supongamos que desea escribir Pase o Falta de correspondencia a los nombres de los alumnos en función de la Columna de resultados donde Pase o Falla se ha escrito entre corchetes. Para encontrar esta subcadena en el archivo Columna de resultados y anótelo en el Columna de aprobado o suspenso siga este método.

Paso-01 :

➤Seguir Paso-01 de Método 1

 Sub CheckSubstring() Dim cell As Range For Each cell In Range("C5:C10") If InStr(cell.value, "Pass")> 0 Then cell.Offset(0, 1).value = "Passed" Else cell.Offset(0, 1).value = "Failed" End If Next cell End Sub 

Aquí, el rango de celdas es C5:C10 que es el Columna de resultados

InStr(cell.value, "Pass")> 0 es la condición en la que el número es mayor que cero (cuando la celda contiene "Pass" ) entonces la siguiente línea continuará y dará la salida en la celda adyacente como Aprobado .

Si la condición se convierte en falsa significa que una celda no contiene ningún "Pass" entonces la línea bajo Si no se ejecutará y dará el valor de salida en la celda adyacente como Fallido .

Este bucle continuará para cada celda.

➤Prensa F5

Resultado :

A continuación, obtendrá los siguientes resultados en el archivo Aprobado o suspenso columna.

Método-6: Comprobación de una determinada subcadena en una cadena y extracción de datos

Mostraré el camino para encontrar a los estudiantes nombrados Michael en el Columna Nombre del alumno y extraer sus datos correspondientes mediante VBA en este método.

Paso-01 :

➤Seguir Paso-01 de Método 1

 Sub Extractdata() Dim lastusedrow As Long Dim i As Integer, icount As Integer lastusedrow = ActiveSheet.Range("B100").End(xlUp).Row For i = 1 To lastusedrow If InStr(1, Range("B" & i), "Michael")> 0 Then icount = icount + 1 Range("E" & icount & ":G" & icount) = Range("B" & i & ":D" & i).value End If Next i End Sub 

Aquí he utilizado B100 como el Rango de hojas activas pero puede utilizar cualquier gama en función de su uso.

InStr(1, Range("B" & i), "Michael")> 0 es la condición para comprobar si la celda de la columna B contiene Michael

Range("E" & icount & ":G" & icount) es el intervalo en el que desea los datos de salida y Range("B" & i & ":D" & i).value dará los valores de las columnas B a D .

➤Prensa F5

Resultado :

A continuación, obtendrá los siguientes datos extraídos para los alumnos que tengan el nombre Michael .

Método 7: Búsqueda de subcadenas de palabras

Si desea encontrar la subcadena como una palabra, siga este método.

Paso-01 :

➤Seguir Paso-01 de Método 1

 Sub Stringforword() Dim j As Integer j = InStr("Esto es lo que soy", "es") If j = 0 Then MsgBox "Palabra no encontrada" Else MsgBox "Palabra encontrada en posición: " & j End If End Sub 

Comprobará si la cadena contiene es y a continuación se dará su posición

➤Prensa F5

Resultado :

A continuación, aparecerá el siguiente cuadro de mensaje en el que se muestra el mensaje palabra encontrada en posición:6 (la posición de es ).

Puede probar este código para una palabra que no esté en la cadena.

➤Teclea el siguiente código

 Sub Stringforword() Dim j As Integer j = InStr("Esto es lo que soy", "son") If j = 0 Then MsgBox "Palabra no encontrada" Else MsgBox "Palabra encontrada en posición: " & j End If End Sub 

➤Prensa F5

Resultado :

A continuación, aparecerá el siguiente cuadro de mensaje en el que se muestra el mensaje palabra no encontrada .

Método 8: Uso de las funciones Instr y LEFT

Aquí explicaré la forma de encontrar la posición de una subcadena en una cadena y extraer los textos anteriores a esta subcadena utilizando VBA y la función IZQUIERDA .

Paso-01 :

➤Seguir Paso-01 de Método 1

 Sub InstrandLeft() Dim txt As String Dim j As Long txt = "Esto es lo que soy" j = InStr(txt, "es") MsgBox Left(txt, j - 1) End Sub 

j = InStr(txt, "es") es la posición de la subcadena es y Izquierda(txt, j - 1) extraerá las subcadenas antes de es .

➤Prensa F5

Resultado :

A continuación, aparecerá el siguiente mensaje Aquí (subcadena antes de es ).

Método-9: Poner en negrita una determinada subcadena de una cadena

Puede poner en negrita las calificaciones antes de los paréntesis en el campo Columna de resultados siguiendo este método.

Paso-01 :

➤Seguir Paso-01 de Método 1

 Sub Boldingsubstring() Dim Cell As Range Dim txt As Integer For Each Cell In Selection txtCount = Len(Cell) txt = InStr(1, Cell, "(") Cell.Characters(1, txt - 1).Font.Bold = True Next Cell End Sub 

txt = InStr(1, Celda, "(") devolverá la posición del primer corchete y Celda.Caracteres(1, txt - 1).Fuente.Negrita hará que la subcadena antes del primer corchete Negrita .

Paso-02 :

➤Seleccione el Columna de resultados

➤Ir a Desarrollador Tab>> Macros Opción

Entonces, a Macro aparecerá el asistente.

➤Seleccionar Subcadena en negrita (el nombre del código VBA) y, a continuación Ejecutar .

Resultado :

Después de eso, las calificaciones en el Resultado Columna aparecerá en negrita.

Sección práctica

Para hacer prácticas por su cuenta hemos proporcionado un Práctica en una hoja denominada Práctica Por favor, hazlo tú mismo.

Conclusión

En este artículo, he tratado de cubrir las formas más fáciles de encontrar subcadena utilizando VBA Espero que te resulte útil. Si tienes alguna sugerencia o pregunta, no dudes en compartirla con nosotros.

Hugh West es un capacitador y analista de Excel altamente experimentado con más de 10 años de experiencia en la industria. Tiene una Licenciatura en Contabilidad y Finanzas y una Maestría en Administración de Empresas. Hugh tiene una pasión por la enseñanza y ha desarrollado un enfoque de enseñanza único que es fácil de seguir y comprender. Su conocimiento experto de Excel ha ayudado a miles de estudiantes y profesionales en todo el mundo a mejorar sus habilidades y sobresalir en sus carreras. A través de su blog, Hugh comparte su conocimiento con el mundo, ofreciendo tutoriales gratuitos de Excel y capacitación en línea para ayudar a las personas y empresas a alcanzar su máximo potencial.