Count, index và công thức mảng

  • Thread starter Thread starter agmiloan
  • Ngày gửi Ngày gửi
Liên hệ QC

agmiloan

Thành viên mới
Tham gia
16/5/10
Bài viết
21
Được thích
0
Em có vấn đề này mà không hiểu, ace coi và giải thích giúp để em được tường minh. Thank nhiều nhiều. ACE coi file đính kèm nhé.
 

File đính kèm

Công thức của bạn là {=COUNT(INDEX($D$9:$G$9,0,{1,2,3,4}))}, array $D$9:$G$9 có giá trị 1,2,3,4. Khi thực hiện phép tính nó sẽ thực hiện hàm index trước sau đó thực hiện đến hàm Count. Hàm index trả về giá trị của 1 cell và đương nhiên hàm count sẽ trả về giá trị 1 với bất cứ giá trị nào của array
 
Theo như mình hình dung thì INDEX sẽ tạo ra 1 array gồm 4 cell, mỗi cell có 1 giá trị mà nó tìm được ( array màu vàng ). COUNT sẽ đếm array mà INDEX tạo ra, nếu như vậy COUNT phải cho kết quả là 4 ah. Như khi mình thay INDEX bằng MATCH, thì kết quả lại cho là 4. Bạn Sơn và các ace cùng cho ý kiến nhé. ( Hình dung của mình đã sai ở đâu ?). Thank!
 
1. Mảng do Index tạo ra trong thí dụ không phải là mảng bình thường.

Một mảng bình thường có thể đếm số phần tử bằng Columns hoặc Rows. (Đừng đếm số phần tử bằng Count, Count chỉ đếm số, không đếm text và giá trị lỗi)
Mảng bình thường có thể truy xuất 1 giá trị trong mảng bằng Index.

Còn mảng này không thực hiện được các thủ tục trên.

2. Thay Index bằng Match:

Tưởng rằng đếm đúng số phần tử, nhưng thực ra đây là 1 trùng hợp: {=MATCH(D9:G9;{1\2\3\4};0)} trong đó D9:G9 cũng bằng {1\2\3\4}.
Nếu D9:G9 có giá trị khác, thì count cũng sẽ chỉ đếm số lần Match>0, Match = #N/A cũng không đếm

Thí dụ nếu D9:G9 = 1, 2, 4, 8, kết quả Match là 1, 2, 4, #N/A, Count sẽ là 3 (Columns vẫn bằng 4)

Tuy nhiên mảng do Match tạo ra lại là 1 mảng bình thường, có thể đếm bằng columns, Rows, có thể truy xuất phần tử thứ i.

Còn tại sao thì chắc phải tìm hiểu kỹ hơn.
 
Lần chỉnh sửa cuối:
Em có vấn đề này mà không hiểu, ace coi và giải thích giúp để em được tường minh. Thank nhiều nhiều. ACE coi file đính kèm nhé.
Hàm INDEX dùng cho công thức mãng rất khó khống chế... Trong trường hợp của bạn, tôi thường dùng OFFSET ---> Tuy nhiên vẫn phải có tí xảo thuật
Ví dụ:
=COUNT(N(OFFSET($D$9,,{0,1,2,3})))
Không có hàm N() thì đừng mong nó ra kết quả = 4
 
Hàm INDEX dùng cho công thức mãng rất khó khống chế... Trong trường hợp của bạn, tôi thường dùng OFFSET ---> Tuy nhiên vẫn phải có tí xảo thuật
Ví dụ:
=COUNT(N(OFFSET($D$9,,{0,1,2,3})))
Không có hàm N() thì đừng mong nó ra kết quả = 4

Hàm Count kết hợp N() có thể đếm chuỗi, nhưng không đếm được giá trị lỗi. Thí dụ E9 = NA() chẳng hạn, kết quả là 3.
Dùng Columns (hoặc Rows nếu mảng dọc) là chính xác nhất
 
Hàm Count kết hợp N() có thể đếm chuỗi, nhưng không đếm được giá trị lỗi. Thí dụ E9 = NA() chẳng hạn, kết quả là 3.
Dùng Columns (hoặc Rows nếu mảng dọc) là chính xác nhất
Ấy... sư phụ à! Vấn đề là tác giả muốn đếm cái gì chứ?
Mà em cũng không nghĩ là tác giả cần đếm đâu... rất có thể đang có ý định tạo mảng gì đấy (nhưng lại có liên quan đến việc đếm các phần tử)
Để chờ xem mục đích chính của tác giả là gì, ta sẽ quyết.. tiếp
(ở bài này em chỉ nêu ý kiến không nên dùng INDEX cho công thức mảng... chỉ thế thôi!)
 
Thank all. Hihi bác ndu96081631 đúng là số 1. Em đang học và tìm hiều về mấy hàm và công thức mảng. Em đang muốn tính tổng của array mà thằng INDEX tạo ra. Tới đây thì không hiểu đươc đành sử dụng quyền trợ giúp. Mặc dù mình chưa thực sự hiểu nhưng cũng đã hiểu thêm phần nào qua sư giải thích của ace. Hic! Công thức mảng với thằng INDEX này khó xơi quá.
 
Lần chỉnh sửa cuối:
Thank all. Mặc dù mình chưa thực sự hiểu nhưng cũng đã hiểu thêm phần nào qua sư giải thích của ace. Hic! Công thức mảng với thằng INDEX này khó xơi quá.
Dùng hàm Index() kiểu này không trả về kết quả là mảng đâu. Thử bôi đen đoạn công thức INDEX($D$9:$G$9,0,{1,2,3,4}) rồi nhấn F9 xem. Kết quả không phải là một mảng mà là một số.

Theo tôi, nếu khi sử dụng hàm Index() mà Row_Number hoặc Column_Number là một mảng thì hàm chỉ lấy giá trị đầu tiên của mảng.
 
Hic! Pó tay thằng INDEX này, ở 1 số vị trí khác nhau nó cho kết quả khác nhau. Các bác coi file đính kèm này. Em muốn hiều thêm về thằng INDEX này, bác nào có tài liệu jì hay hay về cái này cho em xin, em học thêm chút xíu. Thank!
 

File đính kèm

Hic! Pó tay thằng INDEX này, ở 1 số vị trí khác nhau nó cho kết quả khác nhau. Các bác coi file đính kèm này. !

Tôi thấy trên file của bạn có gì khác nhau nhỉ ?

Em muốn hiều thêm về thằng INDEX này, bác nào có tài liệu jì hay hay về cái này cho em xin, em học thêm chút xíu. Thank
Bạn chịu khó tìm trên diễn đàn thì thấy rất nhiều, sau đây là vài link
http://www.giaiphapexcel.com/forum/showthread.php?35684-Có-thể-sử-dụng-hàm-Index-Match-hay-Offset-ko
http://www.giaiphapexcel.com/forum/showthread.php?6002-Hàm-index
 
Hic! Pó tay thằng INDEX này, ở 1 số vị trí khác nhau nó cho kết quả khác nhau. Các bác coi file đính kèm này. Em muốn hiều thêm về thằng INDEX này, bác nào có tài liệu jì hay hay về cái này cho em xin, em học thêm chút xíu. Thank!
Bạn sử dụng hàm sai cú pháp thì kết quả không đúng là đúng rồi. Hàm INDEX() không được bỏ trống cả hai tham số Row_Number và Column_Number.
 
Web KT

Bài viết mới nhất

Back
Top Bottom