Lệnh tìm kiếm có điều kiện đặc biệt trong cell

Liên hệ QC

jaispierre

Thành viên mới
Tham gia
3/6/08
Bài viết
37
Được thích
2
Em chào các bác, các anh, các chị
Em có file dữ liệu như đính kèm. Em muốn viết câu lệnh bằng VBA như sau:
với từng dòng từ dòng 2 đến hết
- giá trị ở ô B2 tìm trong ô C2, nếu thỏa mãn thì trả về giá trị ở ô D2 (giá trị ở ô D2 là giá trị tiếp theo của giá trị tìm kiếm)
- điều kiện là giá trị ở ô B2 chỉ tìm các giá trị có giá trị EX... ở ô C2 (giá trị AX... thì bỏ qua)
- các ô tiếp theo tương tự
Em nghĩ mãi không ra, nhờ các bác anh chị có kinh nghiệm xem giúp
Em xin cảm ơn nhiều
 

File đính kèm

  • TIM KIEM.xlsx
    9 KB · Đọc: 8
Ô D5 không giống quy luật mô tả.
Có trường hợp vầy không
Mã:
EX01
AX01
EX02
 
Upvote 0
Bác có thể bỏ qua ô 5 cũng được ạ, em dùng hàm khác cho ô này
 
Upvote 0
Em quên mất là nếu em đổi giá trị EX01 thành EX02 hoặc EX06 thì giá trị tìm tiếp theo nó vẫn ra ạ.
Ví dụ như đổi giá trị cột B thành EX06 thì giá trị cột D thành EX01 hoặc nếu đổi thành EX03 thì giá trị cột D vẫn ra là EX05 hoặc ra là không tìm thấy ạ.
Em gửi file đính kèm.
 

File đính kèm

  • Find_1.xlsb
    14.1 KB · Đọc: 9
Upvote 0
Không được bác ơi, khi em đổi giá trị cột B thành EX02 thì giá trị cột E nó vẫn là EX02, kết quả mong muốn phải trở về EX01
Hay ví dụ ô B4, em để là EX02 thì giá trị ở E4 phải là N/A vì không có giá trị tìm. Hay em đổi giá trị ô B8 là EX03 thì giá trị E8 phải là EX05 ạ.
 
Upvote 0
Không được bác ơi, khi em đổi giá trị cột B thành EX02 thì giá trị cột E nó vẫn là EX02, kết quả mong muốn phải trở về EX01
Hay ví dụ ô B4, em để là EX02 thì giá trị ở E4 phải là N/A vì không có giá trị tìm. Hay em đổi giá trị ô B8 là EX03 thì giá trị E8 phải là EX05 ạ.
Mình ráng chờ vài bữa để mình tìm con đường chui vào đầu mình đã nhé. Hiện tại chưa tìm được đường nên chưa nghĩ ra cách.
 
Upvote 0
Ủa, thấy cột so sánh đúng hết với kết quả mẫu của bạn rồi còn không được gì nữa bạn.
--
Nãy làm vầy mà thấy không giống kết quả mẫu, #7 giống kết quả mẫu còn không được thì biết đâu code này lại được :D
Mã:
Function Tim(A As String, AAA As String) As String
Dim X As String, V As Long, Tmp As Variant, bCheck As Long
X = Left(A, 2)
V = Val(Mid(A, 3))
Tmp = Split(AAA, ChrW(10))
For i = LBound(Tmp, 1) To UBound(Tmp, 1)
    If Tmp(i) Like X & "*" Then
        If Val(Mid(Tmp(i), 3)) <= V Then
            bCheck = True
        ElseIf bCheck Then
            Tim = Tmp(i)
            Exit For
        End If
    End If
Next
End Function
Mã:
=tim("AX01",C2)
Mã:
=tim("EX02",C4)
 
Upvote 0
Vì giá trị bị có tính lặp lại bác ạ, sau khi tìm từ trên xuống dưới mà không thấy thì nó lại quay lên 1 vòng. Ví dụ em đưa ra giá trị EX03, nó sẽ tìm trong ô EX01 EX03 EX05 và đưa ra EX05. nếu em đưa ra giá trị EX05 thì nó sẽ lại quay lên trên và đưa ra giá trị EX01 (vòng lặp lại EX01 EX03 EX05)
 
Upvote 0
Web KT
Back
Top Bottom