tìm keyword xuất hiện ở 2 cột

Liên hệ QC

hadoan-pap

Thành viên tiêu biểu
Tham gia
8/7/15
Bài viết
461
Được thích
20
Gửi mọi người.

Em xin lỗi vì bài này e đăng hôm qua nhưng hnay e có 1 vấn đề mới rất mong mọi ng hỗ trợ ạ.

Em có file excel, em muốn kiểm tra và thực hiện 2 việc :

1. Nếu cell nào ở cột C của Sheet "Source" mà rỗng, khi đó nó sẽ kiểm tra xem cell nào ở 1 trong 2 cột B hoặc A mà có chưa từ khóa giong với list từ khóa ở cột B của Sheet"Defect code"... khi đó nó sẽ ghi giá trị là "1" vào cột D của sheet Source
2. Nếu cell nào ở cột C của sheet Source mà có dữ lieu, nó sẽ ghi thẳng dữ lieu đó vào cột D luôn mà k cần lam gì.

Rất mong dc mọi ng giúp đỡ ạ.

E xin cảm ơn!
 

File đính kèm

Gửi mọi người.

Em xin lỗi vì bài này e đăng hôm qua nhưng hnay e có 1 vấn đề mới rất mong mọi ng hỗ trợ ạ.

Em có file excel, em muốn kiểm tra và thực hiện 2 việc :

1. Nếu cell nào ở cột C của Sheet "Source" mà rỗng, khi đó nó sẽ kiểm tra xem cell nào ở 1 trong 2 cột B hoặc A mà có chưa từ khóa giong với list từ khóa ở cột B của Sheet"Defect code"... khi đó nó sẽ ghi giá trị là "1" vào cột D của sheet Source
2. Nếu cell nào ở cột C của sheet Source mà có dữ lieu, nó sẽ ghi thẳng dữ lieu đó vào cột D luôn mà k cần lam gì.

Rất mong dc mọi ng giúp đỡ ạ.

E xin cảm ơn!
Ban dung cong thuc sau: =IF(C2<>"",C2,getcode(A2&B2,'Defect code'!$B$2:$B$8))

code function
Mã:
Function getcode(chuoikt As String, bangnguon As Range) As String
    Dim i, ar
    ar = bangnguon
    For i = 1 To UBound(ar)
        If InStr(1, chuoikt, ar(i, 1)) > 0 Then
            getcode = "1"
            Exit Function
        End If
    Next
End Function
 
Upvote 0
Gửi mọi người.

Em xin lỗi vì bài này e đăng hôm qua nhưng hnay e có 1 vấn đề mới rất mong mọi ng hỗ trợ ạ.

Em có file excel, em muốn kiểm tra và thực hiện 2 việc :

1. Nếu cell nào ở cột C của Sheet "Source" mà rỗng, khi đó nó sẽ kiểm tra xem cell nào ở 1 trong 2 cột B hoặc A mà có chưa từ khóa giong với list từ khóa ở cột B của Sheet"Defect code"... khi đó nó sẽ ghi giá trị là "1" vào cột D của sheet Source
2. Nếu cell nào ở cột C của sheet Source mà có dữ lieu, nó sẽ ghi thẳng dữ lieu đó vào cột D luôn mà k cần lam gì.

Rất mong dc mọi ng giúp đỡ ạ.

E xin cảm ơn!
Bạn xem code nhé.
Mã:
Sub linhtinh()
    Dim arr, arr1, i As Long, j As Long, lr As Long, kq, dk As Boolean, k As Long
    With Sheets("Defect code")
         arr1 = .Range("B2:B8").Value
    End With
    With Sheets("source")
         lr = .Range("A" & Rows.Count).End(xlUp).Row
         arr = .Range("A2:C" & lr).Value
         ReDim kq(1 To UBound(arr, 1), 1 To 1)
         For i = 1 To UBound(arr, 1)
           If arr(i, 3) = Empty Then
             For k = 1 To UBound(arr1, 1)
                 If InStr(1, arr(i, 1), arr1(k, 1)) Then kq(i, 1) = arr(i, 1): Exit For
                 If InStr(1, arr(i, 2), arr1(k, 1)) Then kq(i, 1) = arr(i, 2): Exit For
             Next k
           Else
              kq(i, 1) = arr(i, 3)
           End If
         Next i
         .Range("D2:D" & lr).Value = kq
  End With
