Table des matières
Dans cet article, je vais vous montrer comment vous pouvez analyser la situation dans Excel VBA si une cellule contient une valeur, vous apprendrez à analyser la situation pour n'importe quelle valeur et pour une valeur particulière.
Analyse Excel VBA : si la cellule contient une valeur, alors (Visualisation rapide)
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo appeared in Physics exam" End If End Sub
Télécharger le cahier d'exercices
Téléchargez ce cahier d'exercices pour vous entraîner pendant que vous lisez cet article.
VBA Si la cellule contient une valeur alors.xlsmAnalyse Excel VBA : Si la cellule contient une valeur, renvoyer les résultats (analyse pas à pas)
Nous avons ici un ensemble de données contenant les notes de certains élèves en physique, chimie et mathématiques dans une école appelée Sunflower Kindergarten.
Les cellules vides signifient que l'étudiant ne s'est pas présenté, c'est-à-dire qu'il était absent à cet examen particulier. Analysons maintenant la situation, à savoir si une cellule contient une valeur ou non, avec cet ensemble de données.
⧪ Étape 1 : Déclaration de la cellule
Tout d'abord, nous devons déclarer la cellule dont nous voulons analyser la valeur. Nous allons analyser si Jennifer Marlo s'est présentée à l'examen de physique ou non.
Par conséquent, nous devons vérifier si la cellule C12 contient une valeur ou non.
Pour ce faire, nous devons d'abord déclarer la cellule C12 .
La ligne de code pour accomplir ceci sera :
Set Cell = Range("C12").Cells(1, 1)
⧪ Étape 2 : vérifier si la cellule contient une valeur (y compris une valeur particulière).
Ensuite, nous devons vérifier si la cellule contient une valeur ou non, ce que nous ferons à l'aide de la fonction Si la condition La ligne de code sera :
Si Cell.Value "" Alors
Ce code sera exécuté si la cellule contient une valeur quelconque. Pour vérifier une valeur (par exemple, si elle contient 100 ou non), utilisez cette valeur spécifique avec une balise Égal à symbole.
Si Cell.Value "" Alors
⧪ Étape 3 : Attribution de la tâche
Ensuite, vous devez mettre en place une tâche qui sera exécutée si la cellule contient une valeur (ou une valeur spécifique).
Ici, nous voulons afficher le message "Jennifer Marlo est apparue à l'examen de physique." La ligne de code sera donc :
MsgBox "Jennifer Marlo s'est présentée à l'examen de physique."
⧪ Étape 4 : Terminer le bloc If
Enfin, vous devez déclarer la fin du bloc If.
End If
Donc, le complet VBA Le code sera :
⧭ Code VBA :
Sub If_Cell_Contains_Value() Set Cell = Range("C12").Cells(1, 1) If Cell.Value "" Then MsgBox "Jennifer Marlo appeared in Physics exam" End If End Sub
⧭ Sortie :
Exécutez ce code en cliquant sur le bouton Exécuter Sub/UserForm dans la barre d'outils.
Il affichera le message "Jennifer Marlo est apparue à l'examen de physique." comme la cellule C12 contient une valeur, de 50 .
Exemples impliquant Si la cellule contient une valeur puis une sortie spécifiée avec Excel VBA
Nous avons appris à analyser si une cellule contient une valeur ou non en VBA Maintenant, examinons quelques exemples pour que la compréhension soit claire.
Développer une macro pour filtrer une valeur si la cellule correspondante contient une valeur quelconque, en Excel VBA
Développons un Macro pour filtrer les étudiants qui se sont présentés à chacun des examens.
C'est-à-dire que nous devons vérifier les cellules contenant les notes de chacune des matières et voir si elles contiennent une valeur ou non.
Si c'est le cas, nous devons alors trouver le nom de l'étudiant correspondant.
L'intégralité VBA Le code pour accomplir ceci sera :
⧭ Code VBA :
Sub Sorting_Out_Cells_that_Contain_Values() Starting_Cell = InputBox("Enter the Reference of the First Cell of the Filtered Data : ") For i = 2 To Selection.Columns.Count Range(Starting_Cell).Cells(1, i - 1) = Selection.Cells(1, i) Next i Count = 2 For i = 2 To Selection.Columns.Count For j = 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If Cell.Value "" ThenRange(Starting_Cell).Cells(Count, i - 1) = Selection.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 2 Next i End Sub
⧭ Sortie :
Sélectionnez l'ensemble de données (y compris le En-têtes ) et exécutez ceci Macro .
Tout d'abord, il vous sera demandé d'entrer la référence de la première cellule où vous voulez que les données soient filtrées. J'ai entré G3 .
Cliquez ensuite sur OK Vous obtiendrez les noms des étudiants qui se sont présentés à chacun des examens (y compris les noms des étudiants qui ont participé à l'examen). En-têtes ) dans un nouvel ensemble de données à partir de la cellule G3 .
2. création d'une fonction définie par l'utilisateur pour trier une valeur si la cellule correspondante contient une valeur spécifique alors en Excel VBA
Nous allons maintenant créer une fonction définie par l'utilisateur qui renverra les noms des étudiants qui ont obtenu une note spécifique dans chacune des matières.
La procédure est pratiquement la même que ci-dessus : nous devons vérifier les cellules contenant les notes de chacune des matières et voir si elles sont égales ou non à une valeur spécifique.
Si c'est le cas, nous retournerons le nom de l'étudiant correspondant.
Le site VBA Le code sera :
⧭ Code VBA :
Function Cells_with_Values(Rng As Range, Data As Variant) Dim Output() As Variant ReDim Output(Rng.Rows.Count, Rng.Columns.Count - 1) For i = 0 To Rng.Columns.Count - 2 Output(0, i) = Rng.Cells(1, i + 2) Next i Count = 1 For i = 2 To Rng.Columns.Count For j = 2 To Rng.Rows.Count Set Cell = Rng.Cells(j, i) If Cell.Value = Data Then Output(Count, i - 2) =Rng.Cells(j, 1).Value Count = Count + 1 End If Next j Count = 1 Next i For i = LBound(Output, 1) To UBound(Output, 1) For j = LBound(Output, 2) To UBound(Output, 2) If Output(i, j) = 0 Then Output(i, j) = "" End If Next j Next i Cells_with_Values = Output End Function
⧭ Sortie :
Le code crée une fonction appelée Cellules_avec_valeurs qui prend deux arguments, un Gamme et un Valeur .
Trouvons les étudiants qui ont obtenu 100 dans chacune des matières en utilisant cette fonction.
Sélectionnez une plage de cellules dans votre feuille de calcul et saisissez cette fonction dans la première cellule de la plage :
=Cells_with_Values(B3:E13,100)
[Ici B3:E3 est mon ensemble de données (y compris le En-têtes ) et 100 est ma valeur correspondante. Vous utilisez la vôtre.]
Ensuite, appuyez sur CTRL + SHIFT + ENTER ( Formule Array Il renverra un tableau composé des noms des élèves qui ont obtenu 100 dans chaque matière, y compris le nom de l'élève. En-têtes .
Développer un formulaire utilisateur pour extraire une valeur si la cellule correspondante contient une valeur quelconque (ou une valeur spécifique) en Excel VBA.
Enfin, nous développerons un Formulaire utilisateur pour extraire les noms des étudiants qui ont participé (ou obtenu des notes spécifiques) à certains examens spécifiques.
⧪ Étape 1 : Ouverture du formulaire utilisateur
Allez à la Insérer> ; Formulaire utilisateur dans l'option VBA pour ouvrir une nouvelle Formulaire utilisateur Une nouvelle Formulaire utilisateur appelé Formulaire d'utilisateur 1 sera ouvert.
⧪ Étape 2 : glisser des outils vers le formulaire utilisateur
En plus de la Formulaire utilisateur vous obtiendrez le Boîte à outils Déplacez votre curseur sur le Boîte à outils et draguer 4 Étiquettes (Étiquette1, Étiquette2, Étiquette3, Étiquette4) et 3 ListBox (ListBox1, ListBox2, ListBox3) et un TextBox (TextBox1) dans une forme rectangulaire au-dessus de la Formulaire utilisateur .
Ensuite, faites glisser un autre Étiquette (Étiquette5) et un TextBox (TextBox2) dans le coin inférieur gauche de l'écran Formulaire utilisateur .
Enfin, faites glisser un Bouton de commande (CommandButton1) dans le coin inférieur droit.
Modifier l'affichage des Étiquettes à Colonne de recherche , Colonne de retour , Toute valeur ou une valeur spécifique , Valeur, et Cellule de départ.
Modifiez également l'affichage de la Bouton de commande 1 à OK .
⧪ Étape 3 : Écriture du code pour ListBox3
Double-cliquez sur ListBox3 . A Sous-procédure privée appelé ListBox3_Click s'ouvrira et vous pourrez y entrer le code suivant.
Private Sub ListBox3_Click() If UserForm1.ListBox3.Selected(0) = True Then UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False ElseIf UserForm1.ListBox3.Selected(1) = True Then UserForm1.Label4.Visible = True UserForm1.TextBox1.Visible = True End If End Sub
⧪ Étape 4 : Écriture du code du bouton de commande 1
Ensuite, double-cliquez sur Bouton de commande 1 . un autre Sous-procédure privée appelé CommandButton1_Click s'ouvrira et vous pourrez y entrer le code suivant.
Private Sub CommandButton1_Click() On Error GoTo Message Starting_Cell = UserForm1.TextBox2.Text Count1 = 1 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then Range(Starting_Cell).Cells(1, Count1) = Selection.Cells(1, i) Count1 = Count1 + 1 End If Next i If Count1 = 1 Then MsgBox "Select at Least One Lookup Column.", vbExclamation ExitSub End If Data_Selected = 0 For i = 1 To Selection.Columns.Count If UserForm1.ListBox2.Selected(i - 1) = True Then Data_Selected = i Exit For End If Next i If Data_Selected = 0 Then MsgBox "Select One Return Column.", vbExclamation Exit Sub End If Count2 = 1 Count3 = 2 For i = 1 To Selection.Columns.Count If UserForm1.ListBox1.Selected(i - 1) = True Then For j= 2 To Selection.Rows.Count Set Cell = Selection.Cells(j, i) If UserForm1.ListBox3.Selected(0) = True Then If Cell.Value "" Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If ElseIf UserForm1.ListBox3.Selected(1) = True ThenSi Cell.Value = UserForm1.TextBox1.Text Then Range(Starting_Cell).Cells(Count3, Count2) = Selection.Cells(j, Data_Selected).Value Count3 = Count3 + 1 End If Else MsgBox "Select Either Any Value or Specific Value.", vbExclamation Exit For End If Next j Count3 = 2 Count2 = Count2+ 1 End If Next i Exit Sub Message : MsgBox "Enter a Valid Cell Reference as the Starting Cell.", vbExclamation End Sub
⧪ Étape 5 : Écriture du code pour l'exécution du UserForm
Enfin, insérez un nouveau Module de la Barre d'outils VBA et insérez-y le code suivant.
Sub Run_UserForm() UserForm1.Caption = "Filtering Cells that Contain Values" UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleStyle UserForm1.ListBox2.ListStyle = fmListStyleOption UserForm1.ListBox3.BorderStyle = fmBorderStyleSingle UserForm1.ListBox3.ListStyle = fmListStyleOption For i = 1 ToSelection.Columns.Count UserForm1.ListBox1.AddItem Selection.Cells(1, i) UserForm1.ListBox2.AddItem Selection.Cells(1, i) Next i UserForm1.ListBox1.MultiSelect = fmMultiSelectMulti UserForm1.ListBox3.AddItem "Any Value" UserForm1.ListBox3.AddItem "Specific value" UserForm1.Label4.Visible = False UserForm1.TextBox1.Visible = False Load UserForm1 UserForm1.Show End Sub
⧪ Étape 6 : Exécution du UserForm (le résultat final)
Votre Formulaire utilisateur est maintenant prêt à être utilisé. Sélectionnez l'ensemble de données dans la feuille de travail ( B3:E13 ici) (y compris le En-têtes ) et exécutez le Macro appelé Exécuter_Formulaire d'utilisateur .
Le site Formulaire utilisateur sera chargé dans la feuille de travail. À partir de l'onglet Colonne de recherche j'ai sélectionné Physique et Mathématiques parce que je veux obtenir les noms des étudiants qui sont apparus dans la section Physique et Mathématiques examens.
De la Colonne de retour j'ai sélectionné Nom de l'élève parce que je veux obtenir les noms des étudiants.
Et de la Toute valeur ou valeur spécifique j'ai sélectionné Toute valeur .
Enfin, dans le Cellule de départ boîte, j'ai mis G3 .
Cliquez ensuite sur OK Vous obtiendrez les noms des étudiants qui sont apparus dans Physique et Mathématiques examens à partir de la cellule G3 .
Si vous aviez choisi Valeur spécifique de la Toute valeur ou valeur spécifique table, vous auriez obtenu un autre TextBox pour entrer la valeur spécifique.
Ici, je suis entré 100 .
Cliquez sur OK . Et vous aurez les étudiants qui ont eu 100 sur Physique et Chimie .
Les choses à retenir
Nous avons utilisé un tableau à deux dimensions pour renvoyer les noms des élèves dans le fichier Fonction définie par l'utilisateur décrit dans l'exemple 2 .