Hai công thức =SUM({1;1;0;0;0;0;0}) và =SUMPRODUCT({1;1;0;0;0;0;0}) giống nhau? (1 người xem)

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

Người dùng đang xem chủ đề này

trungvdb

Thành viên thường trực
Tham gia
22/8/08
Bài viết
374
Được thích
171
Nghề nghiệp
Tài chính
Trước kia em tưởng chỉ có công thức =SUMPRODUCT({1;1;0;0;0;0;0}) = 2; tuy vậy em đánh là =SUM({1;1;0;0;0;0;0}) kết quả cũng bằng 2 ---> SUM({1;1;0;0;0;0;0}) =SUMPRODUCT({1;1;0;0;0;0;0})?

Bởi em tưởng SUM({1;1;0;0;0;0;0}) nó là mảng nhưng khi bôi đen F9 lại là số duy nhất.

Sở dĩ em thử nghiệm vậy là em đang nghiên cứu bài tách số của sư phụ Ndu (Name Dai)
 

File đính kèm

Lần chỉnh sửa cuối:
Trước kia em tưởng chỉ có công thức =SUMPRODUCT({1;1;0;0;0;0;0}) = 2; tuy vậy em đánh là =SUM({1;1;0;0;0;0;0}) kết quả cũng bằng 2 ---> SUM({1;1;0;0;0;0;0}) =SUMPRODUCT({1;1;0;0;0;0;0})?
Thì như nhau thôi
SUMPRODUCT là tổng của các tích. Trong SUMPRODUCT ở công thức trên chẳng có cái tích nào cả nên nó cũng chỉ là SUM bình thường
Bởi em tưởng SUM({1;1;0;0;0;0;0}) nó là mảng nhưng khi bôi đen F9 lại là số duy nhất.
Thằng {1;1;0;0;0;0;0} mới là 1 mảng, còn SUM({1;1;0;0;0;0;0}) là SUM của 1 mảng
----------------------
Nói thêm:
Mảng này đã "Show hàng" cả rồi nên chỉ cần Enter bình thường là được
Ví dụ khác: =SUM(ROW($1:$10))
Thằng ROW($1:$10) cũng là 1 mảng, kết quả của nó là mảng {1;2;3;4;5;6;7;8;9;10} nhưng công thức =SUM(ROW($1:$10)) thì phải kết thúc bằng Ctrl + Shift + Enter mới cho kết quả chính xác ---> Lý do vì kết quả của mảng tạo thành từ ROW($1:$10) chưa được "Show hàng"
Ta có thể thí nghiệm: Bôi đen đoạn ROW($1:$10) trên thanh Formula rồi F9, sau đó Enter, công thức sẽ cho kết quả =55 mà chẳng cần phải Ctrl + Shift + Enter gì cả (vì khi đó kết quả của mảng ROW($1:$10) đã được Show ra toàn bộ do ta bấm F9)
 
Nghĩa là "Show hàng" hiểu nôm na ra thì mảng đó phải là các số cụ thể rồi chứ trong biểu thức mảng không còn hàm nữa?
 
Tôi nghĩ trước khi bạn tìm hiểu về vấn đề này để hiểu 1 cách tường tận bạn nên trang bị cho mình một chút kiến thức cơ bản về mảng, hay đơn giản chỉ là tác dụng khi ta bấm tổ hợp phím Ctrl+Shift+Enter là gì, công thức mảng hoạt động thế nào, trình tự tính toán ra sao, kết quả trả về là những gì???
 
Nhờ các thày giúp em sao sumproduct trong CT thứ 2 nó lại không ra KQ đúng ah

Em có file đính kèm

tại ô B1 em gõ CT:
PHP:
=SUMPRODUCT(5-ROW(INDIRECT("1:"&COUNT(A1:A5))))
cho ra kết quả đúng (=10).