End Sub
 

File đính kèm

Upvote 0
Chân thành cảm ơn mọi người !

Cảm ơn @snow2
Bài đã được tự động gộp:

Chân thành cảm ơn mọi người !

Cảm ơn @snow25 nhiều nhiều nhe ^^
 
Upvote 0
Bạn xem code nhé.
Mã:
Sub linhtinh()
    Dim arr, arr1, i As Long, j As Long, lr As Long, kq, dk As Boolean, k As Long
    With Sheets("Defect code")
         arr1 = .Range("B2:B8").Value
    End With
    With Sheets("source")
         lr = .Range("A" & Rows.Count).End(xlUp).Row
         arr = .Range("A2:C" & lr).Value
         ReDim kq(1 To UBound(arr, 1), 1 To 1)
         For i = 1 To UBound(arr, 1)
           If arr(i, 3) = Empty Then
             For k = 1 To UBound(arr1, 1)
                 If InStr(1, arr(i, 1), arr1(k, 1)) Then kq(i, 1) = arr(i, 1): Exit For
                 If InStr(1, arr(i, 2), arr1(k, 1)) Then kq(i, 1) = arr(i, 2): Exit For
             Next k
           Else
              kq(i, 1) = arr(i, 3)
           End If
         Next i
         .Range("D2:D" & lr).Value = kq
  End With
End Sub
Hi @snow25

Cảm ơn file của bạn nhé… Mình check thấy ok rồi nhưng chỉ có duy nhất 1 issue nhỏ..

Đó là arr1 = .Range("B2:B8").Value … chỗ này chưa hợp lý trong file của mình vì file mình nó có rất nhiều dòng, k chỉ giới hạn đến 8... Nếu mình muốn kèm them điều kiện check nếu dòng B2:B nào mà k rỗng thì nó mới xử lý code cậu ạ.

Cậu check giúp mình cái này với nhé.

Mình xin cảm ơn!
Bài đã được tự động gộp:

Hi @snow25

Minh vừa them câu lệnh này If IsEmpty(arr1) = False Then thì ok rồi bạn ạ :)
 
Upvote 0
Hi @snow25

Cảm ơn file của bạn nhé… Mình check thấy ok rồi nhưng chỉ có duy nhất 1 issue nhỏ..

Đó là arr1 = .Range("B2:B8").Value … chỗ này chưa hợp lý trong file của mình vì file mình nó có rất nhiều dòng, k chỉ giới hạn đến 8... Nếu mình muốn kèm them điều kiện check nếu dòng B2:B nào mà k rỗng thì nó mới xử lý code cậu ạ.

Cậu check giúp mình cái này với nhé.

Mình xin cảm ơn!
Bạn dùng theo code này xem đúng với dữ liệu thực không nhé.
Mã:
Sub linhtinh()
    Dim arr, arr1, i As Long, j As Long, lr As Long, kq, dk As Boolean, k As Long, arr2, lr1
    With Sheets("Defect code")
         lr = .Range("B" & Rows.Count).End(xlUp).Row
         arr1 = .Range("B2:B" & lr).Value
    End With
    With Sheets("source")
         lr = .Range("N" & Rows.Count).End(xlUp).Row
         lr1 = .Range("P" & Rows.Count).End(xlUp).Row
         If lr < lr1 Then lr = lr1
         arr = .Range("N2:P" & lr).Value
         arr2 = .Range("U2:U" & lr).Value
         ReDim kq(1 To UBound(arr, 1), 1 To 1)
         For i = 1 To UBound(arr, 1)
           If arr2(i, 1) = Empty Then
             For k = 1 To UBound(arr1, 1)
                 If InStr(1, arr(i, 1), arr1(k, 1)) Then kq(i, 1) = arr(i, 1): Exit For
                 If InStr(1, arr(i, 3), arr1(k, 1)) Then kq(i, 1) = arr(i, 3): Exit For
             Next k
           Else
              kq(i, 1) = arr2(i, 1)
           End If
         Next i
         .Range("w2:w" & lr).Value = kq
  End With
End Sub
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom