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

Μπορείτε να κατεβάσετε αυτό το Πρότυπο VBA StrComp Excel εδώ - Πρότυπο VBA StrComp Excel

Παράδειγμα # 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 

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


$config[zx-auto] not found$config[zx-overlay] not found