Saltar al contenido

Compruebe si existe valor en la columna en VBA

El paso a paso o código que hallarás en este post es la solución más sencilla y válida que encontramos a tu duda o dilema.

Solución:

El método de búsqueda de un rango es más rápido que usar un bucle for para recorrer todas las celdas manualmente.

aquí hay un ejemplo del uso del método de búsqueda en vba

Sub Find_First()
Dim FindString As String
Dim Rng As Range
FindString = InputBox("Enter a Search value")
If Trim(FindString) <> "" Then
    With Sheets("Sheet1").Range("A:A") 'searches all of column A
        Set Rng = .Find(What:=FindString, _
                        After:=.Cells(.Cells.Count), _
                        LookIn:=xlValues, _
                        LookAt:=xlWhole, _
                        SearchOrder:=xlByRows, _
                        SearchDirection:=xlNext, _
                        MatchCase:=False)
        If Not Rng Is Nothing Then
            Application.Goto Rng, True 'value found
        Else
            MsgBox "Nothing found" 'value not found
        End If
    End With
End If
End Sub

Lo más simple es usar Match

If Not IsError(Application.Match(ValueToSearchFor, RangeToSearchIn, 0)) Then
    ' String is in range

Si quieres hacer esto sin que VBA, puede usar una combinación de IF, ISERRORy MATCH.

Entonces, si todos los valores están en la columna A, ingrese esta fórmula en la columna B:

=IF(ISERROR(MATCH(12345,A:A,0)),"Not Found","Value found on row " & MATCH(12345,A:A,0))

Esto buscará el valor “12345” (que también puede ser una referencia de celda). Si no se encuentra el valor, MATCH devuelve “#N/A” y ISERROR trata de atrapar eso.

Si desea usar VBA, la forma más rápida es usar un bucle FOR:

Sub FindMatchingValue()
    Dim i as Integer, intValueToFind as integer
    intValueToFind = 12345
    For i = 1 to 500    ' Revise the 500 to include all of your values
        If Cells(i,1).Value = intValueToFind then 
            MsgBox("Found value on row " & i)
            Exit Sub
        End If
    Next i

    ' This MsgBox will only show if the loop completes with no success
    MsgBox("Value not found in the range!")  
End Sub

Puede usar funciones de hoja de trabajo en VBA, pero son exigentes y, a veces, arrojan errores sin sentido. los FOR loop es bastante infalible.

Si te gustó nuestro trabajo, eres capaz de dejar una crónica acerca de qué le añadirías a este ensayo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *