Trả lại tổng của nhiều lượt xem


2

Được rồi, vì vậy tôi có một vấn đề tôi đang cố gắng giải quyết tất cả trong một công thức.

Tôi có một thiết lập các bảng:

bàn của tôi

Tôi có bao nhiêu NFPI (Số lượng trái x x Cường độ phần trăm) cho Táo?

Tôi cần quét cột G của Bảng 3 so với Cột B của Bảng 1 để xem hàng nào có một loại Apple trong đó.

Sau đó, tôi cần tìm tổng số trái cây cho mỗi lần xuất hiện của Apple:

(Number of trees * Tree fruit) + ground fruit

Và tìm thấy tổng số trái cây trong Bảng 2 với Cường độ phần trăm thích hợp và cộng tất cả các lần xuất hiện

Vì vậy, nó sẽ trông như:

(1 * 3) + 2 = 5 Red Apples. NFPI of 5 fruits at 97% intensity = 1.67  
(2 * 2) + 0 = 4 Green Apples. NFPI of 4 fruits at 98% intensity = 2  
(1 * 2) + 1 = 3 Yellow Apples. NFPI of 3 fruits at 97% intensity = 1  
**total NFPI = (1.67 + 2 + 1) = 4.67**

Tôi đang cố gắng làm tất cả trong một công thức. Công thức tôi đã cố gắng sử dụng kết hợp một vlookup vào một công thức mảng, nhưng nó khiến tôi trả lời sai. Đây là công thức tôi đã thử:

{=SUM(IF(ISERROR(MATCH(G12:G16,B3:B5,0))=FALSE,VLOOKUP(H12:H16,F4:K8,(I12:I16*J12:J16)+K12:K16+1),0))}

Tôi không thể hiểu tại sao nó không hoạt động hoặc cách để làm cho nó hoạt động. Tôi nghĩ có lẽ một công thức SUMPRODVEL có thể giúp ích, nhưng tôi cũng không thể hiểu được. Tôi biết tôi chỉ có thể tìm NFPI của mỗi mục táo và nhập nó vào một cột khác bên cạnh Ground Fruitcột và sau đó chỉ cần đặt một công thức SUM ở dưới cùng để thêm tất cả, nhưng tôi đang cố gắng tìm tổng mà không làm điều đó nếu có thể.

Bất kỳ trợ giúp sẽ được đánh giá cao!


Sean, cuối cùng tôi đã có được điều này để làm việc theo cách bạn muốn nó. Xem câu trả lời đầu tiên được chỉnh sửa của tôi dưới đây.
Bandersnatch

Câu trả lời:


1

EDIT: Một câu trả lời gần đây từ @ScottCraner đã sử dụng INDEX()công thức "không tham chiếu" và câu trả lời của anh ấy khiến tôi quyết định thực hiện một vết nứt khác trong vấn đề này. Cách tiếp cận tương tự mà tôi đã (không thành công) đã thử trước khi hoạt động hoàn hảo lần thứ hai. Tôi sẽ mô tả giải pháp dưới đây.

Bối cảnh về công thức INDEX () được tham chiếu lại:

Sean, bạn đã thực hiện một nỗ lực đáng ngưỡng mộ để sử dụng các công thức mảng để làm những gì bạn cần làm. Các vấn đề bạn gặp phải có liên quan đến cách Excel xử lý mảng. Một số công thức có thể sử dụng mảng làm đối số và một số không thể.

Tôi đã nghiên cứu sâu về vấn đề này và tôi đã học được một số điều rất kỳ quái, phức tạp về việc sử dụng mảng trong INDEX()công thức của Excel mà trước đây tôi không biết. Để hiểu công thức này hoạt động như thế nào, hãy bắt đầu từ cuối.

Điều cuối cùng mà công thức của bạn sẽ làm là tổng ba giá trị (không liên tục) từ mảng 2D là Bảng 2 của bạn.

