Công thức mảng trong hàm Choose

Liên hệ QC

chothadiem

Thành viên hoạt động
Tham gia
29/10/18
Bài viết
188
Được thích
50
Xin chào các anh/chị.
Em có dùng hàm Choose và công thức mảng.
{=CHOOSE({2;3};B8:C12;D8:E12;F8:H12)} -> trả về kết quả "Bảng 2 cột D8:D12; G8:G12"
Nhưng khi F9 vào ô công thức thì thấy kết quả : ={"Nữ"\5200000\#N/A;"Thái Bình"\40577\10;#N/A\#N/A\#N/A;#N/A\#N/A\#N/A;#N/A\#N/A\#N/A}
Em thấy kết quat khi F9 bào gồm cả giá trị lương: \520000 và quê quán: "Thái Bình"\
Vậy kết quả trả về "Bảng 2 cột D8:D12; G8:G12" mà sao khi F9 lại có cả dữ liệu "lương" (E8:E12) và "Quê Quán" (F8:F12) .
Em mới tìm hiểu về công thức mảng, nên nhiều cái chưa rõ.
Rất mong các anh/chị giải thích và hướng dẫn.
choose.png
 

File đính kèm

  • Choose.xlsx
    32.8 KB · Đọc: 6
F9 không nhất thiết luôn luôn trả về kết quả giống công thức mảng.

F9 là trợ giúp kiểm tra từng phần nhỏ trong công thức mảng.
 
Nên hiểu ý nghĩa của dấu "," và ";" để vận dụng đúng. Dấu "," là phân cách cột, dấu ";" là phân cách dòng.
CHOOSE({2;3}, mảng 1, mảng 2, mảng 3) nghĩa là đi đến dòng 1 của mảng 2, sau đó đi đến dòng 2 của mảng 3
Theo mô tả của bạn thì có lẽ bạn muốn thế này:

=CHOOSE({2,3},B8:C12,D8:D12,G8:G12)
{"Nữ",40453;"Nữ",40577;"Nam",40046;"Nữ",41111;"Nữ",42350}

Máy mình đang cài đặt phân cách là dấu ",". Nếu bạn dùng ";", thì thử giữ nguyên {2,3} là dùng ",", hoặc dùng {2\3}, còn phía sau là dấu ";"
 
Nên hiểu ý nghĩa của dấu "," và ";" để vận dụng đúng. Dấu "," là phân cách cột, dấu ";" là phân cách dòng.
CHOOSE({2;3}, mảng 1, mảng 2, mảng 3) nghĩa là đi đến dòng 1 của mảng 2, sau đó đi đến dòng 2 của mảng 3
Theo mô tả của bạn thì có lẽ bạn muốn thế này:

=CHOOSE({2,3},B8:C12,D8:D12,G8:G12)
{"Nữ",40453;"Nữ",40577;"Nam",40046;"Nữ",41111;"Nữ",42350}

Máy mình đang cài đặt phân cách là dấu ",". Nếu bạn dùng ";", thì thử giữ nguyên {2,3} là dùng ",", hoặc dùng {2\3}, còn phía sau là dấu ";"
Vâng anh, kết quả cho ra đúng là vậy: {"Nữ",40453;"Nữ",40577;"Nam",40046;"Nữ",41111;"Nữ",42350}
Nhưng như em nói khi F9 nó là : ={"Nữ"\5200000\#N/A;"Thái Bình"\40577\10;#N/A\#N/A\#N/A;#N/A\#N/A\#N/A;#N/A\#N/A\#N/A}
Bài đã được tự động gộp:

F9 không nhất thiết luôn luôn trả về kết quả giống công thức mảng.

F9 là trợ giúp kiểm tra từng phần nhỏ trong công thức mảng.
Vâng, em thử một vài trường hợp tương tự thì nó trả về kết quả giống công thức mảng, nhưng trường hợp này thì lại như vậy.
Em xin cảm ơn thầy!
 
Lần chỉnh sửa cuối:
Tóm lại bạn thử chưa? Kết quả mình ra thế này:
=CHOOSE({2,3},B8:C12,D8 :12,G8:G12)

1626145505092.png
 
Vâng, em thay {2,3} thành {2\3} trong công thức mảng kết quả thấy báo lỗi #NA:
={"Nữ"\40453\#N/A;"Nữ"\40577\#N/A;"Nam"\40046\#N/A;"Nữ"\41111\#N/A;"Nữ"\42350\#N/A}
Em thấy kết quả của anh không báo lỗi #NA?
Anh cho em hỏi nguyên nhân báo lỗi #NA do đâu vậy ạ?
 
Vâng, em thay {2,3} thành {2\3} trong công thức mảng kết quả thấy báo lỗi #NA:
={"Nữ"\40453\#N/A;"Nữ"\40577\#N/A;"Nam"\40046\#N/A;"Nữ"\41111\#N/A;"Nữ"\42350\#N/A}
Em thấy kết quả của anh không báo lỗi #NA?
Anh cho em hỏi nguyên nhân báo lỗi #NA do đâu vậy ạ?
Bạn đang tham chiếu mảng 3 cột đúng không? F8:H12?
Tôi đang dùng 2 mảng 1 cột phía sau:
Mã:
=CHOOSE({2,3},B8:C12,D8:D12,G8:G12)
 
Dấu { } là cách Excel gọi hàm Evaluate để tạo một mảng.
Theo hệ thống mảng Mẽo, dấu phẩy là phân biệt dòng, dấu chấm phẩy là phân biệt cột.
Tuy nhiên, cái dấu { } trong hàm Choose ở trên chúng hoạt động hơi khác một chút. Chúng chỉ nhận các cột cho nên coi tất cả những con số bên trong { } là tham số hàm (tức là các cột của mảng kết quả). Và cũng theo hệ thống Mẽo, dấu phẩy là dấu phân biệt tham số hàm.

Trong file của bạn, các tham số bên trong { } của hàm Choose, bạn dùng dấu chấm phẩy cho nên hàm bị ngẩn tò te (confused), và cho kết quả không đúng yêu cầu. Chỉ cần sửa lại thành dấu phẩy thì nó sẽ vui vẻ làm việc.

Chú: bạn chỉ cần 2 cột thì mắc mớ gì phải gài cho nó 3 mảng. Trong { } bạn chỉ lấy 2,3 thì đương nhiên mảng đầu tiên bị bỏ qua.
 
Chúng chỉ nhận các cột cho nên coi tất cả những con số bên trong { } là tham số hàm (tức là các cột của mảng kết quả).
Dấu "," hay ";" hàm choose đều nhận hết,
Với {2;3} thì choose sẽ lần lượt đi mảng 1 (dòng 1) qua mảng 2 (nhưng xuống dòng 2)
Còn {2,3}, choose sẽ lần lượt đi mảng 1 (dòng 1) qua mảng 2 (cùng dòng 1)
Tùy theo yêu cầu mà áp dụng thôi.
 
Dấu "," hay ";" hàm choose đều nhận hết,
Với {2;3} thì choose sẽ lần lượt đi mảng 1 (dòng 1) qua mảng 2 (nhưng xuống dòng 2)
Còn {2,3}, choose sẽ lần lượt đi mảng 1 (dòng 1) qua mảng 2 (cùng dòng 1)
Tùy theo yêu cầu mà áp dụng thôi.
Tôi nói "ngẩn tò te" (coi chừng hết quả không đúng ý) chứ không hề nói nó "đẩy ra" (không nhận)
 
Dạ! Vào tròn
Dấu { } là cách Excel gọi hàm Evaluate để tạo một mảng.
Theo hệ thống mảng Mẽo, dấu phẩy là phân biệt dòng, dấu chấm phẩy là phân biệt cột.
Tuy nhiên, cái dấu { } trong hàm Choose ở trên chúng hoạt động hơi khác một chút. Chúng chỉ nhận các cột cho nên coi tất cả những con số bên trong { } là tham số hàm (tức là các cột của mảng kết quả). Và cũng theo hệ thống Mẽo, dấu phẩy là dấu phân biệt tham số hàm.

Trong file của bạn, các tham số bên trong { } của hàm Choose, bạn dùng dấu chấm phẩy cho nên hàm bị ngẩn tò te (confused), và cho kết quả không đúng yêu cầu. Chỉ cần sửa lại thành dấu phẩy thì nó sẽ vui vẻ làm việc.

Chú: bạn chỉ cần 2 cột thì mắc mớ gì phải gài cho nó 3 mảng. Trong { } bạn chỉ lấy 2,3 thì đương nhiên mảng đầu tiên bị bỏ qua
Dạ! Vào trong hệ thống cotronpanel để sửa thành dấu phẩy như thầy nói đúng không ạ?
 
Nếu dùng phân cách là dấu "," thì dấu "," là phân cách chiều ngang (cột), dấu ";" là phân cách chiều dọc (dòng)
Còn phân cách bằng dấu ";" thì là "," và "\"
 
Web KT
Back
Top Bottom