VBA para comprobar si la cadena contiene otra cadena en Excel (6 métodos)

  • Compartir Este
Hugh West

Aplicación de VBA es el método más eficaz, rápido y seguro para ejecutar cualquier operación en Excel. En este artículo, le mostraremos cómo comprobar si una cadena contiene otra cadena en Excel utilizando VBA .

Descargar plantilla de prácticas

Puede descargar la plantilla práctica gratuita de Excel desde aquí.

VBA para Comprobar Si Cadena Contiene Valor.xlsm

6 Métodos en VBA para comprobar si una cadena contiene otra cadena en Excel

A continuación, en esta sección, encontrará 6 métodos eficaces sobre cómo aplicar VBA para comprobar si una cadena contiene otra cadena o no.

1. VBA para comprobar si la cadena contiene subcadena

A continuación se muestra un ejemplo de la función InStr para averiguar si una cadena contiene una subcadena en Excel.

Pasos:

  • Pulse Alt + F11 en su teclado o vaya a la pestaña Desarrollador -> Visual Basic para abrir Editor de Visual Basic .

  • En la ventana de código emergente, en la barra de menús, haga clic en Insertar -> Módulo .

  • En la ventana de código, copia el siguiente código y pégalo.
 Public Sub ContainSub() If InStr("Película: Iron Man, Batman, Superman, Spiderman, Thor", "Hulk")> 0 Then MsgBox "Película encontrada" Else MsgBox "Película no encontrada" End If End Sub 

Su código ya está listo para ejecutarse.

  • Ejecutar la macro.

Si su contiene la subcadena entonces obtendrá una coincidencia encontrada, de lo contrario, devolverá ninguna coincidencia encontrada.

En nuestro ejemplo, queríamos averiguar si nuestra cadena primaria " Película: Iron Man, Batman, Superman, Spiderman, Thor "contiene la palabra " Hulk "Como no lo hace, obtenemos un Película no encontrada resultado.

2. VBA para comprobar si una cadena contiene un número

Puede buscar si las cadenas contienen números o no utilizando la función VBA código.

Mira el siguiente ejemplo donde encontraremos qué cadenas contienen números con los nombres de las películas.

Pasos para comprobar si las cadenas contienen números con VBA se indican a continuación.

Pasos:

  • De la misma manera que antes, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
  • En la ventana de código, copia el siguiente código y pégalo.
 Function SearchNumbers(oRng As Range) As Boolean Dim bSearchNumbers As Boolean, i As Long bSearchNumbers = False For i = 1 To Len(oRng.Text) If IsNumeric(Mid(oRng.Text, i, 1)) Then bSearchNumbers = True Exit For End If Next SearchNumbers = bSearchNumbers End Function 
  • No se trata de un subprocedimiento para la VBA programa a ejecutar, esto es crear un Función definida por el usuario (UDF), que llamaremos en nuestra hoja de cálculo para ejecutar la tarea. Así, después de escribir el código, en lugar de hacer clic en el botón Ejecutar haga clic en el botón Guardar de la barra de menús para guardar el archivo de macros.
  • Ahora vuelve a la hoja de trabajo que te interesa y escribe la función definida por el usuario que acabas de crear en el campo VBA código ( BuscarNúmero en la primera línea del código) y dentro de los paréntesis de la función, introduzca el número de referencia de la celda de la cadena que tiene números a la izquierda (por ejemplo Célula B5 ).
  • Pulse Entre en .

Obtendrá un valor booleano ( TRUE o Falso ), si la cadena de la celda contiene números, obtendrá TRUE de lo contrario FALSO .

  • Arrastre la celda hacia abajo Asa de llenado para aplicar la fórmula al resto de las celdas y comprobar qué cadena contiene números y cuál no.

3. VBA para extraer números de una cadena

En la sección anterior, aprendimos cómo comprobar si la cadena contiene números o no. Y en esta sección, aprenderemos cómo extraer esos números y colocarlos en otra celda con el ejemplo que se da a continuación.

Pasos para comprobar si las cadenas contienen números y extraerlos con VBA se indican a continuación.

Pasos:

  • Abrir Editor de Visual Basic del Desarrollador y Inserte a Formulario de usuario esta vez desde la pestaña Insertar de la ventana de código.
  • De los aparecidos Caja de herramientas arrastrar y soltar Botón de mando en el Formulario de usuario .

  • Doble clic en el botón, copia el siguiente código y pégalo.
 Private Sub CommandButton1_Click() Worksheets("Number").Range("C2:C15").ClearContents checkNumber (Worksheets("Number").Range("B2:B15")) End Sub Sub checkNumber(objRange As Range) Dim myAccessary As Variant Dim i As Long Dim iRow As Long iRow = 2 For Each myAccessary In objRange For i = 1 To Len(myAccessary.Value) If IsNumeric(Mid(myAccessary.Value, i,1)) Then If Trim(objRange.Cells(objRange.Row - 1, 2)) "" Then objRange.Cells(iRow - 1, 2) = _ objRange.Cells(iRow - 1, 2) & Mid(myAccessary.Text, i, 1) Else objRange.Cells(iRow - 1, 2) = Mid(myAccessary.Text, i, 1) End If End If Next iRow = iRow + 1Next myAccessary End Sub 
  • Ejecutar el código y le llevará a la hoja de trabajo que le interese.
  • Pulse el botón de mando y obtendrá el número extraído de las cadenas.

4. VBA para comprobar si una cadena contiene una letra determinada

Este método es casi similar al método de comprobación de subcadenas en una cadena.

A continuación se muestra la InStr para averiguar si una cadena contiene una letra determinada en Excel.

Pasos:

  • De la misma manera que antes, abra Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
  • En la ventana de código, copia el siguiente código y pégalo.
 Public Sub ContainChar() If InStr("Película: Iron Man, Batman, Superman, Spiderman, Thor", "Z")> 0 Then MsgBox "Letra encontrada" Else MsgBox "Letra no encontrada" End If End Sub 

Su código ya está listo para ejecutarse.

  • Ejecutar el programa. Si su contiene la letra entonces obtendrá una coincidencia encontrada, de lo contrario, devolverá ninguna coincidencia encontrada.

En nuestro ejemplo, queríamos averiguar si nuestra cadena primaria " Película: Iron Man, Batman, Superman, Spiderman, Thor "contiene la letra " Z "Como no lo hace, obtenemos un Carta no encontrada resultado.

5. VBA para Comprobar si un Rango de Cadena Contiene Otra Cadena

Hemos aprendido a comprobar si una cadena dada contiene otra cadena o no. Pero en esta sección, aprenderemos a comprobar si un rango de cadenas contiene subcadenas o no con el siguiente conjunto de datos como ejemplo.

Pasos:

  • Abrir Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
  • En la ventana de código, copia el siguiente código y pégalo.
 Public Sub ContainsSub() If InStr(ActiveSheet.Select, "Hulk")> 0 Then MsgBox "Película encontrada" Else MsgBox "Película no encontrada" End If End Sub 

Su código ya está listo para ejecutarse.

  • Ejecutar el código.

Si su gama de contiene la subcadena entonces obtendrá una coincidencia encontrada, de lo contrario, devolverá ninguna coincidencia encontrada.

6. VBA para extraer cadenas de una cadena

En esta sección, veremos cómo comprobar si las cadenas contienen determinadas subcadenas y extraerlas en otra celda.

Extraeremos la información de los nombres que empiecen por " Chris " del siguiente conjunto de datos.

Pasos :

  • Abrir Editor de Visual Basic del Desarrollador y Inserte a Módulo en la ventana de código.
  • En la ventana de código, copia el siguiente código y pégalo.
 Sub SearchSub() Dim lastrow As Long Dim i As Integer, count As Integer lastrow = ActiveSheet.Range("A30000").End(xlUp).Row For i = 1 To lastrow If InStr(1, LCase(Range("C" & i)), "Chris") 0 Then count = count + 1 Range("F" & count & ":H" & count) = Range("B" & i & ":D" & i).Value End If Next i End Sub 

Su código ya está listo para ejecutarse.

  • Ejecutar el código.

Sólo los nombres que empiezan por " Chris " se almacenarán en las celdas predefinidas.

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.