INDEX(array,row_num,col_num)có thể trả về một giá trị từ một mảng 2D và nó cũng có thể trả về toàn bộ một cột hoặc hàng. Có vẻ như nó phải có thể trả về một danh sách các giá trị. Vì vậy, hãy kiểm tra nó.

Công thức này sẽ (trong một thế giới hoàn hảo) trả về số tiền bạn đang tìm kiếm từ Bảng 2:

=SUM(INDEX(G4:K8,{3,2,3},{5,4,3}))

Điều đó sẽ thêm các phần tử từ hàng 3, cột 5 cộng với hàng 2, cột 4 cộng với hàng 3, cột 3. Nhưng không , nó chỉ trả về 1,67, là phần tử đầu tiên được tham chiếu.

Tìm kiếm trực tuyến tạo ra các tài liệu tham khảo (bao gồm một tài liệu ở đây trên StackOverflow ) có nghĩa là INDEX()sẽ trả về một mảng, nhưng chỉ khi bạn hủy tham chiếu công thức (đó là phần "kỳ quái"). Phần "phức tạp" là làm thế nào để làm điều đó. Đây là công thức "không tham chiếu":

=SUM(INDEX(G4:K8,N(IF(1,{3,2,3})),N(IF(1,{5,4,3}))))

Công thức này cho câu trả lời đúng: 4,67.

Trong công thức, IF()xử lý 1 là True, do đó, nó trả về mảng các số và N()trả về mảng các số nếu chúng là số. Tại sao IF () và N () được yêu cầu để làm cho công thức hoạt động chính xác là dự đoán của bất kỳ ai. Trong công thức của Scott , anh ta cũng phải nhân mảng của mình (đó là một tham chiếu phạm vi) với 1.

Nhưng, bây giờ chúng ta có một công thức cho câu trả lời đúng. Và hy vọng, tất cả những gì chúng ta phải làm là thay thế các hằng số mảng bằng các mảng được tính toán bằng dữ liệu khác của bạn.

Thông tin mới bắt đầu từ đây.

Đối với row_num's trong công thức trên {3,2,3}, chúng ta cần vị trí của cường độ phần trăm trong F4: F8 liên quan đến các giống trái cây được chọn. Trước tiên, chúng tôi sẽ nhận được một loạt các vị trí của Táo trong G12:G16Bảng 3 của bạn:

=MATCH(B3:B5,G12:G16,0)

Đây là một công thức mảng và phải được nhập với CTRLShiftEnter, chứ không phải chỉ Enter.

Công thức này tìm danh sách các giống Apple từ Bảng 1 trong Cột G của Bảng 3 và trả về một mảng các vị trí của chúng.

Nếu bạn chọn công thức trong thanh công thức và nhấn F9, bạn sẽ thấy giá trị của công thức là mảng {1,3,4}, vị trí của Táo trong Cột G của Bảng 3.

Bây giờ chúng tôi cần PI liên quan đến các vị trí đó. Công INDEX()thức này tìm trong Cột H và sử dụng mảng trên dưới dạng row_num's. Ở đây, row_num phải được "hủy tham chiếu":

=INDEX(H12:H16,N(IF(1,MATCH(B3:B5,G12:G16,0))))

Công thức này trả về mảng {0.97,0.98,0.97}, PI của Táo. Càng xa càng tốt. Tiếp theo, chúng tôi sử dụng mảng đó làm giá trị tra cứu trong một MATCH()công thức có trong F4: F8, chỉ số PI của Bảng 2 của bạn:

=MATCH(INDEX(H12:H16,N(IF(1,MATCH(B3:B5,G12:G16,0)))),F4:F8,0)

Công thức này trả về mảng {3,2,3}và đó là những hàng row_num cần thiết cho công thức cuối cùng.

Tiếp theo, chúng ta cần col_num's {5,4,3}, đó là tổng số trái cây cho mỗi giống của Apple. Chúng ta sẽ nhận được điều này từ Bảng 3, nhưng trước tiên chúng ta cần tính tổng số lượng trái cây cho tất cả các loại trái cây. Mảng (được tính toán) này là một danh sách các tổng số đó:

