Vérifier si la valeur existe dans la colonne de VBA
4 réponses
Si vous voulez faire cela sans VBA, vous pouvez utiliser une combinaison de IF
, ISERROR
et MATCH
.
si toutes les valeurs sont dans la colonne A, Inscrivez cette formule dans la colonne B:
=IF(ISERROR(MATCH(12345,A:A,0)),"Not Found","Value found on row " & MATCH(12345,A:A,0))
Ce sera pour la valeur "12345" (qui peut aussi être une référence de cellule). Si la valeur n'est pas trouvée, MATCH
retourne "#N / a " et ISERROR
essaie de l'attraper.
si vous voulez utiliser VBA, le moyen le plus rapide est D'utiliser un pour boucle:
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
vous pouvez utiliser des fonctions de feuille de travail dans VBA, mais ils sont difficiles et parfois jeter des erreurs absurdes. FOR
boucle est assez infaillible.
la méthode find d'une plage est plus rapide que l'utilisation d'une boucle for pour boucler toutes les cellules manuellement.
voici un exemple d'utilisation de la méthode de recherche 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
le plus Simple est d'utiliser Match
If Not IsError(Application.Match(ValueToSearchFor, RangeToSearchIn, 0)) Then
' String is in range
essayez d'ajouter WorksheetFunction:
If Not IsError(Application.WorksheetFunction.Match(ValueToSearchFor, RangeToSearchIn, 0)) Then
' String is in range