VBA StrComp - Συγκρίνετε συμβολοσειρές στο VBA χρησιμοποιώντας τη συνάρτηση StrComp

Πίνακας περιεχομένων

Λειτουργία Excel VBA StrComp

Το VBA StrComp είναι μια ενσωματωμένη συνάρτηση που χρησιμοποιείται για να συγκρίνει εάν οι δύο τιμές συμβολοσειρών είναι ίδιες ή όχι. Ωστόσο, τα αποτελέσματα δεν είναι προεπιλεγμένα TRUE ή FALSE όπως στο φύλλο εργασίας, αλλά είναι διαφορετικό.

Πριν εξετάσουμε τα αποτελέσματα, επιτρέψτε μου να σας δείξω πρώτα τη σύνταξη της συνάρτησης StrComp.

  • String 1: Το String 1 είναι η πρώτη συμβολοσειρά ή τιμή που συγκρίνουμε.
  • String 2: Το String 2 είναι η δεύτερη συμβολοσειρά ή τιμή που συγκρίνουμε με το String 1 .
  • Σύγκριση: Μπορούμε να παρέχουμε τρεις επιλογές εδώ.
      • 0 = Δυαδική σύγκριση. Αυτό εκτελεί υπολογισμούς με διάκριση πεζών-κεφαλαίων. Για παράδειγμα, το "Hello" δεν είναι ίσο με το "HELLO" επειδή και οι δύο περιπτώσεις είναι διαφορετικές. Αυτή είναι η προεπιλεγμένη τιμή εάν αγνοήσετε αυτήν την παράμετρο. vbBinaryCompare
      • 1 = Σύγκριση κειμένου. Αυτή η επιλογή εκτελεί υπολογισμούς χωρίς κεφαλαία. Για παράδειγμα, το "Hello" είναι ίσο με το συμβάν "HELLO" αν και οι δύο περιπτώσεις είναι διαφορετικές. vbTextCompare
      • 2 = Σύγκριση πρόσβασης. Αυτό πραγματοποιεί σύγκριση βάσης δεδομένων.

Αποτελέσματα της συνάρτησης String Comparison (StrComp)

Όπως είπα όταν συγκρίνουμε δύο τιμές στο φύλλο εργασίας, έχουμε το αποτέλεσμα είτε TRUE είτε FALSE. Αλλά με τη λειτουργία σύγκρισης συμβολοσειρών VBA, τα αποτελέσματα δεν είναι τα ίδια.

  • Παίρνουμε μηδέν (0) όταν το String 1 είναι ίσο με το String 2
  • Παίρνουμε ένα (1) όταν το String 1 τιμή είναι μεγαλύτερη από το String 2 Αξίας .
  • Παίρνουμε μείον ένα (-1) όταν η τιμή συμβολοσειράς 1 είναι μικρότερη από τη συμβολοσειρά 2
  • Παίρνουμε NULL όταν η τιμή String 1 ή String 2 είναι NULL.

Παραδείγματα χρήσης της λειτουργίας VBA StrComp

Παράδειγμα # 1

Ας ξεκινήσουμε με ένα απλό παράδειγμα. Για παράδειγμα, θα συγκρίνουμε δύο τιμές, δηλαδή "Excel VBA" και "Excel VBA".

Κώδικας:

Sub StrComp_Example1 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Result of the StrComp formula FirstValue = "Excel VBA"' Εκχώρηση της συμβολοσειράς 1 τιμή SecondValue = "Excel VBA" 'Εκχωρήστε την τιμή String 2 Αποτέλεσμα = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Εφαρμογή συνάρτησης StrComp MsgBox Result 'Εμφάνιση του αποτελέσματος στο πλαίσιο μηνύματος End Sub

Όταν τρέχω αυτόν τον κωδικό, θα έχουμε το μηδέν (0) ως αποτέλεσμα, καθώς και οι τιμές String 1 και String 2 είναι ίδιες.

Παράδειγμα # 2

Τώρα θα αλλάξω τις περιπτώσεις των δύο λέξεων.

