Trang 1/2 1 2 cuốicuối
Hiển thị kết quả tìm kiếm từ 1 đến 10 trên tổng số: 11
  1. #1
    Tham gia ngày
    06 2012
    Bài gởi
    75
    Cảm ơn
    32
    Được cảm ơn 3 lần trong 3 bài viết

    VLOOKUP nâng cao (hàm tự tạo)

    Chào các bác!

    Em có 1 file muốn xây dựng 1 hàm tự tạo tương tự như VLOOKUP (sẵn có trong Excel), đặc điểm của hàm tự tạo này sẽ nâng cao hơn áp dụng cho việc tìm kiếm ngược về cột bên trái.

    Chi tiết em gửi trong file đính kèm.

    Các bác bớt chút thời gian xem qua và giúp đỡ!
    Tập tin đính kèm Tập tin đính kèm

  2. #2
    Tham gia ngày
    09 2009
    Nơi Cư Ngụ
    Ayun Pa - Gia Lai
    Bài gởi
    4,699
    Cảm ơn
    10,367
    Được cảm ơn 8,325 lần trong 4,010 bài viết
    Trích Nguyên văn bởi AndOrNot View Post
    Chào các bác!

    Em có 1 file muốn xây dựng 1 hàm tự tạo tương tự như VLOOKUP (sẵn có trong Excel), đặc điểm của hàm tự tạo này sẽ nâng cao hơn áp dụng cho việc tìm kiếm ngược về cột bên trái.

    Chi tiết em gửi trong file đính kèm.

    Các bác bớt chút thời gian xem qua và giúp đỡ!
    Bạn tham khảo topic này xem có đúng ý bạn không: Dò tìm nâng cao với hàm VlookupD
    Hãy biết nhìn lên để thấy mình còn kém cỏi
    Hãy biết nhìn xuống để thấy mình có thể giúp nhiều người.
    Evaluate | SpeedOn | ExcelDiet | Scripting.Dictionary | Array | VBScript-RegExp

  3. #3
    Tham gia ngày
    02 2009
    Nơi Cư Ngụ
    Thuận An, Bình Dương
    Bài gởi
    4,540
    Cảm ơn
    3,537
    Được cảm ơn 5,420 lần trong 3,301 bài viết
    Trích Nguyên văn bởi AndOrNot View Post
    Chào các bác!

    Em có 1 file muốn xây dựng 1 hàm tự tạo tương tự như VLOOKUP (sẵn có trong Excel), đặc điểm của hàm tự tạo này sẽ nâng cao hơn áp dụng cho việc tìm kiếm ngược về cột bên trái.

    Chi tiết em gửi trong file đính kèm.

    Các bác bớt chút thời gian xem qua và giúp đỡ!
    hàm excel có sẵn rồi viết code làm chi
    =INDEX($B$5:$B$10,MATCH(H14,$C$5:$C$10,0),0)
    Nếu code thì đại loại thế này, bạn nghiên cứu thử nha
    PHP Code:
    Function vlookupLeft(dk As Stringvung As Rangecot As Long)
    Dim tim
    Set tim 
    vung.Find(dk, , , 1)
    If 
    Not vung Is Nothing Then
       vlookupLeft 
    tim.Offset(, -cot)
    End If
    End Function 
    cú pháp thế này
    =vlookupLeft(H14,C5:C10,1)
    thay đổi nội dung bởi: quanghai1969, 24-04-13 lúc 10:55 PM

  4. Có 2 thành viên cảm ơn quanghai1969 về bài viết này:


  5. #4
    Tham gia ngày
    09 2009
    Nơi Cư Ngụ
    Ayun Pa - Gia Lai
    Bài gởi
    4,699
    Cảm ơn
    10,367
    Được cảm ơn 8,325 lần trong 4,010 bài viết
    Thêm một tham khảo cho bạn:
    Function MVlookup(LVal As Variant, Rng As Range, Col1 As Long, Col2 As Long) As Variant
    Dim Rng1 As Range, Tem As Range
    Set Rng1 = Rng.Offset(, Col1 - 1).Resize(, 1)
    Set Tem = Rng1.Find(LVal, LookIn:=xlValues, lookat:=xlWhole)
    If Tem Is Nothing Then
    MVlookup = "#N/A"
    Else
    MVlookup = Tem.Offset(, Col2 - Col1)
    End If
    End Function

    Cú pháp: MVlookup(Trị dò, Vùng, Cột tìm kiếm, Cột chứa kết quả)

    Bạn tham khảo trong file nhé.
    Tập tin đính kèm Tập tin đính kèm
    Hãy biết nhìn lên để thấy mình còn kém cỏi
    Hãy biết nhìn xuống để thấy mình có thể giúp nhiều người.
    Evaluate | SpeedOn | ExcelDiet | Scripting.Dictionary | Array | VBScript-RegExp

  6. Có 2 thành viên cảm ơn nghiaphuc về bài viết này:


  7. #5
    Tham gia ngày
    06 2008
    Bài gởi
    24,226
    Cảm ơn
    13,902
    Được cảm ơn 43,158 lần trong 19,519 bài viết
    Trích Nguyên văn bởi AndOrNot View Post
    Chào các bác!

    Em có 1 file muốn xây dựng 1 hàm tự tạo tương tự như VLOOKUP (sẵn có trong Excel), đặc điểm của hàm tự tạo này sẽ nâng cao hơn áp dụng cho việc tìm kiếm ngược về cột bên trái.

    Chi tiết em gửi trong file đính kèm.

    Các bác bớt chút thời gian xem qua và giúp đỡ!
    Đừng nói là dò ngược, thậm chí dò theo nhiều điều kiện cũng mần tuốt. Đó là LOOKUP
    Công thức tại I14:
    Code:
    =LOOKUP(2,1/($C$5:$C$10=$H14),$E$5:$E$10)
    Công thức tại J14:
    Code:
    =LOOKUP(2,1/($C$5:$C$10=$H14),$B$5:$B$10)
    Khỏi cần hàm tự tạo, một hàm LOOKUP duy nhất
    --------------
    Còn việc "chế" ra hàm gần giống như VLOOKUP thì thôi... hãy quên đi. Làm được giống như nó cũng là chuyện không thể nào chứ đừng nói là NÂNG CAO:
    - VLOOKUP có khả năng hoạt động trên Range lẩn Array
    - VLOOKUP có khả năng dò tìm chính xác và dò tương đối (ta muốn vậy cũng hơi mệt)
    - VLOOKUP có khả năng dò tìm từ nguồn của file khác (cái này ta muốn cũng e rằng không được)
    vân vân...
    thay đổi nội dung bởi: ndu96081631, 25-04-13 lúc 07:14 AM

  8. Có 5 thành viên cảm ơn ndu96081631 về bài viết này:


  9. #6
    Tham gia ngày
    06 2012
    Bài gởi
    75
    Cảm ơn
    32
    Được cảm ơn 3 lần trong 3 bài viết
    Trích Nguyên văn bởi nghiaphuc View Post
    Thêm một tham khảo cho bạn:
    Function MVlookup(LVal As Variant, Rng As Range, Col1 As Long, Col2 As Long) As Variant
    Dim Rng1 As Range, Tem As Range
    Set Rng1 = Rng.Offset(, Col1 - 1).Resize(, 1)
    Set Tem = Rng1.Find(LVal, LookIn:=xlValues, lookat:=xlWhole)
    If Tem Is Nothing Then
    MVlookup = "#N/A"
    Else
    MVlookup = Tem.Offset(, Col2 - Col1)
    End If
    End Function

    Cú pháp: MVlookup(Trị dò, Vùng, Cột tìm kiếm, Cột chứa kết quả)

    Bạn tham khảo trong file nhé.
    Cảm ơn bác! Đúng ý của em rồi

  10. #7
    Tham gia ngày
    09 2008
    Bài gởi
    2,805
    Cảm ơn
    2,896
    Được cảm ơn 3,684 lần trong 2,056 bài viết

    Hàm LOOKUP() chưa thể trả về hơn 1 giá trị!

    Hay tác giả topic đi theo hướng này có nghĩa hơn.

    Trên diễn đàn cũng đã có chứ không fải không!

    Nhưng bạn thử viết trước khi tìm xem sao?

    Chúc thành công!
    (húc ngày mới iên lành!

  11. #8
    Tham gia ngày
    06 2012
    Bài gởi
    75
    Cảm ơn
    32
    Được cảm ơn 3 lần trong 3 bài viết
    Trích Nguyên văn bởi ndu96081631 View Post
    Đừng nói là dò ngược, thậm chí dò theo nhiều điều kiện cũng mần tuốt. Đó là LOOKUP
    Công thức tại I14:
    Code:
    =LOOKUP(2,1/($C$5:$C$10=$H14),$E$5:$E$10)
    Công thức tại J14:
    Code:
    =LOOKUP(2,1/($C$5:$C$10=$H14),$B$5:$B$10)
    Khỏi cần hàm tự tạo, một hàm LOOKUP duy nhất
    --------------
    Còn việc "chế" ra hàm gần giống như VLOOKUP thì thôi... hãy quên đi. Làm được giống như nó cũng là chuyện không thể nào chứ đừng nói là NÂNG CAO:
    - VLOOKUP có khả năng hoạt động trên Range lẩn Array
    - VLOOKUP có khả năng dò tìm chính xác và dò tương đối (ta muốn vậy cũng hơi mệt)
    - VLOOKUP có khả năng dò tìm từ nguồn của file khác (cái này ta muốn cũng e rằng không được)
    vân vân...
    Cảm ơn thầy, bây giờ em mới biết cái hàm này có sẵn trong Excel.

  12. #9
    Tham gia ngày
    06 2008
    Bài gởi
    24,226
    Cảm ơn
    13,902
    Được cảm ơn 43,158 lần trong 19,519 bài viết
    Trích Nguyên văn bởi AndOrNot View Post
    Cảm ơn bác! Đúng ý của em rồi
    Có khi nào bạn có nhu cầu tìm kết quả ở CỘT 1, theo điều kiện CỘT 3 > 10 và <20 không ta?
    Hoặc giả dò tìm kết quả ở CỘT 1, theo điều kiện CỘT 4 có ký tự đầu là "T"CỘT 3 > 100
    Đây là những nhu cầu dò tìm rất bình thường
    khi ấy code sẽ viết thế nào để bảo đảm tính TỔNG QUÁT của nhu cầu (mà ta chưa lường trước)?
    Ẹc... Ẹc...
    --------------
    Góp ý với bạn: Không phải cái gì dùng VBA cũng ngon lành cả đâu (vì nếu thế thì bác Bill tốn công xây dựng hàm Excel để làm gì)
    Cái gì có thể giải quyết bằng công thức ở mức đơn giản thì cứ xài... VBA chỉ nên dùng trong trường hợp ta chắc chắn rẳng không còn cách nào khác và nó là giải pháp tốt nhất
    --------------------------
    Trích Nguyên văn bởi ChanhTQ@ View Post
    Hàm LOOKUP() chưa thể trả về hơn 1 giá trị!
    LOOKUP là hàm mảng mà sư phụ. Sao lại không thể trả về hơn 1 giá trị chứ
    thay đổi nội dung bởi: ndu96081631, 25-04-13 lúc 07:54 AM

  13. Có 2 thành viên cảm ơn ndu96081631 về bài viết này:


  14. #10
    Tham gia ngày
    08 2012
    Bài gởi
    1,293
    Cảm ơn
    539
    Được cảm ơn 2,008 lần trong 1,040 bài viết
    Trích Nguyên văn bởi nghiaphuc View Post
    Thêm một tham khảo cho bạn:
    Function MVlookup(LVal As Variant, Rng As Range, Col1 As Long, Col2 As Long) As Variant
    Dim Rng1 As Range, Tem As Range
    Set Rng1 = Rng.Offset(, Col1 - 1).Resize(, 1)
    Set Tem = Rng1.Find(LVal, LookIn:=xlValues, lookat:=xlWhole)
    If Tem Is Nothing Then
    MVlookup = "#N/A"
    Else
    MVlookup = Tem.Offset(, Col2 - Col1)
    End If
    End Function

    Cú pháp: MVlookup(Trị dò, Vùng, Cột tìm kiếm, Cột chứa kết quả)

    Bạn tham khảo trong file nhé.
    Trích Nguyên văn bởi AndOrNot View Post
    Cảm ơn bác! Đúng ý của em rồi
    Theo em dùng hàm tự tạo trên worksheet thì nên sửa câu lệnh :
    PHP Code:
    MVlookup "#N/A" 
    Thành
    PHP Code:
    MVlookup CVErr(xlErrNA

  15. Có 3 thành viên cảm ơn hungpecc1 về bài viết này:


Trang 1/2 1 2 cuốicuối

Thông tin về chủ đề này

Users Browsing this Thread

Hiện có 1 người đang xem đề tài này. (0 thành viên và 1 khách)

Bookmarks

Bookmarks

Quyền Sử Dụng Ở Diễn Ðàn

  • Bạn không thể đăng đề tài mới
  • Bạn không thể đăng trả lời
  • Bạn không thể đăng file đính kèm.
  • Bạn không thể sửa bài viết.
  •  

Mudim v0.8 Tắt VNI Telex Viqr Tổng hợp
Chính tả Bỏ dấu kiểu mới  [Bật/Tắt (F9)]