VBA StrComp

Fungsi Excel VBA StrComp

VBA StrComp adalah fungsi bawaan yang digunakan untuk membandingkan apakah dua nilai string sama atau tidak. Namun, hasil tidak default TRUE atau FALSE seperti di lembar kerja melainkan berbeda.

Sebelum kita melihat hasilnya, mari saya tunjukkan sintaks dari fungsi StrComp terlebih dahulu.

  • String 1: String 1 adalah string atau nilai pertama yang kita bandingkan.
  • String 2: String 2 adalah string atau nilai kedua yang kita bandingkan dengan String 1 .
  • Bandingkan: Kami dapat menyediakan tiga opsi di sini.
      • 0 = Perbandingan Biner. Ini melakukan kalkulasi peka huruf besar / kecil. Misalnya "Halo" tidak sama dengan "HELLO" karena kedua kata case-nya berbeda. Ini adalah nilai default jika Anda mengabaikan parameter ini. vbBinaryCompare
      • 1 = Perbandingan Teks. Opsi ini melakukan kalkulasi non-case sensitive. Misalnya "Halo" sama dengan acara "HELLO" meskipun kedua kata case-nya berbeda. vbTextCompare
      • 2 = Akses Bandingkan. Ini melakukan perbandingan database.

Hasil Fungsi String Comparison (StrComp)

Seperti yang saya katakan ketika kami membandingkan dua nilai di lembar kerja, kami mendapatkan hasilnya sebagai TRUE atau FALSE. Namun dengan VBA hasil fungsi perbandingan string tidak sama.

  • Kami mendapatkan nol (0) ketika String 1 sama dengan String 2.
  • Kami mendapatkan satu (1) ketika nilai String 1 lebih besar dari Nilai String 2 .
  • Kami mendapatkan minus satu (-1) ketika nilai String 1 kurang dari String 2
  • Kami mendapatkan NULL ketika nilai String 1 atau String 2 adalah NULL.

Contoh untuk menggunakan Fungsi VBA StrComp

Anda dapat mengunduh Template Excel StrComp VBA ini di sini - Template Excel StrComp VBA

Contoh 1

Mari kita mulai dengan contoh sederhana. Misalnya, kami akan membandingkan dua nilai yaitu "Excel VBA" & "Excel VBA".

Kode:

 Sub StrComp_Example1 () Dim FirstValue Sebagai String 'Untuk Menyimpan Nilai String 1 Dim SecondValue Sebagai String' Untuk Menyimpan Nilai String 2 Dim Hasil Sebagai String 'Untuk Menyimpan Hasil rumus StrComp FirstValue = "Excel VBA"' Tetapkan nilai String 1 SecondValue = "Excel VBA" 'Assign the String 2 value Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Apply StrComp function MsgBox Result 'Tampilkan hasil di kotak pesan End Sub 

Ketika saya menjalankan kode ini kita akan mendapatkan Nol (0) sebagai hasilnya karena nilai String 1 dan String 2 sama.

Contoh # 2

Sekarang saya akan mengubah kasus dua kata.

String 1 = Excel Vba

String 2 = Excel VBA

Kode:

 Sub StrComp_Example2 () Dim FirstValue Sebagai String 'Untuk Menyimpan Nilai String 1 Dim SecondValue Sebagai String' Untuk Menyimpan Nilai String 2 Dim Hasil Sebagai String 'Untuk Menyimpan Hasil rumus StrComp FirstValue = "Excel Vba"' Tetapkan nilai String 1 SecondValue = "Excel VBA" 'Assign the String 2 value Result = StrComp (FirstValue, SecondValue, vbBinaryCompare)' Apply StrComp function MsgBox Result 'Tampilkan hasil di kotak pesan End Sub 

Ketika saya menjalankan kode ini kita akan mendapatkan 1 karena karena kita memberikan argumen Compare sebagai " vbBinaryCompare", itu akan memeriksa karakter case-sensitive.

Sekarang saya akan mengubah opsi Bandingkan dari " vbBinaryCompare" menjadi " vbTextCompare"

Kode:

 Sub StrComp_Example3 () Dim FirstValue Sebagai String 'Untuk Menyimpan Nilai String 1 Dim SecondValue Sebagai String' Untuk Menyimpan Nilai String 2 Dim Hasil Sebagai String 'Untuk Menyimpan Hasil rumus StrComp FirstValue = "Excel Vba"' Tetapkan nilai String 1 SecondValue = "Excel VBA" 'Assign the String 2 value Result = StrComp (FirstValue, SecondValue, vbTextCompare)' Apply StrComp function MsgBox Result 'Tampilkan hasil di kotak pesan End Sub 

Dengan Perbandingan ini , kita akan mendapatkan nol (0) karena vbaTextCompare mengabaikan kata-kata yang peka huruf besar / kecil.

Contoh # 3

Studi Kasus VBA StrComp dengan Kondisi IF

Asumsikan Anda memiliki data seperti gambar di bawah ini.

Kita perlu membandingkan String 1 dengan String 2 dan mendapatkan Hasil sebagai "Exact" jika keduanya sama, jika tidak hasilnya harus "Not Exact".

Kode di bawah ini akan melakukan pekerjaan untuk kita.

Kode:

 Sub StrComp_Example4 () Dim Hasil Sebagai String Dim I Sebagai Integer Untuk i = 2 Sampai 6 Hasil = StrComp (Sel (i, 1). Nilai, Sel (i, 2). Nilai) Jika Hasil = 0 Kemudian Sel (i, 3 ) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub 

Ketika saya menjalankan kode VBA di atas di Excel, kita akan mendapatkan hasil di bawah ini.

Jika Anda melihat sel C4 String 1 dan String 2 sama tetapi karakter case sensitive, maka hasilnya “Not Exact”. Untuk mengatasi masalah ini kita perlu menyediakan Compare as vbTextCompare.

Di bawah ini adalah kode yang dimodifikasi untuk mendapatkan hasil sebagai "Tepat" untuk sel C4.

Kode:

 Sub StrComp_Example4 () Dim Hasil Sebagai String Dim I Sebagai Integer Untuk i = 2 Sampai 6 Hasil = StrComp (Sel (i, 1). Nilai, Sel (i, 2). Nilai, vbTextCompare) Jika Hasil = 0 Kemudian Sel (i , 3) .Value = "Exact" Else Cells (i, 3) .Value = "Not Exact" End If Next i End Sub 

Kode ini akan mengembalikan hasil di bawah ini.