Dùng hàm index kết hợp match nhưng không ra kết quả

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Cám ơn anh chị em

Nhờ các anh chỉ giúp , trong quá trình kết hợp hàm Index và Match, không hiểu tại sao kết quả chỉ ra NA ạ.

Anh chị xem ô màu vàng trong file đính kèm

Cám ơn anh chị em

Bạn kiểm tra lại nhé.

www.giaiphapexcel.com/diendan/threads/d%C3%B9ng-h%C3%A0m-index-k%E1%BA%BFt-h%E1%BB%A3p-match-nh%C6%B0ng-kh%C3%B4ng-ra-k%E1%BA%BFt-qu%E1%BA%A3.165448/

Ứng dụng AI và Chat GPT trong Quản trị nhân sự
Khóa học SprinGO phù hợp

Ứng dụng AI và Chat GPT trong Quản trị nhân sự

Học xong khóa này, học viên có thể: Hiểu đúng bản chất AI, các nhóm AI phổ biến và cách AI “hoạt động” ở...

Xem khóa học
★★★★★ 5 ★ 1 👤 2 ▥ 0
Quảng cáo

Bạn nên đọc

2 Responses

  1. hands says:

    Bạn kiểm tra lại nhé.

    Bạn ơi, vì sao trước hàm left lại có 2 dấu — vậy? tớ không hiểu cơ chế nó. Thk

    Để chuyển chuỗi "31003" thành số 31003 như trong bảng dò của sheet1.

    Tại sao thay — bằng N(……………….) lại không ra bạn ơi? Sao excel nó lỗi tè le thế nhỉ?

    Theo bạn nghĩ thì — nó làm cái gì và N(…) nó làm cái gì?

    Em tưởng N nó chuyển chữ thành số được mà không phải.
    — thì nó lộn xộn quá, kiêm đa chức năng gê.

    N mà gặp text thì luôn trả về 0.
    Người ta dùng N để comment công thức. Công dụng khác là ép range thành array. Nhưng cái này hơi khó, đừng hỏi thêm.

    — (hai dấu trừ) thì chả có gì đa chức năng cả. Chỉ vì bạn không có căn bản về toán tử (operators) cho nên không biết nó.
    – (dấu trừ) theo đại số học có hai nghĩa, nghĩa nào tùy theo vị trí của nó.
    Nằm trong vị trí đơn vế (chỉ có một vế) thì nó là toán tử đổi dấu, -a là đối dấu trị a, tương đương với (-1)*a
    Nằm trong vị trí ngẫu vế (giữa 2 vế) thì nó là phép trừ. a – b là đem a trừ b
    Đừng nghĩ rằng a – b thì cũng giống như đổi dấu b rồi đem cộng cho a. Theo lô gic toán thì điều đó đúng. Theo luật thứ tự toán tử thì phải cẩn thận hơn. Luật thứ tự tính toán đặt toán tử đổi dấu ở vị trí khá cao (tính trước), cao hơn */, trong khi */ cao hơn +-.

    — (hai dấu trừ) chỉ là một mẹo, nó mang nghĩa giản dị là đổi dấu hai lần. Kết quả là trở về số in hệt số cũ.
    Vậy nó dùng để làm gì?
    Nó là cách hiệu quả nhất để ép kiểu chuỗi thành số. Và tôi nói từ "nhất" ở đây một cách đầy tự tin, không sợ mang tiếng chủ quan. Bởi vì câu này dựa trên lô gic cấu trúc máy tính.
    Dĩ nhiên, khi nói thế, tôi khẳng định rằng nó hiệu quả hơn thuật ép kiểu bằng cách +0 hay *1.
    Có hai lý do:
    1. đổi dấu là con toán căn bản của CPU, xử lý rất rất nhanh, dẫu phải làm 2 lần vẫn nhanh hơn + hoặc *. Đồng thời, đổi dấu chỉ cần 1 vế, +0 và *1 cần thêm vế thứ hai là hằng số 0/1
    2. vì đổi dấu có thứ tự tính rất cao cho nên ít khi phải dùng đến dấu ngoặc () để phân biệt với các con toán kế tiếp. (Phép cộng có vị trí khá thấp cho nên +0 là cách khó nhất.)

  2. hands says:

    Để chuyển chuỗi "31003" thành số 31003 như trong bảng dò của sheet1.

    Theo bạn nghĩ thì — nó làm cái gì và N(…) nó làm cái gì?

    N mà gặp text thì luôn trả về 0.
    Người ta dùng N để comment công thức. Công dụng khác là ép range thành array. Nhưng cái này hơi khó, đừng hỏi thêm.

    — (hai dấu trừ) thì chả có gì đa chức năng cả. Chỉ vì bạn không có căn bản về toán tử (operators) cho nên không biết nó.
    – (dấu trừ) theo đại số học có hai nghĩa, nghĩa nào tùy theo vị trí của nó.
    Nằm trong vị trí đơn vế (chỉ có một vế) thì nó là toán tử đổi dấu, -a là đối dấu trị a, tương đương với (-1)*a
    Nằm trong vị trí ngẫu vế (giữa 2 vế) thì nó là phép trừ. a – b là đem a trừ b
    Đừng nghĩ rằng a – b thì cũng giống như đổi dấu b rồi đem cộng cho a. Theo lô gic toán thì điều đó đúng. Theo luật thứ tự toán tử thì phải cẩn thận hơn. Luật thứ tự tính toán đặt toán tử đổi dấu ở vị trí khá cao (tính trước), cao hơn */, trong khi */ cao hơn +-.

    — (hai dấu trừ) chỉ là một mẹo, nó mang nghĩa giản dị là đổi dấu hai lần. Kết quả là trở về số in hệt số cũ.
    Vậy nó dùng để làm gì?
    Nó là cách hiệu quả nhất để ép kiểu chuỗi thành số. Và tôi nói từ "nhất" ở đây một cách đầy tự tin, không sợ mang tiếng chủ quan. Bởi vì câu này dựa trên lô gic cấu trúc máy tính.
    Dĩ nhiên, khi nói thế, tôi khẳng định rằng nó hiệu quả hơn thuật ép kiểu bằng cách +0 hay *1.
    Có hai lý do:
    1. đổi dấu là con toán căn bản của CPU, xử lý rất rất nhanh, dẫu phải làm 2 lần vẫn nhanh hơn + hoặc *. Đồng thời, đổi dấu chỉ cần 1 vế, +0 và *1 cần thêm vế thứ hai là hằng số 0/1
    2. vì đổi dấu có thứ tự tính rất cao cho nên ít khi phải dùng đến dấu ngoặc () để phân biệt với các con toán kế tiếp. (Phép cộng có vị trí khá thấp cho nên +0 là cách khó nhất.)

    Ý em đa là nó thêm món chuyển true/false thành số nữa, em hiểu thế có đúng không bác?

    Với lại có code VBA cơ bản nào để test tốc độ này không bác?

    Trừ hàm T() ra, tất cả các phép ép kiểu (kể cả hàm N) đều đổi True/False thành 1/0

    Đọc bảng chỉ dẫn code máy (machine code) của CPU. Nó sẽ cho biết chính xác mỗi lệnh máy mất bao nhiêu tích (đồng hồ). Tuy nhiên, trước khi tính toán, chương trình còn phải gọi một hàm để thực sự ép kiểu. Khi ép kiểu là ta đặt một biểu thức có trị text vào tình trạng buộc Excel gọi hàm này.
    Sau khi hàm ép kiểu trả về trị số rồi thì –, +0 hay *1 chỉ là con toán vô thưởng vô phạt.

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm