2013-04-28 42 views
8

Tôi hiện đang có một bảng tính excel tương tự như sau (# 's đại diện cho các tế bào trống)Nhận giá trị từ 3 tế bào không trống cuối cùng trong một hàng

1 2 3 4 5 6 7 
37 21 30 32 25 22 34 
# 17 26 28 27 17 31 
# # # # # # 38 
25 23 27 35 33 # # 
27 11 23 # # # # 

Trong cột 8 Tôi cần tổng của 3 ô không trống cuối cùng (số cột được tăng lên thường xuyên).

Một ví dụ về những gì tôi cần phải đạt được là dưới đây:

1 2 3 4 5 6 7  8 
37 21 30 32 25 22 34  25+22+34=81 
# 17 26 28 27 17 31  27+17+31=75 
# # # # # # 38  N/A 
25 23 27 35 33 # #  27+35+33=95 
27 11 23 # # # #  27+11+23=61 

tôi đã được quản lý để có được rất chặt chẽ với LARGE chức năng nhưng rõ ràng điều này chỉ cho tôi 3 lớn nhất, không phải là cuối cùng 3 phi trống :

=(LARGE(C3:J3,1)+LARGE(C3:J3,2)+LARGE(C3:J3,3)) 
+0

+1 câu hỏi hay – whytheq

+1

Bạn có muốn giải pháp VBA hoặc VBA không? –

+2

VBA chắc chắn là có thể bằng cách lặp xuống cột 8 - sau đó bên trong vòng lặp, bạn sẽ cần phải di chuyển từ trái sang phải để tìm ba ô trống đầu tiên và mỗi lần xây dựng công thức cho cột 8 hoặc tính tổng. Tôi sẽ không viết điều này vì tôi nghi ngờ ai đó sẽ sử dụng chức năng bảng tính là tuyến đơn giản hơn nếu có sẵn – whytheq

Trả lời

7

Dưới đây là một khác:

=IF(COUNT(A2:G2)<3,"NA",SUM(G2:INDEX(A2:G2,LARGE(COLUMN(A2:G2)*(A2:G2<>""),3)))) 

Từ http://dailydoseofexcel.com/archives/2004/05/03/sum-last-three-golf-scores/

Nó xác định các cột để tổng hợp từ và từ các tế bào trống là zero, nó không quan trọng bao nhiêu được xen kẽ.

+2

+1 Dick, tất nhiên bạn cần CTRL + SHIFT + ENTER ........ –

+0

Perfect Dick, cảm ơn bạn! – lethalMango

+0

+ 1 Tốt Một Dick! :) –

3

Nếu dữ liệu là vùng A1: G1 thử công thức này trong H1

=IF(COUNT(A1:G1)>2,SUM(OFFSET(A1,0,MATCH(9.99E+307,A1:G1)-1,1,-3)),NA())

+0

+ 1 Vâng, tôi sẽ bị nguyền rủa! LOL. Tôi cũng đã có một công thức đã sẵn sàng nhưng vấn đề là nó không hoạt động nếu có hai số giống nhau ... –

+0

Điều này dường như hoạt động trong hầu hết các trường hợp, tuy nhiên với những điều sau đây trong A1: G1 tôi nhận được 58 chứ không phải là 88 (30 # 25 # 33 # #) - một lần nữa, # là trống – lethalMango

+0

Tôi giả định từ các ví dụ của bạn rằng sẽ không có khoảng trống ở giữa các con số, hãy thử phiên bản của Dick .... –

2

Tôi biết các chuyên gia ở đây sẽ ghét điều này. Nhưng tôi làm việc với dữ liệu trong hàng trăm nghìn hàng và hàng triệu ô, Và tôi thích các hàng trợ giúp và các công thức phức tạp hơn các công thức mảng bất kỳ ngày nào. Vì nó sẽ cắt các phép tính thành các phân số. Ngay cả khi việc bảo trì hoạt động tốt hơn, tôi dành ít thời gian sửa công thức một lần sau đó chờ đợi tính toán mảng trên mọi thay đổi dữ liệu (cho tôi dữ liệu của tôi thay đổi cứ sau 10 phút) Vì vậy, hàng trăm nghìn mảng trên hàng triệu ô mỗi 10 phút sẽ không hoạt động. Vì vậy, đây chỉ là một thay thế.

=IF(COUNT(A2:G2)<3,"NA",IF(COUNT(E2:G2)=3,SUM(E2:G2),IF(COUNT(D2:G2)=3,SUM(D2:G2), 
IF(COUNT(C2:G2)=3,SUM(C2:G2),IF(COUNT(B2:G2),SUM(B2:G2),IF(COUNT(A2:G2)=3, 
SUM(A2:G2))))))) 

Nếu không có 3 giá trị để tổng hợp nó sẽ trở lại NA, khác khôn ngoan làm việc phải sang trái sẽ kiểm tra các tế bào đầu tiên với từ đó tế bào để cuối cùng có 3 số trong đó sau đó sẽ tổng hợp đó.

Nếu dữ liệu của bạn liên quan đến nhiều cột hơn thì câu hỏi của bạn. Bạn có thể sử dụng các phạm vi động để làm sạch mã một chút.

Một công thức không cho mảng làm việc:

=SUM(IF(COUNT(A2:G2)=3,A2:G2,IF(COUNT(B2:G2)=3,B2:G2,IF(COUNT(C2:G2)=3,C2:G2, 
IF(COUNT(D2:G2)=3,D2:G2,IF(COUNT(E2:G2)=3,E2:G2,"NA")))))) 

chỉ cần đặt sẽ tổng hợp những gì bao giờ dao động từ cuối cùng có tổng số là 3.

1

newbee cảnh báo: Tôi biết bài này là cũ tuy nhiên nếu anyones vẫn ở ngoài kia, tôi mong muốn được giúp đỡ về phái sinh của công thức Dick được cung cấp nhờ đó mà tôi muốn chạy đếm qua nhiều hàng ví dụ [2 trong trường hợp này]:

= IF(COUNT(A1:G2)<3,"NA",SUM(G2:INDEX(A1:G2,LARGE(COLUMN(A1:G2)*(A1:G2<>""),3))))

Cuối cùng, tôi đang cố gắng để kéo một tổng của ba loại tế bào cuối cùng với các nhân vật trong việc điều hành 12 accross

[A:L=months of year] by several rows down [1:5=consecutive years]. 

Nếu bất cứ ai có thể làm sáng tỏ tôi có nghĩa vụ nhiều.

Rất cám ơn: Ryan

Các vấn đề liên quan