Trung bình theo tháng trong nhiều phạm vi ngày bespoke excel


2

Tôi có dữ liệu theo tháng từ tháng 1 năm 2013 -> tháng 10 năm 2017 như vậy

MONTH   MY DATA
Jan-13  45.0
Feb-13  23.0
.   
.   
.   
Oct-17  98.4

Tôi muốn trung bình dữ liệu theo tháng theo lịch, cho các phạm vi ngày cụ thể, không liền kề. EG tháng 1 năm 2013 -> Tháng 3 năm 2013 và tháng 10 năm 2016 -> Tháng 5 năm 2017.

Tôi tin rằng điều này có thể được thực hiện bằng cách sử dụng các hàm IF với OR, để bao gồm nhiều phạm vi ngày và AND, bao gồm hai ngày trong mỗi phạm vi, để trả về một mảng (khi nhập dưới dạng công thức mảng) sau đó sử dụng Averageif trên mảng được trả về.

Với dữ liệu của tôi trong B5: C62 và phạm vi ngày đặt trước của tôi được thiết lập là:

Period 1 Start: S2
Period 1 End: T2
Period 2 Start: S3
Period 2 End: T3

Và tháng theo lịch của tôi trong P6: P17, tôi nhập công thức của mình là

=AVERAGEIF($B$5:$B$62,P6,IF(OR(AND($B$5:$B$62>=$S$2,$B$5:$B$62<=$T$2),
AND($B$5:$B$62<=$S$3,$B$5:$B$62>=$T$3)),$C$5:$C$62,"ERROR"))

Tôi nhận được #VALUE! lỗi, mặc dù tôi không thể thấy tại sao. Theo như tôi có thể nói mệnh đề IF của mình sẽ trả về "Average_range" cho công thức AVERAGEIF để chạy.

Lỗi trong công thức của tôi hoặc cách tiếp cận của tôi là gì?

Câu trả lời:


2

Trong công thức của bạn, phần IF () sẽ không trả về một mảng khi có AND () như một phần của kiểm tra logic. Bạn có thể kiểm tra điều này bằng cách sử dụng công cụ gỡ lỗi tích hợp cho các công thức Excel: tô sáng một phần công thức trong thanh công thức và nhấn F9 .

Nhưng có một cách để tính trung bình bạn muốn. Trong Excel, nhân các giá trị logic sẽ chuyển đổi giá trị Đúng / Sai thành 1 và 0, sau đó có thể được thao tác thêm. Ví dụ, tuyên bố này

=(A2:A25>=D2)*(A2:A25<=E2)+(A2:A25>=D3)*(A2:A25<=E3)

trả về mảng

{0;0;0;1;1;1;1;0;0;0;0;0;0;0;0;0;1;1;1;1;1;1;0;0}

từ dữ liệu trong bảng dưới đây. Ở đây phép nhân hoạt động như một logic VÀ và phép cộng gần giống như một OR logic. (@ Máté Juhász có thể kêu vang tại đây để giải thích lý do tại sao nó không hoàn toàn là OR :-)

Mảng này có thể được xem như là một "mặt nạ" của cột A với 1 tương ứng với hai phạm vi ngày được chỉ định bởi ngày bắt đầu và ngày kết thúc.

Bây giờ, một công thức IF () có thể sử dụng mảng này để tạo danh sách các giá trị mà bạn muốn lấy trung bình:

IF(((A2:A25>=D2)*(A2:A25<=E2)+(A2:A25>=D3)*(A2:A25<=E3)),B2:B25)

Điều này cho mảng

{FALSE;FALSE;FALSE;42.9;82.3;90.5;15.6;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;70.8;85.5;19.2;85.4;21.3;55.7;FALSE;FALSE}

hiện có thể được đưa vào AVERAGE ().

Vì vậy, một giải pháp cho vấn đề của bạn là một công thức tương tự như công thức (mảng) này, trong D6:

=AVERAGE(IF(((A2:A25>=D2)*(A2:A25<=E2)+(A2:A25>=D3)*(A2:A25<=E3)),B2:B25))

Thay đổi phạm vi và giá trị ngày bespoke để phù hợp với tình huống của bạn.

nhập mô tả hình ảnh ở đây

Ô bên dưới "Kiểm tra" chỉ chứa cách tính trung bình thủ công bằng cách sử dụng

=AVERAGE(B5:B8,B18:B23)

Hy vọng điều này sẽ giúp và may mắn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.