Excel: Cara membandingkan dua string teks dan menandai yang

-1

Saya memiliki file besar yang mirip dengan yang di bawah ini. Saya ingin dapat membandingkan grup kata di kolom A dengan grup kata di kolom B dan mendapatkan "Tidak Cocok", "Pencocokan Tepat" atau "Pencocokan Sebagian" di kolom C. Saya pengguna dasar dengan rumus dan dapat menggunakan VBA untuk menyimpan dan menjalankan makro.

Catatan kecil, kolom memang memiliki duplikat dan perbandingan hanya perlu dilakukan pada sel dengan sel (misalnya A1 dengan B1). Bahkan bentuk yang lebih sederhana dari ini akan membantu. Terima kasih.

A - classement fifa, classico barca nyata, clavier arabe, clermont ferrand

B - sepak bola rumput hijau, hotel europa, clavier arabe, ferrand

C - Tidak Ada Kecocokan, Tanpa Pencocokan, Pencocokan Tepat, Pencocokan Sebagian

  1. Saya sudah mencoba variasi VLOOKUP dan SEARCH tetapi tanpa hasil.
  2. Saya sudah mencoba Teks ke Kolom dan kemudian VLOOKUP 2 set teks tetapi masih akan menampilkan data parsial yang tidak dapat saya gunakan.
  3. Jawaban terdekat yang bisa saya dapatkan adalah Bagaimana saya bisa membandingkan dua kolom di Excel untuk menyoroti kata-kata yang tidak cocok? tetapi ketika saya menjalankan makro untuk semua kolom saya, itu mengabaikan duplikat dan tidak membandingkan A1 dengan B1, tampaknya untuk memeriksa A: A dengan B: B dan saya masih perlu memeriksa secara manual Tidak Ada Kecocokan, Pencocokan Tepat dan Sebagian Pertandingan yang sangat memakan waktu.

Saya ingin mencocokkan seluruh kata dengan sebagian kata saat mencari kecocokan sebagian -

Cup vs Cupboard = Partial
Cupcake vx Cupboard = No Match
MYPA333
sumber
2
Harap perhatikan bahwa Pengguna Super bukan layanan penulisan skrip. Jika Anda memberi tahu kami apa yang telah Anda coba sejauh ini (termasuk skrip yang Anda gunakan) dan di mana Anda macet, kami dapat mencoba membantu dengan masalah tertentu. Anda juga harus membaca Bagaimana cara saya mengajukan pertanyaan yang bagus? .
DavidPostill
Kedengarannya seperti "Pencarian Fuzzy" adalah yang Anda inginkan. Cari itu di web.
Scott Craner
Baru saja mencoba Fuzzy Lookup tetapi kecocokan kesamaan terlalu tinggi untuk mendapatkan data aktual yang baik. Itu tetap di sekitar 0,89 di mana 1 sama persis, bahkan untuk ketidakcocokan yang jelas.
MYPA333

Jawaban:

1

Coba UDF kecil ini () :

Public Function comparee(s1 As String, s2 As String) As String
    comparee = "No Match"
    If s1 = s2 Then
        comparee = "Exact match"
        Exit Function
    End If

    arr1 = Split(s1, ", ")
    arr2 = Split(s2, ", ")
    For Each a1 In arr1
        For Each a2 In arr2
            If a1 = a2 Then
                comparee = "Partial"
                Exit Function
            End If
        Next a2
    Next a1
End Function

masukkan deskripsi gambar di sini

Siswa Gary
sumber
Mencoba rumus tetapi saya hanya mendapatkan Tidak Cocok atau Pencocokan Tepat. Cara data diatur dalam tabel adalah A1: Classement fifa, B1 green grass soccer. A2: classico barca real, B2: hotel europa dll. Apakah formula itu berfungsi untuk Anda atau saya melakukan sesuatu yang benar-benar salah? 10x
MYPA333
@ MYPA333 Pada sistem saya, saya mendapat Partial karena ferrand ada di kedua sel.
Siswa Gary
@ MYPA333 coba dengan data tanpa koma, hanya spasi.
Siswa Gary
Saya akan mencoba ini lagi, saya mungkin melewatkan sesuatu. Pls. lihat juga logika yang saya gunakan untuk mendapatkan solusi yang belum sempurna ini. Jika Anda memiliki saran tentang cara memasukkannya ke modul VBA, itu akan luar biasa.
MYPA333
@ MYPA333 Saya akan melihat nanti ..................................
Siswa Gary
0

Inilah solusi yang saya temukan di forum lain:

Function GetMatches(s1 As String, s2 As String)
    Dim spl1 As Variant, spl2 As Variant, i As Long

    If s1 = s2 Then GetMatches = "Exact Match": Exit Function

    spl1 = Split(Application.Trim(s1))
    spl2 = Split(Application.Trim(s2))

    For i = 0 To UBound(spl1)
           If Not IsError(Application.Match(spl1(i), spl2, 0)) Then GetMatches = GetMatches & " " & spl1(i)
    Next i
    If Len(GetMatches) = 0 Then
        GetMatches = "No Match"
    Else
        GetMatches = Application.Trim(GetMatches)
    End If
End Function
MYPA333
sumber
Coba gunakan FIND. Anda mungkin perlu melakukan TEMUKAN A dalam B dan B dalam A, dengan asumsi salah satu dari keduanya mungkin merupakan bagian dari yang lain.
fixer1234