(I12:I16*J12:J16)+K12:K16

Để có được tổng số trái cây cho các giống Apple, chúng tôi sẽ sử dụng mảng đó trong một INDEX(), với cùng một hàng (không tham chiếu) như trước:

=INDEX((I12:I16*J12:J16)+K12:K16,N(IF(1,MATCH(B3:B5,G12:G16,0))))

Công thức này trả về mảng {5,4,3}và đó là những công thức cần thiết cho công thức cuối cùng.

Đặt tất cả những thứ này lại với nhau, danh sách của NFPI là:

=INDEX(G4:K8,MATCH(INDEX(H12:H16,N(IF(1,MATCH(B3:B5,G12:G16,0)))),F4:F8,0),INDEX((I12:I16*J12:J16)+K12:K16,N(IF(1,MATCH(B3:B5,G12:G16,0))))

Công thức này trả về mảng {1.67;2;1}. Đó là những NFPI dành cho Táo, và bây giờ chúng ta chỉ cần thêm chúng lên.

Nhưng chưa hẳn, có một vấn đề nhỏ cần quan tâm trước tiên. Tất cả ba giống của Apple có thể được tìm thấy trong Bảng 3, nhưng điều này không đúng với Cam. Các công thức trên trả về mảng với #N/Atrong đó không thể tìm thấy giống Cam nhỏ. Điều này không gây ra bất kỳ vấn đề nào cho đến khi đến lúc phải thêm các giá trị.

Vì vậy, trước khi lấy tổng, chúng tôi chuyển đổi #N/A'sthành 0 bằng một IFERROR()công thức. Đây là công thức cuối cùng:

=SUM(IFERROR(INDEX(G4:K8,MATCH(INDEX(H12:H16,N(IF(1,MATCH(C3:C5,G12:G16,0)))),F4:F8,0),INDEX((I12:I16*J12:J16)+K12:K16,N(IF(1,MATCH(C3:C5,G12:G16,0))))),0))

Công thức này trả về 4,67 cho Táo và 5,75 cho Cam.

Sean, tôi hy vọng điều này vẫn có thể hữu ích. Xin lỗi vì sự chậm trễ lâu dài.


Ồ, cảm ơn bạn rất nhiều. Điều này thực sự thú vị. Tôi hoàn toàn không hiểu làm thế nào các công cụ "tham chiếu" và "phức tạp" hoạt động trong công thức đó, nhưng nó thực sự hoạt động như bạn đã nói. Tôi thực sự đánh giá cao sự giúp đỡ cho đến nay. Hy vọng được nghe lại từ bạn!
Sean

Không có gì. Công thức khá kỳ lạ. IF () coi 1 là True, do đó, nó trả về mảng các số và N () trả về mảng các số nếu chúng là số. Tại sao điều này làm bất cứ điều gì cả, (nhưng làm cho công thức hoạt động chính xác) nằm ngoài tôi.
Bandersnatch

Cảm ơn đã giải thích. Tôi không có công thức T () và N () thậm chí còn tồn tại; Tôi đã phải tìm kiếm chúng. Chúng có vẻ giống như một số công thức ban đầu từ những ngày đầu của Excel.
Sean

Một câu hỏi khác: Tôi hiểu cách vlookup của bạn trả về mảng bạn nhận được, nhưng làm thế nào để bạn nhận được mảng trả về để hiển thị trong excel? Tất cả những gì tôi từng là #VALUE! lỗi. Tôi cho rằng đó là vì một ô chỉ có thể hiển thị một giá trị. Có cách nào để chuyển đổi mảng trả về thành văn bản và sau đó hiển thị nó trong ô có công thức không? Chủ yếu là hỏi điều này để tham khảo trong tương lai khi tôi gặp phải một vấn đề khó khăn khác mà tôi đang cố gắng tìm ra.
Sean

Bạn biết nhập công thức mảng bằng CTRL-Shift-Enter, phải không? Thông thường, điều đó sẽ xóa lỗi #VALUE. Để xem toàn bộ mảng được trả về, nhấp vào thanh công thức và tô sáng công thức (hoặc một phần của công thức) mà bạn muốn xem kết quả. Nhấn F9 và Excel hiển thị giá trị của những gì bạn đã tô sáng. Hãy chắc chắn nhấn CTRL-Z sau đó hoặc Excel thay thế công thức của bạn bằng kết quả. :-)
Bandersnatch

1

EDIT Xem câu trả lời khác của tôi trên trang này. Nó chỉ ra rằng INDEX()CÓ THỂ trả về một danh sách các giá trị (không liên tục) từ một mảng.

Đây là một cách khác để thực hiện những gì bạn đang cố gắng thực hiện, mặc dù công thức hóa ra rất dài.

Công thức sau đây tra cứu từng trong số ba NFPI trong Bảng 2 của bạn và cộng chúng lại với nhau.

=INDEX(G$4:K$8,MATCH(INDEX(H$12:H$16,MATCH(B3,G$12:G$16,0)),F$4:F$8,0),MATCH(INDEX(L$12:L$16,MATCH(B3,G$12:G$16,0)),G$3:K$3,0))+INDEX(G$4:K$8,MATCH(INDEX(H$12:H$16,MATCH(B4,G$12:G$16,0)),F$4:F$8,0),MATCH(INDEX(L$12:L$16,MATCH(B4,G$12:G$16,0)),G$3:K$3,0))+INDEX(G$4:K$8,MATCH(INDEX(H$12:H$16,MATCH(B5,G$12:G$16,0)),F$4:F$8,0),MATCH(INDEX(L$12:L$16,MATCH(B5,G$12:G$16,0)),G$3:K$3,0))

Cách thức hoạt động: Mỗi thuật ngữ trong tổng là một INDEX()hàm trả về một phần tử từ Bảng 2 bằng cách chỉ định row_num và cột_num. Đối với thuật ngữ đầu tiên, row_num được tìm thấy trước tiên, bằng cách sử dụng một INDEX()tìm kiếm B3(Táo đỏ) trong Bảng 3 và trả về% Cường độ liên quan:

INDEX(H$12:H$16,MATCH(B3,G$12:G$16,0))

Sau đó PI này được sử dụng trong một MATCH()để trả về đúng hàng của Bảng 2:

MATCH(INDEX(H$12:H$16,MATCH(B3,G$12:G$16,0)),F$4:F$8,0)

Cột_num được tìm thấy bằng cách đầu tiên tìm đúng số lượng trái cây. Tôi đã thêm một cột bổ sung vào Bảng 3 của bạn để tính tổng số trái cây trong đó L12:L16. Nếu đó không phải là một lựa chọn, bạn có thể tính số lượng trái cây "đang bay" bằng cách thay thế L$12:L$16bằng (I$12:I$16)*(J$12:J$16)+(K$12:K$16):

INDEX(L$12:L$16,MATCH(B3,G$12:G$16,0))

Đối với row_num, điều này được sử dụng trong a MATCH()để trả về đúng hàng của Bảng 2:

MATCH(INDEX(L$12:L$16,MATCH(B3,G$12:G$16,0)),G$3:K$3,0)

Bây giờ, hàng và cột được biết đến với Red Apple, thuật ngữ đầu tiên trong tổng là:

=INDEX(G$4:K$8,MATCH(INDEX(H$12:H$16,MATCH(B3,G$12:G$16,0)),F$4:F$8,0),MATCH(INDEX(L$12:L$16,MATCH(B3,G$12:G$16,0)),G$3:K$3,0))

Hai thuật ngữ còn lại cho Green Apple và Yellow Apple là cùng một công thức, nhưng có B4B5thay thế B3.

Tôi hy vọng điều này sẽ giúp và may mắn nhất.


Tôi đánh giá cao người đàn ông giúp đỡ. Tôi có xu hướng tạo ra các công thức cực kỳ dài như thế này mọi lúc, vì vậy tôi rất thích tìm ra cách bạn đã làm nó. Câu hỏi và hình ảnh ban đầu của tôi được cung cấp ở trên là một số dữ liệu được phát minh để dễ hiểu. Với dữ liệu thực tế tôi đang sử dụng, tương đương với Bảng 1 ở trên có hơn 30 mục nhập. Vì vậy, tôi nghĩ rằng giải pháp này, trong khi nó hoạt động, có thể quá mức nếu nó bao gồm tổng số hơn 30 hàm INDEX. Dường như không thể sử dụng toàn bộ Bảng 1 làm tài liệu tham khảo và cách giải quyết là thay vào đó sử dụng từng mục (B3, B4, B5 như bạn đã làm).
Sean

Nhưng tôi đã bình chọn câu trả lời của bạn là giải pháp cho câu hỏi vì về mặt kỹ thuật nó là một giải pháp cho dữ liệu trong câu hỏi ban đầu của tôi. Chúc mừng!
Sean

-2

Trên cơ sở thông tin được cung cấp bởi OP và Công thức mẫu, tôi đã tìm thấy Giải pháp trích xuất tên trái cây, Tổng số trái cây và NFPI.

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

Công thức trong Ô A12 để chiết xuất Loại trái cây:

=IFERROR(VLOOKUP(A2,$D$2:$H$6,1,0),"")

Công thức trong D12 để tạo Bảng Táo:

{=VLOOKUP(A2,$D$2:$H$6,{1,2,3,4,5},FALSE)}

Lưu ý: Kết thúc Công thức bằng Enter, sau đó kéo Công thức lên Cột H và nhấn F2 rồi Hoàn tất Công thức này bằng Clrt + Shift + Enter sau đó kéo xuống. Bạn nhận được Bảng Táo với các Giá trị khác.

Công thức trong Ô B12 để tìm Tổng giá trị trái cây (như OP đã đề xuất Công thức mẫu):

`=IF(VLOOKUP(A2,$D$2:$H$6,1,0)=$D12,((F12*G12)+H12),0)`

Đối với NFPI, Công thức trong Ô C12:

=(E12*IF(VLOOKUP(A2,$D$2:$H$6,1,0)=$D12,((F12*G12)+H12),0))

Lưu ý: Đây là Công thức dự kiến ​​tôi đã tạo trên cơ sở thông tin tôi đã tìm thấy trong OP. ( Nếu bạn chỉ cho tôi cách bạn tìm thấy 1,67 thì tôi chỉ thay đổi phương trình ).

Tôi tin rằng điều này sẽ giúp bạn.


Xin chào Rajesh, tôi không chắc nó hoạt động như thế nào. Tôi không thấy cách nó sử dụng Bảng Tỷ lệ phần trăm - Số lượng Trái cây (Bảng 2 từ hình ảnh của tôi) như tôi muốn.
Sean

@Sean ,, tôi đã giải quyết được 2 vấn đề. 1. Trích xuất tên trái cây và 2. Tổng số trái cây (như bạn đã hiển thị, (1 * 3) + 2 = 5). Trên thực tế, bạn đang tính toán như thế nào, NFPI của 5 Trái cây = 1,67 ,, về điều này tôi hơi bối rối. Nếu bạn chỉ cho tôi phương trình, tôi sẽ gợi ý Công thức cách lấy 5 và sau đó là 1,67. Nhưng hãy để tôi nhắc cho cả 3 bài tập công thức SINGLE là không thể !! - Rajesh S 37 phút trước
Rajesh S

@Sean ,, kiểm tra Tôi đã chỉnh sửa câu trả lời của tôi cũng đang tính toán NFPI. Một lần nữa tôi muốn nhắc bạn, về NFPI tôi vẫn nhầm lẫn rằng làm thế nào để có được 1,67 ,, nếu bạn chỉ cho tôi phương trình thì tôi có thể thay đổi Công thức của mình.
Rajesh S

Cảm ơn đã chỉnh sửa, Rajesh. 1,67 là một giá trị từ Bảng 2 trong ảnh của tôi.
Sean
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.