Excel VBA: Εάν το κελί περιέχει τιμή, τότε επιστρέψτε μια καθορισμένη έξοδο

  • Μοιραστείτε Αυτό
Hugh West

Σε αυτό το άρθρο, θα σας δείξω πώς μπορείτε να αναλύσετε την κατάσταση στο Excel. VBA αν ένα κελί περιέχει μια τιμή. Θα μάθετε να αναλύετε την κατάσταση τόσο για οποιαδήποτε τιμή όσο και για μια συγκεκριμένη τιμή.

Ανάλυση Excel 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 

Κατεβάστε το βιβλίο ασκήσεων

Κατεβάστε αυτό το τετράδιο ασκήσεων για να εξασκηθείτε ενώ διαβάζετε αυτό το άρθρο.

VBA Εάν το κελί περιέχει τιμή Then.xlsm

Ανάλυση Excel VBA: Εάν το κελί περιέχει μια τιμή, τότε επιστρέψτε τις εξόδους (Ανάλυση βήμα προς βήμα)

Εδώ έχουμε ένα σύνολο δεδομένων με τους βαθμούς ορισμένων μαθητών στη Φυσική, τη Χημεία και τα Μαθηματικά σε ένα σχολείο που ονομάζεται Νηπιαγωγείο Ηλιοτρόπιο.

Τα κενά κελιά σημαίνουν ότι ο μαθητής δεν εμφανίστηκε, δηλαδή απουσίαζε στη συγκεκριμένη εξέταση. Ας αναλύσουμε τώρα την κατάσταση, αν ένα κελί περιέχει τιμή ή όχι, με αυτό το σύνολο δεδομένων.

⧪ Βήμα 1: Δήλωση του κελιού

Αρχικά, πρέπει να δηλώσουμε το κελί του οποίου την τιμή θέλουμε να αναλύσουμε. Ας αναλύσουμε αν η Jennifer Marlo εμφανίστηκε στις εξετάσεις Φυσικής ή όχι.

Επομένως, πρέπει να ελέγξουμε αν το κύτταρο C12 περιέχει μια τιμή ή όχι.

Για να το κάνουμε αυτό, πρέπει πρώτα να δηλώσουμε το κελί C12 .

Η γραμμή κώδικα για να επιτευχθεί αυτό θα είναι:

 Set Cell = Range("C12").Cells(1, 1) 

⧪ Βήμα 2: Έλεγχος αν το κελί περιέχει μια τιμή (συμπεριλαμβανομένης μιας συγκεκριμένης τιμής)

Στη συνέχεια, πρέπει να ελέγξουμε αν το κελί περιέχει τιμή ή όχι. Θα το εκτελέσουμε αυτό χρησιμοποιώντας ένα Εάν η συνθήκη Η γραμμή του κώδικα θα είναι:

 If Cell.Value "" Then 

Αυτός ο κώδικας θα εκτελεστεί αν το κελί περιέχει οποιαδήποτε τιμή. Για να ελέγξετε μια τιμή (Για παράδειγμα, αν περιέχει 100 ή όχι), χρησιμοποιήστε τη συγκεκριμένη τιμή με ένα Ισοδύναμο με σύμβολο.

 If Cell.Value "" Then 

⧪ Βήμα 3: Κατανομή της εργασίας

Στη συνέχεια, πρέπει να ορίσετε μια εργασία που θα εκτελείται εάν το κελί περιέχει μια τιμή (ή μια συγκεκριμένη τιμή).

Εδώ, θέλουμε να εμφανίσουμε το μήνυμα "Η Jennifer Marlo εμφανίστηκε στις εξετάσεις Φυσικής." . Έτσι η γραμμή κώδικα θα είναι:

 MsgBox "Η Jennifer Marlo εμφανίστηκε στις εξετάσεις φυσικής." 

⧪ Βήμα 4: Τερματισμός του μπλοκ If

Τέλος, πρέπει να δηλώσετε το τέλος του μπλοκ If.

 End If 

Έτσι η πλήρης VBA ο κωδικός θα είναι:

⧭ Κώδικας 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 

⧭ Έξοδος:

Εκτελέστε αυτόν τον κώδικα κάνοντας κλικ στο Εκτέλεση Sub/UserForm στη γραμμή εργαλείων.

Θα εμφανιστεί το μήνυμα "Η Jennifer Marlo εμφανίστηκε στις εξετάσεις Φυσικής." ως το κύτταρο C12 περιέχει μια τιμή, της 50 .

Παραδείγματα που αφορούν το Εάν το κελί περιέχει μια τιμή, τότε μια καθορισμένη έξοδος με το Excel VBA

Μάθαμε να αναλύουμε αν ένα κελί περιέχει μια τιμή ή όχι στο VBA Τώρα, ας εξερευνήσουμε μερικά παραδείγματα για να γίνει η κατανόηση σαφής.

1. Ανάπτυξη μιας μακροεντολής για το φιλτράρισμα μιας τιμής Εάν το αντίστοιχο κελί περιέχει οποιαδήποτε τιμή, τότε στο Excel VBA

