Có cho phép tạo cột phụ không? Nếu được thì ta ghép 2 cột lại thì đơn giản. Nếu không thì bó tay vì hàm Vlookup chỉ do tìm trên cột đầu tiên thôi.



Em có bài toán như sau, mong các bác giải giúp em,em nghĩ mấy ngày rồi không ra
Yêu cầu sử dụng mấy công thức có sẵn, không xài macro
[/IMG![]()
]
Bạn đã nói thế thì tốt nhất cho dữ liệu thật lên đi, tôi có thể dùng mảng khỏi cột phụ luôn cũng được... Có điều e rằng làm xong bạn lại la làng tùm lum (vì không biết cách tùy biến theo dữ liệu thật của mình)Nếu không còn cách nào khác đanh làm vậy, nhưng bác lưu ý giùm là dữ liệu thực của mình khôn chỉ nằm ở cột D và còn ở cột E,F,G.... hi vong bác không làm chừng ấy cột phụ![]()
Mình dùng hàm tự tạo bạn xem thử nhé
Bạn đã nói thế thì tốt nhất cho dữ liệu thật lên đi, tôi có thể dùng mảng khỏi cột phụ luôn cũng được... Có điều e rằng làm xong bạn lại la làng tùm lum (vì không biết cách tùy biến theo dữ liệu thật của mình)
Dùng Công thức mảng nha bạn. Bấm Ctrl+Shift+Enter khi gõ xong công thức.Cũng như dữ liệu kia nhưng nếu không xài cột phụ và hàm tự tao thì tốt hơn, nói chung tuỳ biến chắc em làm được, mong bác giúp em
=INDIRECT("D"&MAX((L3=$B$3:$B$8)*($C$3:$C$8="fiber")*ROW($B$3:$B$8)))
Dùng Công thức mảng nha bạn. Bấm Ctrl+Shift+Enter khi gõ xong công thức.
M3 :
PHP:=INDIRECT("D"&MAX((L3=$B$3:$B$8)*($C$3:$C$8="fiber")*ROW($B$3:$B$8)))



Sao lại không được?. Thử biết liềnThế xài công thức mảng là không kéo từ trên xuống dc hả bác
Option Explicit
Function gpeVLOOKUP(LookUpValue, LookUpRange As Range, Col As Byte, sCriteria As String)
Dim Cls As Range, sRng As Range: Dim Rws As Long
Rws = LookUpRange.Rows.Count + 1
Set sRng = LookUpRange.Cells(0, 1).Resize(Rws).Find(LookUpValue, , xlFormulas, xlWhole)
If sRng Is Nothing Then
gpeVLOOKUP = "Nothing": Exit Function
Else
For Each Cls In Range(sRng, LookUpRange(Rws, 1))
If Cls.Value = LookUpValue And Cls.Offset(, 1).Value = sCriteria Then
gpeVLOOKUP = Cls.Offset(, Col).Value: Exit Function
End If
Next Cls
End If
End Function
Sao lại không được?. Thử biết liền
PHP:Option Explicit Function gpeVLOOKUP(LookUpValue, LookUpRange As Range, Col As Byte, sCriteria As String) Dim Cls As Range, sRng As Range: Dim Rws As Long Rws = LookUpRange.Rows.Count + 1 Set sRng = LookUpRange.Cells(0, 1).Resize(Rws).Find(LookUpValue, , xlFormulas, xlWhole) If sRng Is Nothing Then gpeVLOOKUP = "Nothing": Exit Function Else For Each Cls In Range(sRng, LookUpRange(Rws, 1)) If Cls.Value = LookUpValue And Cls.Offset(, 1).Value = sCriteria Then gpeVLOOKUP = Cls.Offset(, Col).Value: Exit Function End If Next Cls End If End Function
em thử rồi, mà hok được, cũng phải Ctrl+Shift+Enter cho tưng ô
có bác nào có cách khác dễ hiểu hơn chút kô, bên công ty em toàn gà excel cả hả, file này nằm trên sever, em may ra còn biết chứ ai mà đụng vào chắc hoa mắt luôn quá, từ nhỏ tới giờ chưa có xài ct mảng
Xin lỗi em đào mồ topic tý ạ.PHP:Option Explicit Function gpeVLOOKUP(LookUpValue, LookUpRange As Range, Col As Byte, sCriteria As String) Dim Cls As Range, sRng As Range: Dim Rws As Long Rws = LookUpRange.Rows.Count + 1 Set sRng = LookUpRange.Cells(0, 1).Resize(Rws).Find(LookUpValue, , xlFormulas, xlWhole) If sRng Is Nothing Then gpeVLOOKUP = "Nothing": Exit Function Else For Each Cls In Range(sRng, LookUpRange(Rws, 1)) If Cls.Value = LookUpValue And Cls.Offset(, 1).Value = sCriteria Then gpeVLOOKUP = Cls.Offset(, Col).Value: Exit Function End If Next Cls End If End Function