Tuy vậy, trong khi đó tại ô C1:
PHP:
=SUMPRODUCT(IF(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c";1;0))

(Ghi chú: Nội dung ô A1 là cộng hòa xã hội chủ nghĩa việt nam)

tại sao kết quả lại ra là 1 (thay vì kết quả đúng phải là 2), em phải sửa công thức thứ 2 thế nào cho nó thành đúng (=2) bây giờ.

Em xin cảm ơn
 

File đính kèm

Em có file đính kèm

tại ô B1 em gõ CT:
PHP:
=SUMPRODUCT(5-ROW(INDIRECT("1:"&COUNT(A1:A5))))
cho ra kết quả đúng (=10).

Tuy vậy, trong khi đó tại ô C1:
PHP:
=SUMPRODUCT(IF(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c";1;0))

(Ghi chú: Nội dung ô A1 là cộng hòa xã hội chủ nghĩa việt nam)

tại sao kết quả lại ra là 1 (thay vì kết quả đúng phải là 2), em phải sửa công thức thứ 2 thế nào cho nó thành đúng (=2) bây giờ.

Em xin cảm ơn
Kết quả = 2 là đương nhiên nhưng bạn phải Ctrl + Shift + Enter
Có lần tôi nói vụ này rồi: Không phải cứ dùng SUMPRODUCT là không cần phải Ctrl + Shift + Enter đâu, tùy trường hợp
Sửa công thức thành vầy thì sẽ Enter bình thường
PHP:
=SUMPRODUCT(1*(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)="c"))
 
Lần chỉnh sửa cuối:
Hay quá, thành phần 1* trong công thức
PHP:
[COLOR=#000000][COLOR=#007700]=[/COLOR][COLOR=#0000bb]SUMPRODUCT[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]*([/COLOR][COLOR=#0000bb]MID[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]A1[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]ROW[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]INDIRECT[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"1:"[/COLOR][COLOR=#007700]&[/COLOR][COLOR=#0000bb]LEN[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]A1[/COLOR][COLOR=#007700]))),[/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700])=[/COLOR][COLOR=#dd0000]"c"[/COLOR][COLOR=#007700]))  [/COLOR][/COLOR][PHP]

của thày đúng là cái em đang cần tìm hiểu đó ah.

--------

Chà chà, Cái này bất quy tắc quá, không hiểu sao

[PHP]=SUMPRODUCT(1*(IF(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c";1;0)))
lại không được nhỉ?
 
Lần chỉnh sửa cuối:
Chà chà, Cái này bất quy tắc quá, không hiểu sao

PHP:
=SUMPRODUCT(1*(IF(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c";1;0)))
lại không được nhỉ?
Được chứ nhưng bạn phải bấm Ctrl+shift +Enter và không cần *1 nữa
Đã viết thế này thì dùng SUM cho rảnh, Sumproduct làm chi cho mệt, hihi
 
Lần chỉnh sửa cuối:
Vì đây tình huống này em nghĩ ra để tìm hiểu bản chất vấn đề tại sao mà chưa được thôi mà.
 
Hay quá, thành phần 1* trong công thức
PHP:
[COLOR=#000000][COLOR=#007700]=[/COLOR][COLOR=#0000bb]SUMPRODUCT[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700]*([/COLOR][COLOR=#0000bb]MID[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]A1[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000bb]ROW[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]INDIRECT[/COLOR][COLOR=#007700]([/COLOR][COLOR=#dd0000]"1:"[/COLOR][COLOR=#007700]&[/COLOR][COLOR=#0000bb]LEN[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]A1[/COLOR][COLOR=#007700]))),[/COLOR][COLOR=#0000bb]1[/COLOR][COLOR=#007700])=[/COLOR][COLOR=#dd0000]"c"[/COLOR][COLOR=#007700]))  [/COLOR][/COLOR][PHP]

của thày đúng là cái em đang cần tìm hiểu đó ah.

--------

Chà chà, Cái này bất quy tắc quá, không hiểu sao

[PHP]=SUMPRODUCT(1*(IF(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c";1;0)))
lại không được nhỉ?
Vì bạn dùng IF để trả về kết quả là 1 và 0 nên dùng SUM bình thường mà không cần phải nhân với 1
Tôi nhân 1 vì mảng của tôi trả về kết quả TRUE, FALSE ---> Nhân với 1 để TRUE biến thành 1 và FALSE biến thành 0, từ đó mới SUM được
Vậy thôi
 
Cái mà em vẫn thắc mắc về cái vụ (Enter và Ctrl+Shift+Enter) thôi ah, vì

* Cách của thày

PHP:
=SUMPRODUCT(1*(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c"))
chỉ cần Enter là đủ

* trong khi đó tại sao
PHP:
=SUMPRODUCT(1*(IF(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c";1;0)))
của em khi Enter lại cho kết quả sai, buộc phải Ctrl+Shift+Enter

(em cố để số 1 để cho nó có vẻ tương đồng nhau về cách viết)
 
Cái mà em vẫn thắc mắc về cái vụ (Enter và Ctrl+Shift+Enter) thôi ah, vì

* Cách của thày

PHP:
=SUMPRODUCT(1*(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c"))
chỉ cần Enter là đủ

* trong khi đó tại sao
PHP:
=SUMPRODUCT(1*(IF(MID(A1;ROW(INDIRECT("1:"&LEN(A1)));1)="c";1;0)))
của em khi Enter lại cho kết quả sai, buộc phải Ctrl+Shift+Enter

(em cố để số 1 để cho nó có vẻ tương đồng nhau về cách viết)
Thật ra không phải do số 1 mà do CẤU TRÚC CÔNG THỨC BÊN TRONG SUMPRODUCT
2 cấu trúc công thức của tôi và của bạn hoàn toàn khác nhau nên cho kết quả khác nhau
Còn chuyện lúc nào cần Enter, lúc nào cần phải Ctrl + Shift + Enter thì tôi thật sự không nắm chắc ---> Chỉ biết thí nghiệm, cái này không được thì dùng cái kia thôi
 

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

Back
Top Bottom