Comparació de cadenes VBA | Com es comparen valors de dues cadenes?

Comparació de cadenes VBA d'Excel

Per comparar dues cadenes a VBA, tenim una funció integrada, és a dir, "StrComp”. Això ho podem llegir com "Comparació de cordes”, Aquesta funció només està disponible amb VBA i no està disponible com a funció de full de càlcul. Compara dues cadenes qualsevol i torna els resultats com "Zero (0)" si les dues cadenes coincideixen i si les dues cadenes proporcionades no coincideixen, obtindríem "Un (1)" com a resultat.

A VBA o Excel, ens trobem amb molts escenaris diferents, un d’aquests escenaris és “comparar dos valors de cadenes”. En un full de treball normal, podem fer aquestes maneres múltiples, però a VBA com ho feu?

A continuació es mostra la sintaxi de la funció “StrComp”.

En primer lloc, dos arguments són bastant senzills,

  • per Cadena 1 hem de proporcionar quin és el primer valor que comparem i
  • per Cadena 2 hem d’aportar quin és el segon valor que comparem.
  • [Compareu] aquest és l'argument opcional de la funció StrComp. Això és útil quan volem comparar la comparació entre majúscules i minúscules. Per exemple, en aquest argument "Excel" no és igual a "EXCEL" perquè aquestes dues paraules distingeixen entre majúscules i minúscules.

Aquí podem proporcionar tres valors.

  • Zero (0) per a "Comparació binària"És a dir," Excel "no és igual a" EXCEL ". Per a la comparació de majúscules i minúscules, podem proporcionar 0.
  • Un (1) per a "Comparació de text"És a dir," Excel "és igual a" EXCEL ". Es tracta d’una comparació que no distingeix entre majúscules i minúscules.
  • Dos (2) només per a la comparació de bases de dades.

Els resultats de la funció "StrComp" no són TRUE o FALSE per defecte, sinó que varien. A continuació es mostren els diferents resultats de la funció “StrComp”.

  • Ho aconseguirem “0” com a resultat si les cadenes subministrades coincideixen.
  • Ho aconseguirem “1” si les cadenes proporcionades no coincideixen i en cas de coincidència numèrica, obtindrem 1 si la cadena 1 és superior a la cadena 2.
  • Ho aconseguirem “-1” si el número de la cadena 1 és inferior al número de la cadena 2.

Com es fa una comparació de cadenes a VBA?

Podeu descarregar aquesta plantilla Excel de comparació de cadenes VBA aquí: plantilla Excel de comparació de cadenes VBA

Exemple 1

Coincidirem amb "Bangalore"Contra la cadena"BANGALORE”.

En primer lloc, declareu dues variables VBA com a cadena per emmagatzemar dos valors de cadena.

Codi:

 Substring_Comparison_Example1 () Dim Value1 As String Dim Value2 As String End Sub 

Per a aquestes dues variables emmagatzemeu dos valors de cadena.

Codi:

 Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" End Sub 

Ara declareu una variable més per emmagatzemar el resultat del "StrComp”Funció.

Codi:

 Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String End Sub 

Per a aquesta variable, obriu la funció "StrComp".

Codi:

Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (End Sub 

Per a "Cadena1" i "Cadena2" ja hem assignat valors a través de variables, de manera que introduïu noms de variables respectivament.

Codi:

 Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, End Sub 

L'última part de la funció és "Compara" per a aquesta tria "VbTextCompare".

Codi:

 Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) End Sub 

Ara mostreu el fitxer "Resultat final" variable al quadre de missatge de VBA.

Codi:

 Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) MsgBox FinalResult End Sub 

D’acord, executem el codi i veiem el resultat.

Sortida:

Com que les cadenes "Bangalore" i "BANGALORE" són iguals, obtenim el resultat 0, és a dir, coincidència. Tots dos valors distingeixen entre majúscules i minúscules, ja que hem proporcionat l'argument com a "VbTextCompare" ha ignorat la coincidència entre majúscules i minúscules i només ha coincidit amb valors, de manera que tots dos valors són els mateixos i el resultat és 0, és a dir, CERT.

Codi:

 Sub String_Comparison_Example1 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbTextCompare) MsgBox FinalResult End Sub

Exemple 2

Pel mateix codi, canviarem el mètode de comparació "VbTextCompare" a "VbBinaryCompare".

Codi:

 Sub String_Comparison_Example2 () Dim Value1 As String Dim Value2 As String Value1 = "Bangalore" Value2 = "BANGALORE" Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub 

Ara executeu el codi i vegeu el resultat.

Sortida:

Tot i que ambdues cadenes són iguals, obtenim el resultat 1, és a dir, No coincideix perquè hem aplicat el mètode de comparació com "VbBinaryCompare" que compara dos valors com a majúscules i minúscules.

Exemple 3

Ara veurem com comparar valors numèrics. Per al mateix codi, assignarem valors diferents.

Codi:

 Sub String_Comparison_Example3 () Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 500 Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub 

Tots dos valors són 500 i obtindrem 0 com a resultat perquè tots dos valors coincideixen.

Sortida:

Ara canviaré el número Value1 de 500 a 100.

Codi:

 Sub String_Comparison_Example3 () Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub 

Executeu el codi i vegeu el resultat.

Sortida:

Sabem que Value1 i Value2 no són el mateix, però el resultat és -1 en lloc d’1 perquè per a la comparació numèrica quan el valor de la cadena 1 és superior a la cadena 2 obtindrem aquest -1.

Codi:

 Sub String_Comparison_Example3 () Dim Value1 As String Dim Value2 As String Value1 = 1000 Value2 = 500 Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub 

Ara invertiré els valors.

Codi:

 Sub String_Comparison_Example3 () Dim Value1 As String Dim Value2 As String Value1 = 500 Value2 = 1000 Dim FinalResult As String FinalResult = StrComp (Value1, Value2, vbBinaryCompare) MsgBox FinalResult End Sub 

Executeu el codi i vegeu el resultat.

Sortida:

Això no és especial si no coincideix, només obtindrem 1.

Coses que cal recordar aquí

  • [Compareu] l'argument de "StrComp" és opcional, però en cas que coincideixi amb majúscules i minúscules, podem utilitzar-lo i l'opció és "VbBinaryCompare".
  • El resultat dels valors numèrics és lleugerament diferent en cas que la cadena 1 sigui superior a la cadena 2 i el resultat sigui -1.
  • Els resultats són 0 si coincideixen i 1 si no coincideixen.