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 VBAExemple 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.