PDA

View Full Version : Bài toán tính StDev có điều kiện



manhhoangnguyen
12-05-10, 01:09 AM
mình có dữ liệu như sau:
A B
day1 3
day2 7
day3 4
day1 3
day4 6
day2 1
day1 3

Bây giờ mình muốn tính độ lệch chuẩn của cột B với điều kiên A= day1 thôi (nghĩa là stdev(3,3,3) đó)
Help!
Hỏi trên mạng thì mình áp dụng thử công thức =stdev(if(A:A="day1",B:B)) nhưng kết quả là sai.

TranThanhPhong
12-05-10, 09:02 AM
Bạn xem hình sau:

http://www.giaiphapexcel.com/video/dstdev.jpg


Dùng các hàm dữ liệu
Các hàm dữ liệu thực hiện việc tính toán cho các dòng thõa điều kiện. Tất cả hàm dữ liệu sử dụng cùng cú pháp:

= Function(database, field, criteria)

=DAVERAGE(database,field,criteria)
=DCOUNT(database,field,criteria)
=DCOUNTA(database,field,criteria)
=DGET(database,field,criteria)
=DMAX(database,field,criteria)
=DMIN(database,field,criteria)
=DPRODUCT(database,field,criteria)
=DSTDEV(database,field,criteria)
=DSTDEVP(database,field,criteria)
=DSUM(database,field,criteria)
=DVAR(database,field,criteria)
=DVARP(database,field,criteria)
= AVERAGEIF(range,criteria,average_range)

Trong đó:
Database: là vùng địa chỉ của danh sách hoặc cơ sở dữ liệu
Field: Xác định cột dùng trong hàm. Ta tham chiếm các cột bằng nhãn và đặt trong dấu ngoặc kép “”. Cũng có thể tham chiếu đến cột thông qua số thứ tự cột của nó trong danh sách.
Criteria: Tham khảo đến địa chỉ các ô xác định điều kiện của hàm.

Các hàm dữ liệu:

http://i167.photobucket.com/albums/u147/ttphong2007/Excel/ddata1-1.jpg

Ví dụ:
http://www.giaiphapexcel.com/forum/images/statusicon/wol_error.gifNhấp vào đây để thay đổi kích thước hìnhhttp://i167.photobucket.com/albums/u147/ttphong2007/Excel/ddata3.jpg

Cái chữ mình tô đỏ chính là điểm khác biệt về cách sử dụng của các hàm này. Trong các hàm dữ liệu bạn phải xác định cột "bằng tên hoặc số thứ tự" mà ta tính toán trên đó.

TP.

http://www.giaiphapexcel.com/forum/images/misc/paperclip.png Tập tin đính kèm
http://www.giaiphapexcel.com/forum/images/attach/zip.gif DFunctions.zip (http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=1752&d=1180318614) (4.4 KB, 2025 lần tải)

levanduyet
12-05-10, 10:39 AM
Nếu các bạn muốn kể cả phần diễn giải ở trên thì tải tập tin đính kèm.

Lê Văn Duyệt

manhhoangnguyen
12-05-10, 12:16 PM
vẫn bài toán ấy, nhưng khác một chút ít là:
A ko còn là 1 cột day1, day2... nữa mà là số

A B
1 3
2 7
3 4
1 3
4 6
2 1
1 3

bây giờ tính stdev(B) của 1, 2, 3, 4
mình tính sao cứ vẫn không đúng
à mà hỏi các bạn luôn, nhãn "value" có phải là định nghĩa cho B:B không? lâu nay mình ko xài nhãn(vì hay chọn A:A cho nhanh)

vì mình ko hiểu rõ nhãn, nên, nếu có thể thì các bạn thử làm khi không có nhãn xem, hi vọng đọc hàm rồi so sánh mình sẽ hiểu được

mình attach file dưới đây nhờ các cao thủ giải đáp giùm bài toán

TranThanhPhong
12-05-10, 08:42 PM
vẫn bài toán ấy, nhưng khác một chút ít là:
A ko còn là 1 cột day1, day2... nữa mà là số

