valores valor validar una rango macro hoja existe esta entre determinar comprobar columna buscar archivo excel vba matching

validar - si un valor esta entre dos valores excel



Verifique si el valor existe en la columna en VBA (4)

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

aquí hay un ejemplo del uso del método find 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

Tengo una columna de números de más de 500 filas. Necesito usar VBA para verificar si la variable X concuerda con cualquiera de los valores en la columna.

¿Puede alguien ayudarme?


Intente agregar WorksheetFunction:

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


Lo más simple es usar Match

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


Si desea hacer esto sin VBA, puede usar una combinación de IF , ISERROR y 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" e ISERROR intenta capturarlo.

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 las funciones de hoja de trabajo en VBA, pero son exigentes y a veces arrojan errores sin sentido. El bucle FOR es bastante infalible.