Đăng ký học Excel và VBA cùng GPE tháng 10 - TPHCM

Đăng ký học Excel và VBA cùng GPE tháng 11 - TPHCM

Hàm tìm kiếm với nhiều điều kiện trong Excel 2003 (= Vlookups và Hlookups 2007)

Thảo luận trong 'Hàm và công thức Excel' bắt đầu bởi adam_tran, 29 Tháng mười một 2010.

  1. adam_tran

    adam_tran Thành viên danh dự

    Chẳng biết có ai post chưa, google không thấy, mình thấy cái này hay hay, post lên chia xẻ cùng mọi người.

    Các bạn thấy rằng trong Excel 2003 trở về trước, hàm VLOOKUP chỉ tìm với 1 điều kiện. Kết hợp các hàm INDEX, MATCH, IF với hàm mảng sẽ cho kết quả tìm thỏa mãn nhiều điều kiện.

    Cú pháp: {=INDEX(LookUpRange, MATCH(1, ((Array1=DK1)*(Array2=DK2)*(....)), 0), Column)}
    Thí dụ: Có 1 bảng có các cột: Mã hàng, khách hàng, Bộ phận, Số lượng ... Tìm kiếm Mã hàng A do Khách Hàng B mua, thuộc bộ phận C (SL >0), cột mã hàng là cột đầu

    Cú pháp: {=INDEX(Data, MATCH(1, ((KH="A")*(Bophan="B")*(SL>0)), 0), 1)}

    Lưu ý: Nếu nhiều dòng thỏa điều kiện thì hàm chỉ lấy dòng đầu tiên giống VLOOKUP
     

    Các file đính kèm:

    Lần chỉnh sửa cuối: 29 Tháng mười một 2010
  2. dat_butmuc

    dat_butmuc weitə r ə'pɔn prɔvidəns

    INDEX(), MATCH(), IF ...kết hợp thì có nhiều chứ riêng
    thì chưa thấy & cũng chưa hiểu cấu trúc nó ra làm sao -> mặc dùng đang dùng Excel~2007 ?

    Bạn có file chi tiết và công thức của nó không ? (đừng dùng hàm tự tạo...)
     
  3. toanthang1975

    toanthang1975 Thành viên mới

    Cũng với VD trên, các bạn giúp mình tìm kiếm điều kiện ở cột E (E2): nếu có rất nhiều dòng thì khi tìm thấy A cột A2 thì đáp sỗ sẽ là sẽ bằng tổng số lượng ở cột D. VD: cột A có 3 chữ A thì sẽ bằng tổng của 3 giá trị D2,D4,D11 (=10+35+89=134).
    Thank all
     
  4. nghiaphuc

    nghiaphuc Hoàng Nghĩa Phúc Staff Member

    Có phải ý bạn là tính tổng (cột D) của các mã hàng loại A?
    Nếu đúng thì chỉ đơn giản là SUMIF thôi: =SUMIF(A2:A16,"A",D2:D16)
    Còn nếu thêm nhiều điều kiện thì có thể dùng SUMPRODUCT hoặc SUMIFS (nếu sử dụng Excel 2007, 2010)
     
  5. phamdung244

    phamdung244 Thành viên mới

    Mình không hiểu sao lại có thêm dấu { trước dấu = Index(.....}. Với lại khi mình copy công thức ở ô A20 sang ô A21 lại không ra được kết quả. Bạn hướng dẫn chi tiết lại giùm mình hen. Cảm ơn bạn nhiều
     
  6. phanoanh2583

    phanoanh2583 Thành viên mới

    dấu đấy hình như là công thức mảng, muốn câu lệnh thực hiện phải nhấn tổ hợp 3 phím ctr , shift, enter
     
  7. theblueserenade

    theblueserenade Thành viên mới

    Mình muốn hỏi là có cách nào để tìm kiếm nếu nhiều dòng đều thỏa mãn điều kiện và mình muốn lấy tất cả những dòng đó không. Trong ví dụ nếu khách hàng A ở bộ phận B mua mã hàng D nên số lượng >0, mình muốn lấy cả mã hàng D và XXX thỏa mãn điều kiện cho trước.
     
  8. kyu_86

    kyu_86 Thành viên mới

    Minh ko hieu tai sao trong ham match MATCH(1, ((KH="A")*(Bophan="B")*(SL>0)), 0) , trị do lai la 1 nhi? Moi nguoi ai biet giai thich giup minh voi.

    nghiaphuc: Lần sau bạn nhớ gõ tiếng Việt có dấu nhé.
     
    Chỉnh sửa lần cuối bởi điều hành viên: 27 Tháng hai 2014
  9. zztantaibazz

    zztantaibazz Thành viên chính thức

    ((KH="A")*(Bophan="B")*(SL>0))
    Trong phần này nó sẽ tạo ra 1 mãng gồm {True, false, true, ...}*{
    True, false, true, ...}*{True, false, true, ...} = {1,0,1,1,1,0....}
    Do đó phải dùng số 1 cho LOOKUP_VALUE trong hàm MATCH này

     
  10. kyu_86

    kyu_86 Thành viên mới

    Xin các cao thủ giúp đỡ e. E loay hoay không biết dùng hàm tìm kiếm thế nào. E gửi lên đây file đính kèm, mong các cao thủ chỉ giáo.
     

    Các file đính kèm:

  11. bebo021999

    bebo021999 Thành viên gắn bó

    Tại M2:
    Mã:
    =CHAR(LARGE(CODE($B$3:$B$17)*$C$3:$I$17*(Model=$L2),COLUMN(A:A)))
    Kết thúc bằng Ctrl-shift-enter.
    Copy sang phải và xuống dưới.
     
  12. kyu_86

    kyu_86 Thành viên mới

    Thank bác, e đã thử vào tình huống cụ thể nhưng kết quả không được như ý. Tình huống thực tế là mã dài hơn. Bác xem file. **~**

     

    Các file đính kèm:

  13. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Công thức tại M2:
    Mã:
    =INDEX(Part,MATCH(1,OFFSET(Part,,MATCH($L2,Model,0))))
    Công thức tại N2:
    Mã:
    =INDEX(Part,MATCH(1,OFFSET(Part,,MATCH($L2,Model,0)),[COLOR=#ff0000]0[/COLOR]))
    2 công thức này chỉ khác nhau duy nhất ở cái số 0 màu đỏ thôi
     
  14. kyu_86

    kyu_86 Thành viên mới

    Bác đúng là cao thủ. E cảm ơn cao thủ đã giúp đỡ --=0

     
  15. ntvronin

    ntvronin Thành viên mới

    Cùng băn khoăn với bạn này? Cao thủ nào biết thì chỉ giúp.
     
  16. COTOCOTO

    COTOCOTO Thành viên mới

    =+if(type(match($d$3,'hàng 3 tháng'!$g$3:$g$845,0))=16,"",match($d$3,'hàng 3 tháng'!$g$3:$g$845,0)). Mình có hàm như này.nhưng muốn tìm các giá trị có chung $d$3 thì sửa hàm kiểu gì ạ mời các thánh giúp giùm em cái . đa tạ . đa tạ.
     
  17. Ba Tê

    Ba Tê Cạo Rồi Vẫn Gội

    Thấy file mới nói "chiện" được, xem bạn xài office nào.
    Kết quả mẫu là sao? (các giá trị có chung... nằm ở đâu).
    Mời các "thánh" chắc hơi bị lâu. Ở đây toàn người bình thường, chưa ai lên cấp "thánh" cả.
     
  18. nttcntn

    nttcntn Thành viên chính thức

    Các Bác có thể giải thích hoạt động của hàm Match với lựa chon Match_type = 1 được không.
    Mình thử hoài mà ko hiểu quy luật ra làm sao.
     

    Các file đính kèm:

  19. Ba Tê

    Ba Tê Cạo Rồi Vẫn Gội

    Lần chỉnh sửa cuối: 6 Tháng tám 2016
  20. nttcntn

    nttcntn Thành viên chính thức

Chia sẻ trang này