Ας αναπτύξουμε ένα Μάκρο για να φιλτράρει τους μαθητές που συμμετείχαν σε κάθε μία από τις εξετάσεις.

Δηλαδή, πρέπει να ελέγξουμε τα κελιά που περιέχουν τους βαθμούς κάθε θέματος και να δούμε αν περιέχουν τιμή ή όχι.

Αν ναι, τότε πρέπει να βρούμε το όνομα του αντίστοιχου μαθητή.

Η πλήρης VBA ο κώδικας για να επιτευχθεί αυτό θα είναι:

⧭ Κώδικας 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 

⧭ Έξοδος:

Επιλέξτε το σύνολο δεδομένων (συμπεριλαμβανομένου του Κεφαλίδες ) και τρέξτε αυτό Μάκρο .

Αρχικά, θα σας ζητηθεί να εισαγάγετε την αναφορά του πρώτου κελιού στο οποίο θέλετε τα φιλτραρισμένα δεδομένα. Εγώ έχω εισαγάγει G3 .

Στη συνέχεια κάντε κλικ στο OK . Θα λάβετε τα ονόματα των μαθητών που εμφανίστηκαν σε κάθε μία από τις εξετάσεις (συμπεριλαμβανομένων των Κεφαλίδες ) σε ένα νέο σύνολο δεδομένων με αφετηρία το κελί G3 .

2. Δημιουργία μιας συνάρτησης που ορίζεται από το χρήστη για την ταξινόμηση μιας τιμής εάν το αντίστοιχο κελί περιέχει μια συγκεκριμένη τιμή τότε στο Excel VBA

Τώρα θα δημιουργήσουμε μια συνάρτηση που ορίζεται από το χρήστη και θα επιστρέφει τα ονόματα των μαθητών που πήραν συγκεκριμένο βαθμό σε κάθε ένα από τα μαθήματα.

Η διαδικασία είναι σχεδόν η ίδια με την παραπάνω. Πρέπει να ελέγξουμε τα κελιά που περιέχουν τους βαθμούς κάθε θέματος και να δούμε αν είναι ίσοι με μια συγκεκριμένη τιμή ή όχι.

Αν ναι, τότε θα επιστρέψουμε το όνομα του αντίστοιχου μαθητή.

Το VBA ο κωδικός θα είναι:

⧭ Κώδικας 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 

⧭ Έξοδος:

Ο κώδικας δημιουργεί μια συνάρτηση που ονομάζεται Κελιά_με_τιμές που δέχεται δύο ορίσματα, ένα Εύρος και ένα Αξία .

Ας βρούμε τους μαθητές που πήραν 100 σε κάθε ένα από τα θέματα χρησιμοποιώντας αυτή τη συνάρτηση.

Επιλέξτε μια περιοχή κελιών στο φύλλο εργασίας σας και εισαγάγετε αυτή τη συνάρτηση στο πρώτο κελί της περιοχής:

=Cells_with_Values(B3:E13,100)

[Εδώ B3:E3 είναι το σύνολο των δεδομένων μου (συμπεριλαμβανομένου του Κεφαλίδες ) και 100 είναι η δική μου τιμή αντιστοίχισης. Εσύ χρησιμοποίησε τη δική σου.]

Στη συνέχεια, πατήστε CTRL + SHIFT + ENTER ( Τύπος συστοιχίας ). Θα επιστρέψει έναν πίνακα που αποτελείται από τα ονόματα των μαθητών που πήραν 100 σε κάθε μάθημα, συμπεριλαμβανομένου του Κεφαλίδες .

3. Ανάπτυξη ενός UserForm για την εξαγωγή μιας τιμής εάν το αντίστοιχο κελί περιέχει οποιαδήποτε τιμή (ή μια συγκεκριμένη τιμή) στο Excel VBA

Τέλος, θα αναπτύξουμε ένα UserForm για την εξαγωγή των ονομάτων των μαθητών που εμφανίστηκαν (ή πήραν συγκεκριμένους βαθμούς) σε ορισμένες συγκεκριμένες εξετάσεις.

⧪ Βήμα 1: Άνοιγμα της Φόρμας Χρήστη

Πηγαίνετε στο Εισαγωγή> UserForm στην επιλογή VBA editor για να ανοίξετε ένα νέο UserForm Ένα νέο UserForm που ονομάζεται UserForm1 θα ανοίξει.

⧪ Βήμα 2: Σύρσιμο εργαλείων στη φόρμα χρήστη

Εκτός από το UserForm , θα πάρετε το Εργαλειοθήκη Μετακινήστε τον κέρσορα πάνω από το Εργαλειοθήκη και σύρετε 4 ετικέτες (Label1, Label2, Label3, Label4) και 3 ListBoxes (ListBox1, ListBox2, ListBox3) και ένα TextBox (TextBox1) σε ορθογώνιο σχήμα πάνω από το UserForm .

Στη συνέχεια σύρετε ένα άλλο Ετικέτα (Label5) και ένα TextBox (TextBox2) στην κάτω αριστερή γωνία του UserForm .

