Tìm ô cuối cùng thỏa mãn điều kiện. (1 người xem)

  • Thread starter Thread starter chibi
  • Ngày gửi Ngày gửi
Liên hệ QC

Người dùng đang xem chủ đề này

chibi

Thành viên tích cực
Thành viên danh dự
Tham gia
10/1/07
Bài viết
1,120
Được thích
623
Chào cả nhà.
Tôi có vùng dữ liệu gồm 2 cột (A-B) và nhiều dòng, được sắp xếp theo cột A. Cần tìm ô cuối cùng (Từ trên xuống) trên cột A có giá trị cho trước, nếu tìm thấy thì trả về giá trị của ô tương ứng bên cột B, nếu không thì trả về 1.
Ngoài cách duyệt từng ô, anh/chị nào có cách khác xin được chỉ giáo.
 
Cũng dựa trên cơ sở nối chuổi như rollover79 nhưng thay vì dùng lastIndexOf hoặc InStrRev, tôi dùng hàm Filter có sẳn trong VBA
PHP:
Function LastVal(FVal, FindRng As Range, RestRng As Range)
  Dim Arr, Tmp As String, FilterArr
  LastVal = 1
  On Error Resume Next
  Arr = Evaluate("Transpose(char(8)&" & FindRng.Address & "&char(8)&" & RestRng.Address & "&char(8))")
  Tmp = vbBack & FVal & vbBack
  FilterArr = Filter(Arr, Tmp)
  LastVal = Replace(Replace(FilterArr(UBound(FilterArr)), Tmp, ""), vbBack, "")
End Function
Các bạn kiểm tra giúp xem có chổ nào không ổn không?
Em chào Thầy cô & anh chị!
Em muốn áp dụng code trên vào bài thực tế của em với các điều kiện sau:
1/ Nếu tìm không thấy thì trả về trống
em đã sửa
Mã:
LastVal = 1
sửa lại
Mã:
LastVal = ""

2/ Code trên chỉ cho kết quả khi dò tìm cùng trên một Sheet, nếu dò tìm khác sheet thì không cho kết quả
VD: như trong Sheet2 của em tìm không ra kết quả
Vậy giúp em sửa code để có thể dò tìm ở mọi sheet
Em cảm ơn!
 

File đính kèm

Upvote 0
Em chào Thầy cô & anh chị!
Em muốn áp dụng code trên vào bài thực tế của em với các điều kiện sau:
1/ Nếu tìm không thấy thì trả về trống
em đã sửa
Mã:
LastVal = 1
sửa lại
Mã:
LastVal = ""

2/ Code trên chỉ cho kết quả khi dò tìm cùng trên một Sheet, nếu dò tìm khác sheet thì không cho kết quả
VD: như trong Sheet2 của em tìm không ra kết quả
Vậy giúp em sửa code để có thể dò tìm ở mọi sheet
Em cảm ơn!
Lấy code bài 6 mà xài, chỉ sửa lại tí thôi
PHP:
Function LastVal(FVal, FRng As Range, ColIndex As Long)
  Dim Tmp As Range
  LastVal = ""
  Set Tmp = FRng.Resize(, 1).Find(FVal, , xlValues, xlWhole, , xlPrevious, True)
  If Not Tmp Is Nothing Then LastVal = Tmp(, ColIndex).Value
End Function
 
Upvote 0
Lấy code bài 6 mà xài, chỉ sửa lại tí thôi
PHP:
Function LastVal(FVal, FRng As Range, ColIndex As Long)
  Dim Tmp As Range
  LastVal = ""
  Set Tmp = FRng.Resize(, 1).Find(FVal, , xlValues, xlWhole, , xlPrevious, True)
  If Not Tmp Is Nothing Then LastVal = Tmp(, ColIndex).Value
End Function
Kết qủa nó báo #VALUE!
Thầy xem lại giúp em. Em cảm ơn.
 

File đính kèm

Upvote 0
Kết qủa nó báo #VALUE!
Thầy xem lại giúp em. Em cảm ơn.
Thôi dùng tạm for i cho lành
PHP:
Option Explicit
Function LastVal(FVal, FindRng As Range, RestRng As Range)
Dim i&
Dim Arr, rArr
LastVal = ""
On Error Resume Next
If Len(FVal) = 0 Then Exit Function
Arr = FindRng
rArr = RestRng
For i = UBound(Arr) To LBound(Arr) Step -1
  If Arr(i, 1) = FVal Then
    LastVal = rArr(i, 1)
    Exit For
  End If
Next i
Erase Arr, rArr
End Function
 
Upvote 0
Kết qủa nó báo #VALUE!
Thầy xem lại giúp em. Em cảm ơn.

Vụ gì vậy?
Bạn nhìn hàm thì phải biết cách dùng chứ
Hàm sửa lại này phải viết theo cú pháp khác
Ví dụ công thức tại G2 phải là:
PHP:
=LastVal(F2,A2:B17,2)
Giống cú pháp của VLOOKUP ấy
 
Upvote 0
Từ đầu tới giờ toàn là tìm kiếm theo cột thôi ạ. Các bác cho em hỏi nếu em muốn tìm vị trí của ô cuối cùng trong hàng thỏa mãn điều kiện thi phải làm thế nào ạ
 
Upvote 0
Web KT

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

Back
Top Bottom