Diễn đàn giaiphapexcel.com sẽ chuyển sang hoạt động ở link sau

http://www.giaiphapexcel.com/diendan/forums


[CLICK] học VBA ở Đà Nẵng tháng 5/2017


    • Một cách khác VLOOKUP từ phải sang trái đơn giản hơn

      Một cách khác VLOOKUP từ phải sang trái đơn giản hơn


      Nhân bài viết Một cách VLOOKUP từ phải sang trái trước, một số người đã phản hồi với kyo rằng hàm CHOOSE còn mới lạ và không được thân thuộc. Do vậy, nhân đây kyo xin giới thiệu cách kết hợp hàm VLOOKUP và hàm IF (cực kỳ quen thuộc) để giải bài toán này.

      Cũng với bài toán cũ từ bài trước ,làm cách nào để VLOOKUP mã để tìm tên?




      Bạn hãy dùng kết hợp như sau: =VLOOKUP(F2,IF({1,0},C2:C7,A2:A7),2,0)
      Vì mảng của bạn đã nằm trong dấu {} nên không cần phải Ctrl + Shift + Enter nhé, chỉ cần Enter thôi. Và đây là kết quả:




      Một bổ sung quan trọng cho những bạn sử dụng thiết lập hệ thống ngăn cách là dấu chấm phẩy “;” thay vì dấu phẩy “,” (cảm ơn chú Mỹ - ptm0412).
      1. Dấu ngăn cách của Excel là phẩy:
      - dấu phẩy ngăn cách các phần tử cùng dòng khác cột.
      - dấu chấm phẩy ngăn cách các dòng .

      2. Dấu ngăn cách của Excel là chấm phẩy:
      - dấu \ ngăn cách các phần tử cùng dòng khác cột.
      - dấu chấm phẩy ngăn cách các dòng.

      Vậy, nếu dấu ngăn cách của VLOOKUP là phẩy, thì dấu phân cách của mảng là {1,0}. Nếu dấu ngăn cách của VLOOKUP là chấm phẩy, thì dấu phân cách của mảng là {1\0}.

      Một số bài viết có liên quan:
      1/ Sử dụng định dạng có điều kiện (Conditional Formatting) để làm nổi bật ngày tháng trong Excel
      2/ 29 cách tiết kiệm thời gian với các công thức Excel (phần 1)
      3/ Sử dụng hàm Subtotal
      4/ Cách viết hàm hiệu quả
      5/
      Sử dụng hàm Subtotal
      6/ [VIDEO] Hướng dẫn cách tạo PivotTable
      7/ [VIDEO] Tạo Timeline trong Excel
      8/
      Thủ thuật sử dụng tên ở vùng giao nhau của hai dãy
      9/ Tổng hợp dữ liệu trên nhiều bảng tính
      10/ SUMPRODUCT và Công thức mảng - Phép tính có nhiều điều kiện
      Góp ý 9 Góp ý
      1. May Queen's Avatar
        May Queen -
        Hi Anh,

        Trong công thức: VLOOKUP(F2,IF({1,0},C2:C7,A2:A7),2,0) thì mảng {1,0} có ý nghĩa như thế nào? và tại sao côt tham chiếu lại là 2 ạ vì nếu tính từ trái sang thì sẽ là cột 3 ạ. Anh có thể diễn giải công thức này được không ạ?

        Em cảm ơn nhiều ạ.
      1. kyo's Avatar
        kyo -
        Trích Nguyên văn bởi May Queen View Post
        Hi Anh,

        Trong công thức: VLOOKUP(F2,IF({1,0},C2:C7,A2:A7),2,0) thì mảng {1,0} có ý nghĩa như thế nào? và tại sao côt tham chiếu lại là 2 ạ vì nếu tính từ trái sang thì sẽ là cột 3 ạ. Anh có thể diễn giải công thức này được không ạ?

        Em cảm ơn nhiều ạ.
        Chào bạn,

        Theo kyo hiểu thì mảng {1,0} của hàm IF trong trường hợp này nó có nghĩa là {TRUE,FALSE}. Điều này có nghĩa, công thức trên sẽ được diễn đạt theo từng bước như sau:

        IF(TRUE, "AAA", "Chó") = AAA (vì là TRUE)
        IF(FALSE, "AAA", "Chó") = Chó (vì là FALSE)

        IF(TRUE, "DDD", "Mèo") = DDD (vì là TRUE)
        IF(FALSE, "DDD", "Mèo") = Mèo (vì là FALSE)

        Và tương tự,...

        Như vậy, đến cuối, khi hàm IF kết thúc, chúng ta sẽ có một mảng tương ứng 1 bảng như sau:
        AAA - Chó
        DDD - Mèo
        FFF - Ngựa
        BBB - Hoa
        CCC - Thỏ
        RRR - Cà Rốt

        Và theo nguyên tắc của VLOOKUP, dữ liệu nguồn với 1 bảng 2 cột và cột tham chiếu là cột 1, cột lấy dữ liệu col_index_num sẽ = 2.

        Kyo.
      1. NGOCTOAN's Avatar
        NGOCTOAN -
        Trích Nguyên văn bởi kyo View Post
        Chào bạn,

        Theo kyo hiểu thì mảng {1,0} của hàm IF trong trường hợp này nó có nghĩa là {TRUE,FALSE}. Điều này có nghĩa, công thức trên sẽ được diễn đạt theo từng bước như sau:

        IF(TRUE, "AAA", "Chó") = AAA (vì là TRUE)
        IF(FALSE, "AAA", "Chó") = Chó (vì là FALSE)

        IF(TRUE, "DDD", "Mèo") = DDD (vì là TRUE)
        IF(FALSE, "DDD", "Mèo") = Mèo (vì là FALSE)

        Và tương tự,...

        Như vậy, đến cuối, khi hàm IF kết thúc, chúng ta sẽ có một mảng tương ứng 1 bảng như sau:
        AAA - Chó
        DDD - Mèo
        FFF - Ngựa
        BBB - Hoa
        CCC - Thỏ
        RRR - Cà Rốt

        Và theo nguyên tắc của VLOOKUP, dữ liệu nguồn với 1 bảng 2 cột và cột tham chiếu là cột 1, cột lấy dữ liệu col_index_num sẽ = 2.

        Kyo.
        Chào Anh Kyo,

        Công thức dùng If này nó bị lỗi #N\A nếu trong bảng lấy dữ liệu ra có 2 lần mã AAA để tra cứu. ANh có cách nào khác không, trong khi dùng Choose thi không bị lỗi.

        Cảm ơn Anh.

        NgọcToan
      1. kyo's Avatar
        kyo -
        Trích Nguyên văn bởi NGOCTOAN View Post
        Chào Anh Kyo,

        Công thức dùng If này nó bị lỗi #N\A nếu trong bảng lấy dữ liệu ra có 2 lần mã AAA để tra cứu. ANh có cách nào khác không, trong khi dùng Choose thi không bị lỗi.

        Cảm ơn Anh.

        NgọcToan
        Hi anh,

        Kyo không bị như anh, anh có thể xem hình nhé. Anh xem lại hoặc gửi file lên để mọi người xem thử anh.

        Kyo.
      1. nnpc's Avatar
        nnpc -
        bài viết hay. cảm ơn bác, Mấy hôm nay toàn phải chỉnh lại bảng. copy cột mã lên cột 1 để tính.
      1. huynhdinhtuananh's Avatar
        huynhdinhtuananh -
        rất cám ơn về bài viết của Kyo
      1. numberone_bn's Avatar
        numberone_bn -
        Trích Nguyên văn bởi NGOCTOAN View Post
        Chào Anh Kyo,

        Công thức dùng If này nó bị lỗi #N\A nếu trong bảng lấy dữ liệu ra có 2 lần mã AAA để tra cứu. ANh có cách nào khác không, trong khi dùng Choose thi không bị lỗi.

        Cảm ơn Anh.

        NgọcToan
        Bạn kiểm tra mảng của bạn đi nhé, là {1\0} hay {1;0} {1,0}.mình lúc đầu cũng bị như bạn.Sau thì ok.
      1. Ngọc Trọng's Avatar
        Ngọc Trọng -
        Mình thấy có thể ứng dụng hàm LOOKUP thay vì hàmVLOOKUP ở đây,
        G2=LOOKUP(F2,C2:C7,A2:A7)
      1. phanvantruong's Avatar
        phanvantruong -
        Cái này sử dụng hàm lookup tìm kiếm vector cũng ra mà. Dễ hiểu hơn