Em nhờ Anh/Chị xử lý giúp các tìm kiếm dữ liệu trả về giá trị của hàng đầu tiên
File mẫu và kết quả mong muốn e gửi kèm file.
Cám ơn Anh/Chị.
C9=INDEX($H$5:$N$5, MATCH($D$8, INDEX($H$6:$N$15, MATCH($C$8, $G$6:$G$15, 0), 0), 0))
Function TraBang(Hang As String, Cot As Integer, Optional Bang As Range)
If Bang Is Nothing Then Set Bang = [G5:N15]
Dim Rng As Range, sRng As Range, Cls As Range
Set Rng = Bang(1).Resize(Bang.Rows.Count)
TraBang = "Nothing!"
Set sRng = Rng.Find(Hang, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
For Each Cls In sRng.Resize(, Bang.Columns.Count)
If Cls.Value = Cot Then
TraBang = Bang(Cls.Column - Bang(0).Column).Value
Exit Function
End If
Next Cls
End If
End Function
Dạ, đúng cái em cần tìm.Mã:C9=INDEX($H$5:$N$5, MATCH($D$8, INDEX($H$6:$N$15, MATCH($C$8, $G$6:$G$15, 0), 0), 0))
Tương tự cho ô bên trên
Dạ, nhúng VBA thì cũng hay, nhưng với case này thì nặng tay quá ạNhàn cư vi hướng thiện:
PHP:Function TraBang(Hang As String, Cot As Integer, Optional Bang As Range) If Bang Is Nothing Then Set Bang = [G5:N15] Dim Rng As Range, sRng As Range, Cls As Range Set Rng = Bang(1).Resize(Bang.Rows.Count) TraBang = "Nothing!" Set sRng = Rng.Find(Hang, , xlFormulas, xlWhole) If Not sRng Is Nothing Then For Each Cls In sRng.Resize(, Bang.Columns.Count) If Cls.Value = Cot Then TraBang = Bang(Cls.Column - Bang(0).Column).Value Exit Function End If Next Cls End If End Function
Em xin tổng quát lại cho dễ hình dung, dùng công thức INDEX & MATCH lồng phức tạp.Mã:C9=INDEX($H$5:$N$5, MATCH($D$8, INDEX($H$6:$N$15, MATCH($C$8, $G$6:$G$15, 0), 0), 0))
Tương tự cho ô bên trên