A B
1 3
2 7
3 4
1 3
4 6
2 1
1 3

bây giờ tính stdev(B) của 1, 2, 3, 4
mình tính sao cứ vẫn không đúng
à mà hỏi các bạn luôn, nhãn "value" có phải là định nghĩa cho B:B không? lâu nay mình ko xài nhãn(vì hay chọn A:A cho nhanh)

vì mình ko hiểu rõ nhãn, nên, nếu có thể thì các bạn thử làm khi không có nhãn xem, hi vọng đọc hàm rồi so sánh mình sẽ hiểu được

mình attach file dưới đây nhờ các cao thủ giải đáp giùm bài toán

Xem file đính kèm nhé bạn! (Dùng hàm mảng)

manhhoangnguyen
12-05-10, 08:53 PM
sai rồi bạn kìa, kết quả của =STDEV(IF($A$2:$A$8=A2,$B$2:$B$8)) = stdev(B2:B8) khi giá trị của A2 xuất hiện trong mảng A2:A8 thôi

mình đã nghiên cứu hàm DSTDEV, và nhận ra rằng phải chuyển cột sang hàng như ví dụ của microsoft mới tính đúng được
như vậy với dữ liệu hàng trăm cột chuyển sang hàng thật bất tiện nếu không muốn nói là ko khả thi (ko copy rồi paste tranpose được), có cách nào khác ko phải dùng DSTDEV ko nhỉ

TranThanhPhong
13-05-10, 08:02 AM
sai rồi bạn kìa, kết quả của =STDEV(IF($A$2:$A$8=A2,$B$2:$B$8)) = stdev(B2:B8) khi giá trị của A2 xuất hiện trong mảng A2:A8 thôi

mình đã nghiên cứu hàm DSTDEV, và nhận ra rằng phải chuyển cột sang hàng như ví dụ của microsoft mới tính đúng được
như vậy với dữ liệu hàng trăm cột chuyển sang hàng thật bất tiện nếu không muốn nói là ko khả thi (ko copy rồi paste tranpose được), có cách nào khác ko phải dùng DSTDEV ko nhỉ

Chào manhhoangnguyen,

Mình tính nhầm stdev cho cột B.

Công thức tại C2 bạn sữa lại thành:
=STDEV(IF($B$2:$B$8=B2,$A$2:$A$8)) (nhấn Ctrl+Shift+Enter sau khi nhập xong)
Sao chép cho các ô bên dưới C3:C8

TTP.

manhhoangnguyen
13-05-10, 12:21 PM
không phải ạ, ý mình là công thức stdev(if()) của bạn sẽ ra kết quả ko đúng.
=STDEV(IF($B$2:$B$8=B2,$A$2:$A$8)) =stdev(a2:a8) chứ không phải stdev(a2, a5, a8) (đây mới là kết quả mong đợi)
*ctrl+alt_del để làm gì hả bạn?

TranThanhPhong
13-05-10, 01:38 PM
không phải ạ, ý mình là công thức stdev(if()) của bạn sẽ ra kết quả ko đúng.
=STDEV(IF($B$2:$B$8=B2,$A$2:$A$8)) =stdev(a2:a8) chứ không phải stdev(a2, a5, a8) (đây mới là kết quả mong đợi)


Bạn thử kiểm tra kết quả xem! Thử cho thêm các số liệu và xem kết quả tính toán.

Công thức trên là hàm mảng nên phải dùng Ctrl+Shift+Enter khi kết thúc thay cho Enter nếu không sẽ bị sai kết quả. Đọc bài về hàm và công thức mảng dưới chữ ký của mình để tham khảo thêm.

Gợi ý: bạn chọn ô C2 và dùng chức năng Evaluate Formula trong Tools | Formula Auditing để xem Excel từng bước xử lý công thức.

TTP.

thuongthinh
19-12-13, 11:17 AM
Chào bạn TTP,
Trong trường hợp B2:B8 có ô trống, kết quả không chính xác vì excel tính luôn giá trị của ô rỗng này và xem giá trị các ô này bằng 0 (zero). Vậy chúng ta sẽ xử lý như thế nào?
Cám ơn bạn