Nhờ vozer giải giúp bài excel (googlesheet)

Nhưng list của em nó có khoảng 100k từ chứ không phải 10 từ.@@. Em đã lồng if count rồi sumproduct vẫn cho kq sai.

Một dòng của bác có tối đa bao nhiêu từ, 10 từ thì chia thành 10 cột. Chứ không phải 1 dòng là 1 từ, bác hiểu ko?

Sent from Sony SO-04H using vozFApp
 
Một dòng của bác có tối đa bao nhiêu từ, 10 từ thì chia thành 10 cột. Chứ không phải 1 dòng là 1 từ, bác hiểu ko?

Sent from Sony SO-04H using vozFApp
Em thấy có dòng 14 từ bác ạ.
Em xem thử input của bác rồi. Bác làm thử kiểu này xem nhé.
List 1 bác có tối đa 10 từ, bác tách thành 10 cột, bỏ dấu cách đi. Dùng hàm if lồng vlookup để tìm từ ở list 2.
List 2, đối với các dòng có 1 từ thì ok. Với các dòng có hai từ thì bác cũng tách ra tương tự list 1 nhé. Dùng hàm if Nếu đúng từ số 1 thì tìm tiếp từ số 2. Bác có thể tách kết quả dòng 1 từ và dòng 2 từ làm hai cột riêng cũng đc.
Tiếp theo Dùng kết quả các hàm có đc để ra output 1 nhé, đơn giản.
Output 2 từ dữ liệu trung gian của output 1 càng đơn giản nhé bác.
Cách này thì tuy dài nhưng ra output 2 nó dễ và dễ update, chỉ cần sửa hàm dòng 1 rồi kéo thôi. Chúc bác thành công nhé.

Sent from Sony SO-04H using vozFApp
thứ lỗi cho em ngu muội, list 1 em đang có 200 từ chẳng hạn, mỗi dòng đều có từ 3 từ trở lên, ý bác là mỗi key em đều tách thành các cột chứa nhiều từ ấy ạ??
 
Em thấy có dòng 14 từ bác ạ.

thứ lỗi cho em ngu muội, list 1 em đang có 200 từ chẳng hạn, mỗi dòng đều có từ 3 từ trở lên, ý bác là mỗi key em đều tách thành các cột chứa nhiều từ ấy ạ??

Đúng rồi bác, em thường làm những cột phụ như vậy để dễ quan sát khi tính. Bác có thể chia key thành 20 cột dự phòng cho những key quá dài sau này cũng đc bác ạ. Có điều file của bác đảm bảo phải chạy 2-3 phút mới ra.

Sent from Sony SO-04H using vozFApp
 
hic, em không giỏi VBA nên mới hỏi các bác mà. :(
Thím copy sheet 2 qua sheet 1 luôn như emở cột B, xong alt+f11 copy đoạn VBA sau rồi bấm chạy, output 1 sẽ ở cột C và output 2 ở cột D
1626159410527.png


Code:
Sub sayHello()
    Dim i As Integer
    Dim j As Integer
    Dim isContainsKey As Boolean
    Dim index As Integer
    Dim stringKeydai As String
    Dim stringKeyNgan As String
 
    For i = 2 To 221
        stringKeydai = Cells(i, 1).Value
        For j = 2 To 9917
         
            stringKeyNgan = Cells(j, 2).Value
         
            index = InStr(stringKeydai, stringKeyNgan)
         
            If index = 0 Then 'Khong chua key
             
            Else
                isContainsKey = True
                stringKeydai = Replace(stringKeydai, stringKeyNgan, "")
            End If
         
        Next
     
        If isContainsKey = False Then
            Cells(i, 3) = stringKeydai
        Else
            Cells(i, 4) = stringKeydai
        End If
        isContainsKey = False
    Next
End Sub
 
Last edited:
Thím copy sheet 2 qua sheet 1 luôn như emở cột B, xong alt+f11 copy đoạn VBA sau rồi bấm chạy, output 1 sẽ ở cột C và output 2 ở cột D
View attachment 648122

Code:
Sub sayHello()
    Dim i As Integer
    Dim j As Integer
    Dim isContainsKey As Boolean
    Dim index As Integer
    Dim stringKeydai As String
    Dim stringKeyNgan As String
 
    For i = 3 To 222
        stringKeydai = Cells(i, 1).Value
        isContainsKey = False

        For j = 3 To 9918
        
            stringKeyNgan = Cells(j, 2).Value
        
            index = InStr(stringKeydai, stringKeyNgan)
        
            If index = 0 Then 'Khong chua key
            
            Else
                isContainsKey = True
                stringKeydai = Replace(stringKeydai, stringKeyNgan, "")
            End If
        
        Next
    
        If isContainsKey = False Then
            Cells(i, 3) = stringKeydai
        Else
            Cells(i, 4) = stringKeydai
        End If

    Next
End Sub
bác ơi, em chạy nó lại ra xoá các cụm từ có trong list key ngắn. :LOL:) Sao em thấy em ngu thế không biết. :(
 
Last edited:
@@ search như nào ra hả bác.
Output 1 thì dùng 1 công thức là ra, output 2 thì phức tạp hơn lquan đến chuỗi nên cần 1 số cột phụ nếu ko muốn dùng vba. VD ở đây mình giả định 1 long keyword của bạn có tối đa 5 short keyword bên trong.
B1: Xác định các short keyword xuất hiện trong long keyword
B2: Loại bỏ từng short keyword dần khỏi chuỗi
B3: 1 vài câu lệnh lặt vặt để lấy chuỗi cuối cùng sau khi bỏ hết short keyword và bỏ dấu cách thừa

1626181098933.png
 
Output 1 thì dùng 1 công thức là ra, output 2 thì phức tạp hơn lquan đến chuỗi nên cần 1 số cột phụ nếu ko muốn dùng vba. VD ở đây mình giả định 1 long keyword của bạn có tối đa 5 short keyword bên trong.
B1: Xác định các short keyword xuất hiện trong long keyword
B2: Loại bỏ từng short keyword dần khỏi chuỗi
B3: 1 vài câu lệnh lặt vặt để lấy chuỗi cuối cùng sau khi bỏ hết short keyword và bỏ dấu cách thừa

View attachment 648732
Output 1 bị chưa đúng bác ơi. @@. Bác dùng 1 công thức như nào thế ạ? Bác chỉ em với.
 
Output 1 bị chưa đúng bác ơi. @@. Bác dùng 1 công thức như nào thế ạ? Bác chỉ em với.
Mình có sửa lại short keyword để demo nên ko đúng với keyword của bạn.
Còn công thức thì search mảng short nếu tổng mảng search >0 tức long keyword có chứa short keyword.

À mình hiểu nhầm, bị ngược thôi, switch lại là ok
 
Last edited:
Back
Top