Lấy lại số hàng của công thức MIN IF


1

Tôi muốn biết hàng đang được sử dụng trong một MIN(IF())công thức để tôi có thể sử dụng nó để lấy một giá trị khác trong cùng một hàng ..

Tôi có công thức này:

Giữa hai tờ A là Id B là ngày C là một Id khác trên Sheet2

{=MIN(IF(Sheet2!A:A=A1,B1-Sheet2!B:B,""))}

Tôi muốn biết hàng nào Sheet2!B:Bđang được sử dụng để tính công thức, sau đó trả về giá trị trong cột C2 cho hàng đó.

Có lẽ tôi có thể sử dụng INDEXhoặc MATCHnếu tôi chỉ biết số hàng được sử dụng trong phép tính!

Một công thức khác nhau có thể phải được sử dụng để đạt được điều này, nhưng tôi muốn chứng minh những gì tôi có cho đến nay. Đó là tính toán chính xác. Tôi chỉ cần nó để lấy Id trong cột C2 ngay bây giờ ...

Câu trả lời:


3

Trước hết, nó không phải là ở tất cả là một ý tưởng tốt để sử dụng toàn bộ tài liệu tham khảo cột trong một công thức mảng (hoặc thực sự bất kỳ phi CSE chức năng mảng chế biến khác, chẳng hạn như SUMPRODUCT, AGGREGATE, vv).

Không giống như một số hàm, ví dụ COUNTIF(S), SUMIF(S)trong đó việc sử dụng toàn bộ tham chiếu cột hầu như không ảnh hưởng đến hiệu suất tính toán, các hàm xử lý mảng phải tính toán trên tất cả các ô được truyền cho chúng. Và điều đó áp dụng như nhau cho những ô nằm ngoài ô không trống cuối cùng trong phạm vi được truyền.

Vì vậy, nếu, chẳng hạn, bạn chỉ có dữ liệu kéo dài đến tận hàng 1000, thì bằng cách sử dụng toàn bộ tham chiếu cột trong công thức như vậy, bạn buộc Excel phải tính toán hơn một triệu ô vượt quá mức thực sự cần thiết, một lượng đáng kinh ngạc cho một công thức duy nhất.

Do đó, điều quan trọng là chọn giá trị thấp phù hợp - mặc dù đủ - cho tham chiếu hàng trên hoặc nếu không, làm cho phạm vi của bạn động, sao cho tham chiếu hàng trên được xác định thông qua chức năng tự động phát hiện ô được sử dụng cuối cùng trong cột, do đó cung cấp hiệu quả tối đa.

Đối với vấn đề của bạn, bạn có thể sử dụng công thức mảng sau:

=INDEX(Sheet2!C:C,MATCH(MIN(IF(Sheet2!A1:A100=A1,B1-Sheet2!B1:B100)),IF(Sheet2!A1:A100=A1,B1-Sheet2!B1:B100),0))

Lưu ý rằng tôi chọn một tham chiếu hàng trên 100 ở đây, rõ ràng bạn có thể sửa đổi, mặc dù ghi nhớ những điểm tôi đã nêu trước đó. Nếu bạn thích, tôi cũng có thể chỉ cho bạn cách thiết lập phạm vi động mà tôi đã đề cập.

Cũng lưu ý sự lặp lại của câu lệnh điều kiện trong vòng MATCH's lookup_array , một điểm quan trọng mà bỏ lỡ một số đáng kinh ngạc lần trong các giải pháp đề xuất để loại vấn đề, lỗi là sử dụng đơn giản:

=INDEX(Sheet2!C:C,MATCH(MIN(IF(Sheet2!A1:A100=A1,B1-Sheet2!B1:B100)),B1-Sheet2!B1:B100,0))

trong đó, mặc dù nó có thể hoạt động, nhưng hoàn toàn không đảm bảo kết quả chính xác, bởi vì nó bị sai sót một cách hợp lý.

Trân trọng


Bạn la một con thu! Tốt để biết về mảng, tôi chắc chắn sẽ giới hạn các hàng trong tương lai. Tôi sẽ không cần biết phạm vi năng động cho công việc này nhưng cảm ơn bạn đã cung cấp. Tôi chỉ đơn giản sẽ cứng mã hàng cuối cùng, đó là tốt cho mục đích của tôi. Bạn có nhớ giải thích tại sao các câu điều kiện lặp đi lặp lại? Cảm ơn bạn rất nhiều vì sự giúp đỡ! Tôi đang quyên góp $ 50 cho Hội MS quốc gia để truyền lại tinh thần giúp đỡ của bạn!
ewrewb

Không có gì! Và một cử chỉ rất tử tế thực sự. Bài viết này - mặc dù liên quan đến việc tìm kiếm tối đa chứ không phải tối thiểu - chứa một lời giải thích một chút về lý do tại sao sự lặp lại là cần thiết: excelxor.com/2015/02/22/ . Trân trọng.
XOR LX
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.