VBA StrComp | Compareu les cadenes de VBA mitjançant la funció StrComp

Funció Excel VBA StrComp

VBA StrComp és una funció integrada que s'utilitza per comparar si els dos valors de cadena són iguals o no. Tanmateix, els resultats no són CERT o FALS per defecte, com en el full de càlcul, sinó que són diferents.

Abans d’examinar els resultats, deixeu-me que us mostri la sintaxi de la funció StrComp en primer lloc.

  • Cadena 1: La cadena 1 és la primera cadena o valor que comparem.
  • Cadena 2: La cadena 2 és la segona cadena o valor amb què comparem Cadena 1.
  • Compareu: Aquí podem subministrar tres opcions.
      • 0 = Comparació binària. Això fa càlculs sensibles a majúscules i minúscules Per exemple, "Hola" no és igual a "HOLA", perquè les dues paraules i minúscules són diferents. Aquest és el valor per defecte si ignoreu aquest paràmetre. vbBinaryCompare
      • 1 = Comparació de text. Aquesta opció realitza els càlculs que no distingeixen entre majúscules i minúscules. Per exemple, "Hola" és igual a l'esdeveniment "HOLA", tot i que les dues paraules i majúscules són diferents. vbTextCompare
      • 2 = Comparació d'accés. Això fa una comparació de bases de dades.

Resultat de la funció de comparació de cadenes (StrComp)

Com he dit quan comparem dos valors al full de càlcul, obtenim el resultat com a VERITAT o FALS. Però amb la funció de comparació de cadenes VBA els resultats no són els mateixos.

  • Tenim zero (0) quan Cadena 1 és igual a Cadena 2.
  • En rebem un (1) quan Cadena 1 és més gran que el valor Cadena 2 Valor.
  • Tenim menys un (-1) quan Cadena 1 el valor és inferior a Cadena 2
  • Tenim NULL quan Cadena 1 o bé Cadena 2 el valor és NUL.

Exemples per utilitzar la funció VBA StrComp

Podeu descarregar aquesta plantilla VBA StrComp Excel aquí: plantilla VBA StrComp Excel

Exemple 1

Comencem amb un exemple senzill. Per exemple, compararem dos valors, és a dir, "Excel VBA" i "Excel VBA".

Codi:

 Sub StrComp_Example1 () Dim FirstValue As String 'Per emmagatzemar el valor de la cadena 1 Dim SecondValue As String' Per emmagatzemar el valor de la cadena 2 Dim Resultat com string 'Per emmagatzemar el resultat de la fórmula StrComp FirstValue = "Excel VBA"' Assigneu el valor de la cadena 1 SecondValue = "Excel VBA" 'Assigneu el valor de la cadena 2 Resultat = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Aplica la funció StrComp Resultat MsgBox 'Mostra el resultat al quadre de missatge End Sub 

Quan executi aquest codi, obtindrem Zero (0) com a resultat perquè tots dos Cadena 1 i Cadena 2 els valors són els mateixos.

Exemple 2

Ara canviaré els casos de dues paraules.

Cadena 1 = Excel Vba

Cadena 2 = Excel VBA

Codi:

 Sub StrComp_Example2 () Dim FirstValue As String 'Per emmagatzemar el valor de la cadena 1 Dim SecondValue As String' Per emmagatzemar el valor de la cadena 2 Dim Resultat com string 'Per emmagatzemar el resultat de la fórmula StrComp FirstValue = "Excel Vba"' Assigneu el valor de la cadena 1 SecondValue = "Excel VBA" 'Assigneu el valor de la cadena 2 Resultat = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Aplica la funció StrComp Resultat MsgBox 'Mostra el resultat al quadre de missatge End Sub 

Quan executi aquest codi ho aconseguirem 1 perquè des que vam proporcionar l’argument Compare com a “vbBinaryCompare " comprovarà si hi ha caràcters sensibles a majúscules i minúscules.

Ara canviaré el Compara opció de “vbBinaryCompare " a "vbTextCompare "

Codi:

 Sub StrComp_Example3 () Dim FirstValue As String 'Per emmagatzemar el valor de la cadena 1 Dim SecondValue As String' Per emmagatzemar el valor de la cadena 2 Dim Resultat com string 'Per emmagatzemar el resultat de la fórmula StrComp FirstValue = "Excel Vba"' Assigneu el valor de la cadena 1 SecondValue = "Excel VBA" 'Assigneu el valor de la cadena 2 Result = StrComp (FirstValue, SecondValue, vbTextCompare)' Aplica la funció StrComp Resultat MsgBox 'Mostra el resultat al quadre de missatge End Sub 

Amb aquest Compara, aconseguirem zero (0) perquè vbaTextCompare ignora les paraules que distingeixen entre majúscules i minúscules.

Exemple 3

Estudi de cas de VBA StrComp amb condició IF

Suposem que teniu les dades com la següent imatge.

Hem de comparar Cadena 1 amb Cadena 2 i arriben els Resultat com a "Exacte" si tots dos són iguals; en cas contrari, el resultat hauria de ser "No Exacte".

El següent codi ens farà la feina.

Codi:

 Sub StrComp_Example4 () Atenueu el resultat com a cadena Atenueu I com a enter per a i = 2 a 6 Resultat = StrComp (cel·les (i, 1). Valor, cel·les (i, 2). Valor) Si resultat = 0 Llavors cel·les (i, 3 ) .Value = "Exacta" Cèl·lules d'altres (i, 3) .Value = "No exacte" Finalitza si següent i finalitzo Sub 

Quan executi el codi VBA anterior a Excel obtindrem el resultat següent.

Si mireu la cèl·lula C4 Cadena 1 i Cadena 2 són els mateixos, però els caràcters distingeixen entre majúscules i minúscules, de manera que el resultat és "No exacte". Per superar aquest problema, hem de proporcionar el comparador com vbTextCompare.

A continuació es mostra el codi modificat per obtenir el resultat com a "Exacte" per a la cel·la C4.

Codi:

 Sub StrComp_Example4 () Atenueu el resultat com a cadena Atenueu I com a enter per a i = 2 a 6 Resultat = StrComp (cel·les (i, 1). Valor, cel·les (i, 2). Valor, vbTextCompare) Si resultat = 0 Llavors cel·les (i , 3) .Value = "Exacta" Cèl·lules d'altres (i, 3) .Value = "No exacte" Finalitza si següent i Finalitza sub 

Aquest codi retornarà el resultat següent.