VBA StrComp

Excel VBA StrComp-funktion

VBA StrComp är en inbyggd funktion som används för att jämföra om de två strängvärdena är desamma eller inte. Resultaten är dock inte standard SANTA eller FALSKA som i kalkylbladet utan det är annorlunda.

Innan vi tittar på resultaten, låt mig först visa syntaxen för StrComp-funktionen.

  • Sträng 1: Sträng 1 är den första strängen eller värdet vi jämför.
  • Sträng 2: Sträng 2 är den andra strängen eller värdet vi jämför med Sträng 1 .
  • Jämför: Vi kan tillhandahålla tre alternativ här.
      • 0 = Binär jämförelse. Detta utför skiftlägeskänsliga beräkningar. Till exempel är "Hello" inte lika med "HELLO" eftersom båda orden fall är olika. Detta är standardvärdet om du ignorerar den här parametern. vbBinaryCompare
      • 1 = Jämför text. Detta alternativ utför beräkningar som inte är skiftlägeskänsliga. Till exempel "Hej" är lika med "HELLO" -händelsen även om båda orden fall är olika. vbTextCompare
      • 2 = Åtkomst Jämför. Detta utför databasjämförelse.

Resultat av strängjämförelsefunktion (StrComp)

Som jag sa när vi jämför två värden i kalkylbladet får vi resultatet antingen SANT eller FALSKT. Men med VBA-strängjämförelsefunktion är resultaten inte desamma.

  • Vi får noll (0) när sträng 1 är lika med sträng 2.
  • Vi får en (1) när sträng 1- värdet är större än sträng 2- värdet .
  • Vi får minus en (-1) när sträng 1- värdet är mindre än sträng 2
  • Vi får NULL när sträng 1 eller sträng 2 är NULL.

Exempel på att använda VBA StrComp-funktion

Du kan ladda ner denna VBA StrComp Excel-mall här - VBA StrComp Excel-mall

Exempel nr 1

Låt oss börja med ett enkelt exempel. Till exempel kommer vi att jämföra två värden, dvs. “Excel VBA” och “Excel VBA”.

Koda:

 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"' Tilldela sträng 1-värde SecondValue = "Excel VBA" "Tilldela sträng 2-värdet Resultat = StrComp (FirstValue, SecondValue, vbBinaryCompare)" Apply StrComp-funktion MsgBox-resultat "Visa resultatet i meddelandefältet Avsluta sub 

När jag kör den här koden får vi noll (0) som resultat eftersom både värdena Sträng 1 och Sträng 2 är desamma.

Exempel 2

Nu kommer jag att ändra fallet med två ord.

Sträng 1 = Excel Vba

Sträng 2 = Excel VBA

Koda:

 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"' Tilldela sträng 1-värde SecondValue = "Excel VBA" "Tilldela sträng 2-värdet Resultat = StrComp (FirstValue, SecondValue, vbBinaryCompare)" Apply StrComp-funktion MsgBox-resultat "Visa resultatet i meddelandefältet Avsluta sub 

När jag kör den här koden får vi 1 för eftersom vi levererade jämförargumentet som “ vbBinaryCompare” kommer det att leta efter skiftlägeskänsliga tecken.

Nu ska jag ändra Jämför alternativet ” vbBinaryCompare” till ” vbTextCompare”

Koda:

 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"' Assign the String 1 value SecondValue = "Excel VBA" "Tilldela sträng 2-värdet Resultat = StrComp (FirstValue, SecondValue, vbTextCompare)" Apply StrComp-funktion MsgBox-resultat "Visa resultatet i meddelandefältet Avsluta sub 

Med denna jämförelse får vi noll (0) eftersom vbaTextCompare ignorerar skiftlägeskänsliga ord.

Exempel # 3

Fallstudie av VBA StrComp med IF-tillstånd

Antag att du har data som bilden nedan.

Vi måste jämföra sträng 1 med sträng 2 och anlända resultatet som "Exakt" om båda är desamma, annars bör resultatet vara "Inte exakt".

Koden nedan kommer att göra jobbet för oss.

Koda:

 Sub StrComp_Example4 () Dim resultat som sträng Dim I som heltal för i = 2 till 6 resultat = StrComp (celler (i, 1). Värde, celler (i, 2). Värde) Om resultat = 0 Då celler (i, 3 ) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub 

När jag kör ovanstående VBA-kod i Excel får vi resultatet nedan.

Om du tittar på C4-cell är Sträng 1 och Sträng 2 desamma men tecknen är skiftlägeskänsliga, så resultatet är "Inte exakt". För att lösa problemet måste vi tillhandahålla jämförelsen som vbTextCompare.

Nedan visas den modifierade koden för att få resultatet som "Exakt" för C4-cellen.

Koda:

 Sub StrComp_Example4 () Dim Resultat som sträng Dim I som heltal För i = 2 till 6 Resultat = StrComp (celler (i, 1). Värde, celler (i, 2). Värde, vbTextCompare) Om resultat = 0 Då celler (i , 3) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub 

Den här koden returnerar resultatet nedan.