Tabla de contenido
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 muestra9 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.