Τέλος, σύρετε ένα CommandButton (CommandButton1) στην κάτω δεξιά γωνία.

Αλλάξτε τις ενδείξεις των Ετικέτες στο Στήλη αναζήτησης , Στήλη επιστροφής , Οποιαδήποτε τιμή ή συγκεκριμένη τιμή , Αξία, και Κύτταρο εκκίνησης.

Επίσης, αλλάξτε την εμφάνιση του CommandButton1 στο OK .

⧪ Βήμα 3: Γράφοντας κώδικα για το ListBox3

Κάντε διπλό κλικ στο ListBox3 . A Ιδιωτική υποδιαδικασία που ονομάζεται ListBox3_Click Εισάγετε εκεί τον ακόλουθο κώδικα.

 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 

⧪ Βήμα 4: Γράφοντας κώδικα για το CommandButton1

Στη συνέχεια, κάντε διπλό κλικ στο CommandButton1 . Ιδιωτική υποδιαδικασία που ονομάζεται CommandButton1_Click Εισάγετε εκεί τον ακόλουθο κώδικα.

 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 If 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 if 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 ThenIf 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 

⧪ Βήμα 5: Συγγραφή κώδικα για την εκτέλεση της Φόρμας Χρήστη

Τέλος, εισάγετε ένα νέο Ενότητα από το Γραμμή εργαλείων VBA και εισάγετε εκεί τον ακόλουθο κώδικα.

 Sub Run_UserForm() UserForm1.Caption = "Φιλτράρισμα κελιών που περιέχουν τιμές" UserForm1.ListBox1.BorderStyle = fmBorderStyleSingle UserForm1.ListBox1.ListStyle = fmListStyleOption UserForm1.ListBox2.BorderStyle = fmBorderStyleSingle 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 

⧪ Βήμα 6: Εκτέλεση του UserForm (Η τελική έξοδος)

Το σας UserForm είναι τώρα έτοιμο για χρήση. Επιλέξτε το σύνολο δεδομένων από το φύλλο εργασίας ( B3:E13 εδώ) (συμπεριλαμβανομένου του Κεφαλίδες ) και εκτελέστε το Μάκρο που ονομάζεται Run_UserForm .

Το UserForm θα φορτωθεί στο φύλλο εργασίας. Από το Στήλη αναζήτησης πίνακα, έχω επιλέξει Φυσική και Μαθηματικά , επειδή θέλω να πάρω τα ονόματα των μαθητών που εμφανίστηκαν στο Φυσική και Μαθηματικά εξετάσεις.

Από το Στήλη επιστροφής πίνακα, έχω επιλέξει Όνομα μαθητή , επειδή θέλω να πάρω τα ονόματα των μαθητών.

Και από το Οποιαδήποτε αξία ή συγκεκριμένη αξία πίνακα, έχω επιλέξει Οποιαδήποτε τιμή .

Τέλος, στο Κύτταρο εκκίνησης κουτί, έχω βάλει G3 .

Στη συνέχεια κάντε κλικ στο OK Θα λάβετε τα ονόματα των μαθητών που εμφανίστηκαν στο Φυσική και Μαθηματικά εξετάσεις ξεκινώντας από το κελί G3 .

Αν είχατε επιλέξει Ειδική αξία από το Οποιαδήποτε αξία ή συγκεκριμένη αξία πίνακα, θα είχατε ένα άλλο TextBox για να εισαγάγετε τη συγκεκριμένη τιμή.

Εδώ έχω εισάγει 100 .

Κάντε κλικ στο OK . Και θα πάρετε τους μαθητές που πήραν 100 στο Φυσική και Χημεία .

Πράγματα που πρέπει να θυμάστε

Χρησιμοποιήσαμε έναν δισδιάστατο πίνακα για να επιστρέψουμε τα ονόματα των μαθητών στο Λειτουργία που ορίζεται από τον χρήστη που περιγράφεται στο παράδειγμα 2 .

Ο Hugh West είναι ένας εξαιρετικά έμπειρος εκπαιδευτής και αναλυτής του Excel με πάνω από 10 χρόνια εμπειρίας στον κλάδο. Είναι κάτοχος πτυχίου Λογιστικής και Χρηματοοικονομικής και μεταπτυχιακού στη Διοίκηση Επιχειρήσεων. Ο Hugh έχει πάθος για τη διδασκαλία και έχει αναπτύξει μια μοναδική προσέγγιση διδασκαλίας που είναι εύκολο να ακολουθηθεί και να κατανοηθεί. Οι εξειδικευμένες γνώσεις του στο Excel έχουν βοηθήσει χιλιάδες φοιτητές και επαγγελματίες παγκοσμίως να βελτιώσουν τις δεξιότητές τους και να διαπρέψουν στην καριέρα τους. Μέσω του ιστολογίου του, ο Hugh μοιράζεται τις γνώσεις του με τον κόσμο, προσφέροντας δωρεάν μαθήματα Excel και διαδικτυακή εκπαίδευση για να βοηθήσει άτομα και επιχειρήσεις να αξιοποιήσουν πλήρως τις δυνατότητές τους.