Tìm kiếm với nhiều điều khiện (1 người xem)

Liên hệ QC

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

promoraiati

Thành viên mới
Tham gia
5/7/12
Bài viết
3
Được thích
0
Các bác sửa giúp dùm em code hàm FindConditions tìm kiếm với điều kiện trong file đính kèm. !$@!!

Public Function FindConditions(Table As Range, Val1 As Integer, Val2 As String, Val3 As Integer, Val4 As String)
'Table la bang du lieu
'Val1 la dieu kien toa do X
'val2 la dieu kien huong toa do E
'Val3 la dieu kien toa do Y
'Val4 la dieu kien huong toa do N


Dim i As Integer


For i = 1 To 32
If (Table.Cells(i, 1) = Val1) And (Table.Cells(i, 2) = Val2) And (Table.Cells(1, 3) = Val3) And (Table.Cells(i, 4) = Val4) Then
FindConditions = Table.Cells(i, 5)
Exit For
End If
Next i


End Function
 

File đính kèm

Thứ nhất, hàm viết "nhầm" biến i thành số 1 ở câu lệnh If ... And (Table.Cells(1, 3) = Val3) ..., sửa thành If ... And (Table.Cells(i, 3) = Val3) ...
Thứ hai, công thức áp dụng hàm chưa chuẩn về các tham chiếu tương đối/tuyệt đối: công thức tại ô K5 là:
=findConditions($B$5:$F$36,K$4,K$3,$J5,$I5)
 
Upvote 0
Các bác sửa giúp dùm em code hàm FindConditions tìm kiếm với điều kiện trong file đính kèm. !$@!!

Public Function FindConditions(Table As Range, Val1 As Integer, Val2 As String, Val3 As Integer, Val4 As String)
'Table la bang du lieu
'Val1 la dieu kien toa do X
'val2 la dieu kien huong toa do E
'Val3 la dieu kien toa do Y
'Val4 la dieu kien huong toa do N


Dim i As Integer


For i = 1 To 32
If (Table.Cells(i, 1) = Val1) And (Table.Cells(i, 2) = Val2) And (Table.Cells(1, 3) = Val3) And (Table.Cells(i, 4) = Val4) Then
FindConditions = Table.Cells(i, 5)
Exit For
End If
Next i


End Function
Theo tôi hàm của bạn viết vừa thừa lại thiếu tính tổng quát:
- Thừa là vì công thức thường cũng làm được
- Thiếu tổng quát vì chẳng lẽ Table của bạn lúc nào cũng 32 dòng?
Công thức thường mà tôi muốn nói đến là cái này:
Mã:
=LOOKUP(2,1/($B$5:$B$36=K$4)/($C$5:$C$36=K$3)/($D$5:$D$36=$J5)/($E$5:$E$36=$I5),$F$5:$F$36)
Công thức này gõ vào cell K5 rồi kéo fill sang phải, xuống dưới sẽ có kết quả
-----------------
Với LOOKUP như trên, bạn muốn bao nhiêu điều kiện cũng được... còn hàm của bạn, nếu thêm 1 điều kiện nữa thì phải sửa lại code à?
 
Upvote 0
Theo tôi hàm của bạn viết vừa thừa lại thiếu tính tổng quát:
- Thừa là vì công thức thường cũng làm được
- Thiếu tổng quát vì chẳng lẽ Table của bạn lúc nào cũng 32 dòng?
Công thức thường mà tôi muốn nói đến là cái này:
Mã:
=LOOKUP(2,1/($B$5:$B$36=K$4)/($C$5:$C$36=K$3)/($D$5:$D$36=$J5)/($E$5:$E$36=$I5),$F$5:$F$36)
Công thức này gõ vào cell K5 rồi kéo fill sang phải, xuống dưới sẽ có kết quả
-----------------
Với LOOKUP như trên, bạn muốn bao nhiêu điều kiện cũng được... còn hàm của bạn, nếu thêm 1 điều kiện nữa thì phải sửa lại code à?
Cám ơn bạn rất nhiều! Thật sự mình cũng chỉ mới đọc các lệnh nên cũng không rành lắm.
Bạn có thể giải thích về hàm lookup mà bạn dùng được ko?
 
Upvote 0
Web KT

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

Back
Top Bottom