Συμβολοσειρά 1 = Excel Vba

Συμβολοσειρά 2 = Excel VBA

Κώδικας:

Sub StrComp_Example2 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Result of the StrComp formula FirstValue = "Excel Vba"' Εκχώρηση της συμβολοσειράς 1 τιμή SecondValue = "Excel VBA" 'Εκχωρήστε την τιμή String 2 Αποτέλεσμα = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Εφαρμογή συνάρτησης StrComp MsgBox Result 'Εμφάνιση του αποτελέσματος στο πλαίσιο μηνύματος End Sub

Όταν εκτελώ αυτόν τον κώδικα, θα λάβουμε 1 επειδή επειδή παρέχουμε το όρισμα Σύγκριση ως " vbBinaryCompare", θα ελέγξει για χαρακτήρες με κεφαλαία γράμματα.

Τώρα θα αλλάξω την επιλογή Σύγκριση από " vbBinaryCompare" σε " vbTextCompare"

Κώδικας:

Sub StrComp_Example3 () Dim FirstValue As String 'To Store String 1 value Dim SecondValue As String' To Store String 2 value Dim Result As String 'To Store Result of the StrComp formula FirstValue = "Excel Vba"' Εκχώρηση της συμβολοσειράς 1 τιμή SecondValue = "Excel VBA" 'Εκχωρήστε την τιμή String 2 Αποτέλεσμα = StrComp (FirstValue, SecondValue, vbTextCompare)' Εφαρμογή λειτουργίας StrComp MsgBox Result 'Εμφάνιση του αποτελέσματος στο πλαίσιο μηνύματος End Sub

Με αυτήν τη Σύγκριση, θα λάβουμε μηδέν (0) επειδή το vbaTextCompare αγνοεί τις λέξεις με κεφαλαία γράμματα.

Παράδειγμα # 3

Μελέτη περίπτωσης του VBA StrComp με συνθήκη IF

Ας υποθέσουμε ότι έχετε τα δεδομένα όπως η παρακάτω εικόνα.

Πρέπει να συγκρίνουμε τη συμβολοσειρά 1 με τη συμβολοσειρά 2 και να φτάσουμε στο αποτέλεσμα ως "ακριβές" εάν και τα δύο είναι τα ίδια, αλλιώς το αποτέλεσμα θα πρέπει να είναι "όχι ακριβές".

Ο παρακάτω κώδικας θα κάνει τη δουλειά για εμάς.

Κώδικας:

Sub StrComp_Example4 () Dim Result as String Dim I As Integer For i = 2 to 6 Result = StrComp (Cells (i, 1). Value, Cells (i, 2). Value) If Result = 0 Then Cells (i, 3) ). Value = "Ακριβής" Else Cells (i, 3). Value = "Not Exact" End if Next i End Sub

Όταν εκτελώ τον παραπάνω κώδικα VBA στο Excel, θα έχουμε το παρακάτω αποτέλεσμα.

Αν κοιτάξετε στο κελί C4, οι συμβολοσειρές 1 και οι συμβολοσειρές 2 είναι οι ίδιες, αλλά οι χαρακτήρες είναι πεζά και έτσι το αποτέλεσμα είναι "Όχι ακριβές" Για να ξεπεράσουμε αυτό το ζήτημα, πρέπει να παρέχουμε το Σύγκριση ως vbTextCompare.

Παρακάτω είναι ο τροποποιημένος κώδικας για να λάβετε το αποτέλεσμα ως "Ακριβής" για το κελί C4.

Κώδικας:

Sub StrComp_Example4 () Dim Result as String Dim I As Integer For i = 2 to 6 Result = StrComp (Cells (i, 1). Value, Cells (i, 2). Value, vbTextCompare) If Result = 0 Then Cells (i , 3). Value = "Exact" Else Cells (i, 3). Value = "Not Exact" End if Next i End Sub

Αυτός ο κωδικός θα επιστρέψει το παρακάτω αποτέλεσμα.

ενδιαφέροντα άρθρα...