Πίνακας περιεχομένων
Το σεμινάριο παρέχει μια σειρά από παραδείγματα τύπων "Excel if contains" που δείχνουν πώς να επιστρέψετε κάτι σε μια άλλη στήλη εάν ένα κελί-στόχος περιέχει μια απαιτούμενη τιμή, πώς να κάνετε αναζήτηση με μερική αντιστοίχιση και να ελέγχετε πολλαπλά κριτήρια με λογική OR καθώς και AND.
Μια από τις πιο συνηθισμένες εργασίες στο Excel είναι ο έλεγχος του κατά πόσον ένα κελί περιέχει μια τιμή ενδιαφέροντος. Τι είδους τιμή μπορεί να είναι αυτή; Απλά οποιοδήποτε κείμενο ή αριθμός, συγκεκριμένο κείμενο ή οποιαδήποτε τιμή (όχι κενό κελί).
Υπάρχουν διάφορες παραλλαγές του τύπου "Αν το κελί περιέχει" στο Excel, ανάλογα με το ποιες ακριβώς τιμές θέλετε να βρείτε. Γενικά, θα χρησιμοποιήσετε τη συνάρτηση IF για να κάνετε έναν λογικό έλεγχο και να επιστρέψετε μια τιμή όταν ικανοποιείται η συνθήκη (το κελί περιέχει) ή/και μια άλλη τιμή όταν δεν ικανοποιείται η συνθήκη (το κελί δεν περιέχει). Τα παρακάτω παραδείγματα καλύπτουν τα πιο συχνά σενάρια.
Εάν το κελί περιέχει οποιαδήποτε τιμή, τότε
Για αρχή, ας δούμε πώς θα βρούμε τα κελιά που περιέχουν οτιδήποτε: οποιοδήποτε κείμενο, αριθμό ή ημερομηνία. Για το σκοπό αυτό, θα χρησιμοποιήσουμε έναν απλό τύπο IF που ελέγχει για μη κενά κελιά.
IF( κύτταρο "", value_to_return , "")Για παράδειγμα, για να επιστρέψετε την ένδειξη "Δεν είναι κενό" στη στήλη Β εάν το κελί της στήλης Α στην ίδια γραμμή περιέχει οποιαδήποτε τιμή, εισάγετε τον ακόλουθο τύπο στη στήλη Β2 και, στη συνέχεια, κάνετε διπλό κλικ στο μικρό πράσινο τετράγωνο στην κάτω δεξιά γωνία για να αντιγράψετε τον τύπο προς τα κάτω στη στήλη:
=IF(A2"", "Not blank", "")
Το αποτέλεσμα θα μοιάζει με αυτό:
Αν το κελί περιέχει κείμενο, τότε
Αν θέλετε να βρείτε μόνο κελιά με τιμές κειμένου αγνοώντας αριθμούς και ημερομηνίες, τότε χρησιμοποιήστε το IF σε συνδυασμό με τη συνάρτηση ISTEXT. Εδώ είναι ο γενικός τύπος για να επιστρέψετε κάποια τιμή σε ένα άλλο κελί αν ένα κελί-στόχος περιέχει οποιοδήποτε κείμενο :
IF(ISTEXT( κύτταρο ), value_to_return , "")Ας υποθέσουμε ότι θέλετε να εισαγάγετε τη λέξη "ναι" στη στήλη Β, αν ένα κελί στη στήλη Α περιέχει κείμενο. Για να το κάνετε αυτό, τοποθετήστε τον ακόλουθο τύπο στο Β2:
=IF(ISTEXT(A2), "Ναι", "")
Αν το κελί περιέχει αριθμό, τότε
Με παρόμοιο τρόπο, μπορείτε να προσδιορίσετε κελιά με αριθμητικές τιμές (αριθμούς και ημερομηνίες). Για το σκοπό αυτό, χρησιμοποιήστε τη συνάρτηση IF σε συνδυασμό με τη συνάρτηση ISNUMBER:
IF(ISNUMBER( κύτταρο ), value_to_return , "")Ο ακόλουθος τύπος επιστρέφει "ναι" στη στήλη Β εάν ένα αντίστοιχο κελί στη στήλη Α περιέχει οποιονδήποτε αριθμό:
=IF(ISNUMBER(A2), "Ναι", "")
Εάν το κελί περιέχει συγκεκριμένο κείμενο
Η εύρεση κελιών που περιέχουν συγκεκριμένο κείμενο (ή αριθμούς ή ημερομηνίες) είναι εύκολη. Γράφετε έναν κανονικό τύπο IF που ελέγχει αν ένα κελί-στόχος περιέχει το επιθυμητό κείμενο και πληκτρολογείτε το κείμενο που θέλετε να επιστρέψετε στο πεδίο value_if_true επιχείρημα.
IF( κύτταρο =" κείμενο ", value_to_return , "")Για παράδειγμα, για να μάθετε αν το κελί A2 περιέχει "μήλα", χρησιμοποιήστε αυτόν τον τύπο:
=IF(A2="μήλα", "Ναι", "")
Εάν το κελί δεν περιέχει συγκεκριμένο κείμενο
Αν θέλετε το αντίθετο αποτέλεσμα, δηλαδή να επιστρέψετε κάποια τιμή σε μια άλλη στήλη αν ένα κελί-στόχος δεν περιέχει το καθορισμένο κείμενο ("μήλα"), τότε κάντε ένα από τα εξής.
Παρέχετε μια κενή συμβολοσειρά ("") στο πεδίο value_if_true όρισμα, και το κείμενο που θα επιστραφεί στο value_if_false επιχείρημα:
=IF(A2="μήλα", "", "Όχι μήλα")
Ή, βάλτε τον τελεστή "όχι ίσο με" στο logical_test και το κείμενο που θα επιστρέψει σε value_if_true:
=IF(A2 "μήλα", "Όχι μήλα", "")
Με οποιονδήποτε τρόπο, ο τύπος θα παράγει αυτό το αποτέλεσμα:
Εάν το κελί περιέχει κείμενο: τύπος με ευαισθησία στη πεζότητα
Για να αναγκάσετε τον τύπο σας να κάνει διάκριση μεταξύ κεφαλαίων και πεζών χαρακτήρων, χρησιμοποιήστε τη συνάρτηση EXACT που ελέγχει αν δύο συμβολοσειρές κειμένου είναι ακριβώς ίσες, συμπεριλαμβανομένης της πεζής και της πεζής γραμματοσειράς:
=IF(EXACT(A2, "APPLES"), "Yes", "")
Μπορείτε επίσης να εισαγάγετε τη συμβολοσειρά κειμένου του μοντέλου σε κάποιο κελί (π.χ. στο C1), να καθορίσετε την αναφορά του κελιού με το σύμβολο $ ($C$1) και να συγκρίνετε το κελί-στόχο με αυτό το κελί:
=IF(EXACT(A2,$C$1), "Yes", "")
Εάν το κελί περιέχει συγκεκριμένη συμβολοσειρά κειμένου (μερική αντιστοίχιση)
Τελειώσαμε με τις τετριμμένες εργασίες και προχωράμε σε πιο δύσκολες και ενδιαφέρουσες :) Σε αυτό το παράδειγμα, χρειάζονται τρεις διαφορετικές συναρτήσεις για να μάθουμε αν ένας συγκεκριμένος χαρακτήρας ή μια υποομάδα είναι μέρος του περιεχομένου του κελιού:
IF(ISNUMBER(SEARCH(" κείμενο" , κύτταρο )), value_to_return ,"")Δουλεύοντας από μέσα προς τα έξω, η φόρμουλα έχει ως εξής:
- Η συνάρτηση SEARCH αναζητά μια συμβολοσειρά κειμένου και, αν η συμβολοσειρά βρεθεί, επιστρέφει τη θέση του πρώτου χαρακτήρα, διαφορετικά το σφάλμα #VALUE!.
- Η συνάρτηση ISNUMBER ελέγχει εάν η αναζήτηση ήταν επιτυχής ή αποτυχημένη. Εάν η αναζήτηση επέστρεψε οποιονδήποτε αριθμό, η ISNUMBER επιστρέφει TRUE. Εάν η αναζήτηση οδήγησε σε σφάλμα, η ISNUMBER επιστρέφει FALSE.
- Τέλος, η συνάρτηση IF επιστρέφει την καθορισμένη τιμή για τα κελιά που έχουν TRUE στο λογικό τεστ, ενώ σε αντίθετη περίπτωση μια κενή συμβολοσειρά ("").
Και τώρα, ας δούμε πώς λειτουργεί αυτός ο γενικός τύπος σε πραγματικά φύλλα εργασίας.
Αν το κελί περιέχει συγκεκριμένο κείμενο, βάλτε μια τιμή σε ένα άλλο κελί
Ας υποθέσουμε ότι έχετε έναν κατάλογο παραγγελιών στη στήλη Α και θέλετε να βρείτε παραγγελίες με ένα συγκεκριμένο αναγνωριστικό, ας πούμε "A-". Η εργασία μπορεί να επιτευχθεί με τον ακόλουθο τύπο:
=IF(ISNUMBER(SEARCH("A-",A2)), "Valid","")
Αντί να κωδικοποιήσετε τη συμβολοσειρά στον τύπο, μπορείτε να την εισαγάγετε σε ένα ξεχωριστό κελί (E1) και να αναφέρετε το συγκεκριμένο κελί στον τύπο σας:
=IF(ISNUMBER(SEARCH($E$1,A2)), "Valid","")
Για να λειτουργήσει σωστά ο τύπος, βεβαιωθείτε ότι έχετε κλειδώσει τη διεύθυνση του κελιού που περιέχει τη συμβολοσειρά με το σύμβολο $ (απόλυτη αναφορά κελιού).
Αν το κελί περιέχει συγκεκριμένο κείμενο, αντιγράψτε το σε άλλη στήλη
Αν θέλετε να αντιγράψετε τα περιεχόμενα των έγκυρων κελιών κάπου αλλού, απλά δώστε τη διεύθυνση του κελιού που αξιολογήθηκε (A2) στην εντολή value_if_true επιχείρημα:
=IF(ISNUMBER(SEARCH($E$1,A2)),A2,"")
Το παρακάτω στιγμιότυπο οθόνης δείχνει τα αποτελέσματα:
Εάν το κελί περιέχει συγκεκριμένο κείμενο: τύπος με ευαισθησία στην πεζότητα
Και στα δύο παραπάνω παραδείγματα, οι τύποι δεν λαμβάνουν υπόψη την πεζότητα. Σε περιπτώσεις που εργάζεστε με δεδομένα ευαίσθητα στην πεζότητα, χρησιμοποιήστε τη λειτουργία FIND αντί της SEARCH για να διακρίνετε την πεζότητα των χαρακτήρων.
Για παράδειγμα, ο ακόλουθος τύπος θα εντοπίσει μόνο παραγγελίες με κεφαλαίο "A-" αγνοώντας τα πεζά "a-".
=IF(ISNUMBER(FIND("A-",A2)), "Valid","")
Αν το κελί περιέχει μία από πολλές συμβολοσειρές κειμένου (λογική OR)
Για να εντοπίσετε τα κελιά που περιέχουν τουλάχιστον ένα από τα πολλά πράγματα που αναζητάτε, χρησιμοποιήστε έναν από τους ακόλουθους τύπους.
Τύπος IF OR ISNUMBER SEARCH
Η πιο προφανής προσέγγιση θα ήταν να ελέγξετε για κάθε υποσέλιδο ξεχωριστά και η συνάρτηση OR να επιστρέφει TRUE στη λογική δοκιμή του τύπου IF αν βρεθεί τουλάχιστον ένα υποσέλιδο:
IF(OR(ISNUMBER(SEARCH(" string1 ", κύτταρο )), ISNUMBER(SEARCH(" string2 ", κύτταρο ))), value_to_return , "")Ας υποθέσουμε ότι έχετε μια λίστα με SKUs στη στήλη Α και θέλετε να βρείτε εκείνες που περιλαμβάνουν είτε "φόρεμα" είτε "φούστα". Μπορείτε να το κάνετε χρησιμοποιώντας τον ακόλουθο τύπο:
=IF(OR(ISNUMBER(SEARCH("φόρεμα",A2)),ISNUMBER(SEARCH("φούστα",A2))), "Valid ","")
Ο τύπος λειτουργεί αρκετά καλά για μερικά στοιχεία, αλλά σίγουρα δεν είναι ο σωστός τρόπος αν θέλετε να ελέγξετε πολλά πράγματα. Σε αυτή την περίπτωση, μια καλύτερη προσέγγιση θα ήταν η χρήση της συνάρτησης SUMPRODUCT, όπως φαίνεται στο επόμενο παράδειγμα.
Τύπος αναζήτησης SUMPRODUCT ISNUMBER SEARCH
Αν έχετε να κάνετε με πολλαπλές συμβολοσειρές κειμένου, η αναζήτηση για κάθε συμβολοσειρά ξεχωριστά θα έκανε τον τύπο σας πολύ μεγάλο και δυσανάγνωστο. Μια πιο κομψή λύση θα ήταν να ενσωματώσετε τον συνδυασμό ISNUMBER SEARCH στη συνάρτηση SUMPRODUCT και να δείτε αν το αποτέλεσμα είναι μεγαλύτερο του μηδενός:
SUMPRODUCT(--ISNUMBER(SEARCH( χορδές , κύτταρο )))>0Για παράδειγμα, για να διαπιστώσετε αν το A2 περιέχει κάποια από τις λέξεις που έχουν εισαχθεί στα κελιά D2:D4, χρησιμοποιήστε αυτόν τον τύπο:
=SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0
Εναλλακτικά, μπορείτε να δημιουργήσετε μια ονομασμένη περιοχή που περιέχει τις συμβολοσειρές προς αναζήτηση ή να δώσετε τις λέξεις απευθείας στον τύπο:
=SUMPRODUCT(--ISNUMBER(SEARCH({"φόρεμα", "φούστα", "τζιν"},A2)))>0
Όπως και να έχει, το αποτέλεσμα θα είναι παρόμοιο με αυτό:
Για να κάνετε την έξοδο πιο φιλική προς το χρήστη, μπορείτε να ενσωματώσετε τον παραπάνω τύπο στη συνάρτηση IF και να επιστρέψετε το δικό σας κείμενο αντί για τις τιμές TRUE/FALSE:
=IF(SUMPRODUCT(--ISNUMBER(SEARCH($D$2:$D$4,A2)))>0, "Valid", "")
Πώς λειτουργεί αυτή η φόρμουλα
Στον πυρήνα, χρησιμοποιείτε το ISNUMBER μαζί με το SEARCH όπως εξηγήθηκε στο προηγούμενο παράδειγμα. Σε αυτή την περίπτωση, τα αποτελέσματα της αναζήτησης αναπαρίστανται με τη μορφή ενός πίνακα όπως {TRUE;FALSE;FALSE}. Αν ένα κελί περιέχει τουλάχιστον μία από τις καθορισμένες υποομάδες, θα υπάρχει TRUE στον πίνακα. Ο διπλός μοναδιαίος τελεστής (--) εξαναγκάζει τις τιμές TRUE / FALSE σε 1 και 0, αντίστοιχα, και παραδίδει έναν πίνακα όπως{1;0;0}. Τέλος, η συνάρτηση SUMPRODUCT αθροίζει τους αριθμούς και επιλέγουμε τα κελιά όπου το αποτέλεσμα είναι μεγαλύτερο του μηδενός.
Αν το κελί περιέχει πολλές συμβολοσειρές (λογική AND)
Σε περιπτώσεις που θέλετε να βρείτε κελιά που περιέχουν όλες τις καθορισμένες συμβολοσειρές κειμένου, χρησιμοποιήστε τον ήδη γνωστό συνδυασμό ISNUMBER SEARCH σε συνδυασμό με IF AND:
IF(AND(ISNUMBER(SEARCH(" string1 ", κύτταρο )), ISNUMBER(SEARCH(" string2 ", κύτταρο ))), value_to_return ,"")Για παράδειγμα, μπορείτε να βρείτε SKUs που περιέχουν τόσο "φόρεμα" όσο και "μπλε" με αυτόν τον τύπο:
=IF(AND(ISNUMBER(SEARCH("dress",A2)),ISNUMBER(SEARCH("blue",A2))), "Valid ","")
Εναλλακτικά, μπορείτε να πληκτρολογήσετε τις συμβολοσειρές σε ξεχωριστά κελιά και να αναφέρετε αυτά τα κελιά στον τύπο σας:
=IF(AND(ISNUMBER(SEARCH($D$2,A2)),ISNUMBER(SEARCH($E$2,A2))), "Valid ","")
Ως εναλλακτική λύση, μπορείτε να μετρήσετε τις εμφανίσεις κάθε συμβολοσειράς και να ελέγξετε αν κάθε μέτρηση είναι μεγαλύτερη από το μηδέν:
=IF(AND(COUNTIF(A2, "*φόρεμα*")>0,COUNTIF(A2, "*μπλε*")>0), "Valid","")
Το αποτέλεσμα θα είναι ακριβώς όπως φαίνεται στο παραπάνω στιγμιότυπο.
Πώς να επιστρέψετε διαφορετικά αποτελέσματα με βάση την τιμή του κελιού
Σε περίπτωση που θέλετε να συγκρίνετε κάθε κελί στη στήλη-στόχο με μια άλλη λίστα στοιχείων και να επιστρέφετε μια διαφορετική τιμή για κάθε ταύτιση, χρησιμοποιήστε μια από τις ακόλουθες προσεγγίσεις.
Ενσωματωμένα IFs
Η λογική του ένθετου τύπου IF είναι απλή: χρησιμοποιείτε μια ξεχωριστή συνάρτηση IF για να ελέγξετε κάθε συνθήκη και επιστρέφετε διαφορετικές τιμές ανάλογα με τα αποτελέσματα αυτών των ελέγχων.
IF( κύτταρο =" lookup_text1 ", " επιστροφή _ text1 ", IF( κύτταρο =" lookup_text2 ", " επιστροφή _ text2 ", IF( κύτταρο =" lookup_text3 ", " επιστροφή _ text3 ", "")))Ας υποθέσουμε ότι έχετε μια λίστα με στοιχεία στη στήλη Α και θέλετε να έχετε τις συντομογραφίες τους στη στήλη Β. Για να το κάνετε αυτό, χρησιμοποιήστε τον ακόλουθο τύπο:
=IF(A2="μήλο", "Ap", IF(A2="αβοκάντο", "Av", IF(A2="μπανάνα", "B", IF(A2="λεμόνι", "L", ""))))
Για πλήρεις λεπτομέρειες σχετικά με τη σύνταξη και τη λογική του εμφωλευμένου IF, ανατρέξτε στην ενότητα Ενσωματωμένο IF του Excel - πολλαπλές συνθήκες σε έναν μόνο τύπο.
Τύπος αναζήτησης
Αν αναζητάτε έναν πιο συμπαγή και καλύτερα κατανοητό τύπο, χρησιμοποιήστε τη συνάρτηση LOOKUP με τις τιμές αναζήτησης και επιστροφής να παρέχονται ως σταθερές κάθετου πίνακα:
LOOKUP( κύτταρο , {" lookup_text1 ";" lookup_text2 ";" lookup_text3 ";...}, {" επιστροφή _ text1 ";" επιστροφή _ text2 ";" επιστροφή _ text3 ";...})Για ακριβή αποτελέσματα, φροντίστε να αναφέρετε τις τιμές αναζήτησης στο αλφαβητική σειρά , από το Α έως το Ω.
=LOOKUP(A2,{"apple";"avocado";"banana";"lemon"},{"Ap";"Av";"B";"L"})
Σε σύγκριση με τις εμφωλευμένες IF, ο τύπος Lookup έχει ένα ακόμη πλεονέκτημα - κατανοεί το χαρακτήρες μπαλαντέρ και επομένως μπορεί να εντοπίσει μερικές αντιστοιχίες.
Για παράδειγμα, αν η στήλη Α περιέχει μερικά είδη μπανάνας, μπορείτε να αναζητήσετε το "*μπανάνα*" και να έχετε την ίδια συντομογραφία ("Β") που επιστρέφεται για όλα αυτά τα κελιά:
=LOOKUP(A2,{"apple";"avocado";"*banana*";"lemon"},{"Ap";"Av";"B";"L"})
Για περισσότερες πληροφορίες, ανατρέξτε στο θέμα Τύπος αναζήτησης ως εναλλακτική λύση για τις εμφωλευμένες IF.
Τύπος Vlookup
Όταν εργάζεστε με ένα μεταβλητό σύνολο δεδομένων, μπορεί να είναι πιο βολικό να εισάγετε μια λίστα αντιστοιχιών σε ξεχωριστά κελιά και να τις ανακτάτε χρησιμοποιώντας έναν τύπο Vlookup, π.χ.:
=VLOOKUP(A2, $D$2:$E$5, 2,FALSE )
Για περισσότερες πληροφορίες, ανατρέξτε στο σεμινάριο VLOOKUP του Excel για αρχάριους.
Με αυτόν τον τρόπο μπορείτε να ελέγξετε αν ένα κελί περιέχει κάποια τιμή ή συγκεκριμένο κείμενο στο Excel. Την επόμενη εβδομάδα, θα συνεχίσουμε να εξετάζουμε τις φόρμουλες του Excel Αν το κελί περιέχει και θα μάθουμε πώς να μετράμε ή να αθροίζουμε τα σχετικά κελιά, να αντιγράφουμε ή να αφαιρούμε ολόκληρες γραμμές που περιέχουν αυτά τα κελιά και πολλά άλλα. Παραμείνετε συντονισμένοι!
Βιβλίο ασκήσεων
Excel Εάν το κελί περιέχει - παραδείγματα τύπων (.xlsx αρχείο)