VBA StrComp - Comparați șirurile în VBA folosind funcția StrComp

Funcția Excel VBA StrComp

VBA StrComp este o funcție încorporată utilizată pentru a compara dacă cele două valori ale șirurilor sunt aceleași sau nu. Cu toate acestea, rezultatele nu sunt implicite ADEVĂRATE sau FALSE ca în foaia de lucru, ci mai degrabă sunt diferite.

Înainte să analizăm rezultatele, permiteți-mi să vă arăt mai întâi sintaxa funcției StrComp.

  • Șirul 1: Șirul 1 este primul șir sau valoare pe care o comparăm.
  • Șirul 2: Șirul 2 este al doilea șir sau valoare pe care o comparăm cu șirul 1 .
  • Comparați: Putem furniza trei opțiuni aici.
      • 0 = Comparație binară. Aceasta efectuează calcule sensibile la majuscule. De exemplu, „Bună ziua” nu este egal cu „Bună ziua”, deoarece ambele cuvinte majuscule sunt diferite. Aceasta este valoarea implicită dacă ignorați acest parametru. vbBinaryCompare
      • 1 = Comparare text. Această opțiune efectuează calculele fără majuscule. De exemplu, „Bună ziua” este egal cu evenimentul „Bună ziua”, deși ambele cuvinte majuscule sunt diferite. vbTextCompare
      • 2 = Comparare acces. Aceasta efectuează compararea bazei de date.

Rezultatele funcției de comparare a șirurilor (StrComp)

După cum am spus când comparăm două valori din foaia de lucru, obținem rezultatul fie ADEVĂRAT, fie FALS. Dar cu funcția de comparare a șirurilor VBA, rezultatele nu sunt aceleași.

  • Obținem zero (0) când Șirul 1 este egal cu Șirul 2.
  • Primim unul (1) când valoarea Șirului 1 este mai mare decât Valoarea Șirului 2 .
  • Primim minus unu (-1) când valoarea Șirului 1 este mai mică decât Șirul 2
  • Obținem NULL când valoarea String 1 sau String 2 este NULL.

Exemple de utilizare a funcției VBA StrComp

Exemplul nr. 1

Să începem cu un exemplu simplu. De exemplu, vom compara două valori, adică „Excel VBA” și „Excel VBA”.

Cod:

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"' Atribuiți valoarea String 1 SecondValue = „Excel VBA” 'Atribuiți valoarea șirului 2 Rezultat = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Aplicați funcția StrComp MsgBox Result 'Afișați rezultatul în caseta de mesaj End Sub

Când rulez acest cod, vom obține Zero (0) ca rezultat, deoarece ambele valori ale șirului 1 și ale șirului 2 sunt aceleași.

Exemplul nr. 2

Acum voi schimba cazurile a două cuvinte.

Șirul 1 = Excel Vba

Șirul 2 = Excel VBA

Cod:

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"' Atribuiți valoarea String 1 SecondValue = „Excel VBA” 'Atribuiți valoarea șirului 2 Rezultat = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Aplicați funcția StrComp MsgBox Result 'Afișați rezultatul în caseta de mesaj End Sub

Când rulez acest cod, vom primi 1 deoarece, deoarece am furnizat argumentul Comparare ca „ vbBinaryCompare”, acesta va verifica caracterele sensibile la majuscule.

Acum voi schimba opțiunea Comparare din „ vbBinaryCompare” în „ vbTextCompare”

Cod:

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"' Atribuiți valoarea String 1 SecondValue = "Excel VBA" 'Atribuiți valoarea șirului 2 Rezultat = StrComp (FirstValue, SecondValue, vbTextCompare)' Aplicați funcția StrComp MsgBox Rezultat 'Afișați rezultatul în caseta de mesaj End Sub

Cu această comparație, vom obține zero (0) deoarece vbaTextCompare ignoră cuvintele sensibile la majuscule.

Exemplul nr. 3

Studiu de caz al VBA StrComp cu condiție IF

Să presupunem că aveți datele precum imaginea de mai jos.

Trebuie să comparăm Șirul 1 cu Șirul 2 și să ajungem la Rezultat ca „Exact” dacă ambele sunt aceleași, altfel rezultatul ar trebui să fie „Nu Exact”.

Codul de mai jos va face treaba pentru noi.

Cod:

Sub StrComp_Example4 () Dim Rezultat ca șir Dim I Ca întreg pentru i = 2 până la 6 Rezultat = StrComp (Celule (i, 1). Valoare, Celule (i, 2). Valoare) Dacă Rezultat = 0 Atunci Celule (i, 3 ) .Value = Celule „Exact” Altele (i, 3) .Value = „Nu Exact” Termină Dacă Următorul i Termină Sub

Când rulez codul VBA de mai sus în Excel, vom obține rezultatul de mai jos.

Dacă te uiți la celula C4 Șirul 1 și Șirul 2 sunt aceleași, dar caracterele sunt sensibile la majuscule și minuscule, astfel încât rezultatul este „Nu Exact”. Pentru a depăși această problemă, trebuie să furnizăm Comparație ca vbTextCompare.

Mai jos este codul modificat pentru a obține rezultatul ca „Exact” pentru celula C4.

Cod:

Sub StrComp_Example4 () Dim Rezultat ca șir Dim I Ca întreg pentru i = 2 până la 6 Rezultat = StrComp (Celule (i, 1). Valoare, Celule (i, 2). Valoare, vbTextCompare) Dacă Rezultat = 0 Atunci Celule (i , 3) .Value = "Exact" Celule Altele (i, 3) .Value = "Nu Exact" Termină Dacă Următorul i Termină Sub

Acest cod va returna rezultatul de mai jos.

Articole interesante...