Đạt đến giới hạn IF lồng nhau trong Excel


1

Có ai biết cách rút ngắn công thức Excel này không, vì tôi đã đạt đến giới hạn "NẾU" lồng nhau?

=IF(Sheet!$G$2=Sheet1!I2,"Y",IF(Sheet!$H2=Sheet1!I2,"Y",
 IF(Sheet!$I2=Sheet1!I2,"Y",IF(Sheet!$J2=Sheet1!I2,"Y",
 IF(Sheet!$K2=Sheet1!I2,"Y",IF(Sheet!$L2=Sheet1!I2,"Y",
 IF(Sheet!$M2=Sheet1!I2,"Y",IF(Sheet!$N2=Sheet1!I2,"Y",
 IF(Sheet!$O2=Sheet1!I2,"Y",IF(Sheet!$P2=Sheet1!I2,"Y",
 IF(Sheet!$Q2=Sheet1!I2,"Y",IF(Sheet!$R2=Sheet1!I2,"Y",""))))))))))))

1
Không cần phải đánh giá phương trình của bạn, khi tôi gặp phải vấn đề tương tự, tôi tìm ra cách di chuyển một phần của phân tích sang một ô khác, sau đó chỉ cần tạo một câu lệnh IF áp dụng cho ô đó.
Paul

Câu trả lời:


3

Chú thích: Câu trả lời của tôi, dưới đây, đã được tiếp cận theo cách bạn sẽ làm với các mạch logic kỹ thuật số, trong đó các điều kiện được đánh giá song song. Trong trường hợp đó, bạn cần cung cấp rõ ràng cho mọi điều kiện. Đó là tổng số giết chết ở đây; cách phức tạp hơn mức cần thiết.

Các cách tiếp cận được hiển thị trong câu trả lời của thilina R lợi dụng thực tế là Excel đánh giá các công thức và phạm vi theo trình tự, do đó Excel đã thực hiện hầu hết các công việc giới hạn các điều kiện có thể tương tự như các IF lồng nhau trong câu hỏi.

Cả hai chúng tôi đã đưa ra logic OR được hiển thị như cách tiếp cận cuối cùng của tôi, bên dưới. Tôi sẽ để lại câu trả lời này cho bất kỳ giá trị giáo dục hoặc tính mới nào mà nó có thể cung cấp. Nhưng câu trả lời của thilina R chứa các giải pháp thực tế và phiếu bầu của tôi là Phương pháp 1: HLOOKUP.


Không rõ liệu bạn có thể sử dụng một công thức hạn chế hơn mức cần thiết hay không. Tôi sẽ sử dụng một ký hiệu viết tắt nhỏ ở đây để đơn giản hóa cuộc thảo luận. Tôi sẽ loại bỏ các tên trang tính và tham khảo các bài kiểm tra về đẳng thức theo cách này: Nếu đúng là như vậy G2=I2, Tôi sẽ chỉ gọi nó G2. Nếu sai thì G2 = I2, tôi sẽ gọi nó Not-G2. Với tốc ký này, IFs lồng nhau của bạn có thể được thể hiện như thế này:

    G2 
or: H2 and Not-G2
or: I2 and Not-G2 and Not-H2
or: J2 and Not-G2 and Not-H2 and Not-I2
etc.

Nếu đó là các quy tắc bạn cần, bạn có thể thực hiện với một IF và tất cả logic AND và OR đó. Nó sẽ trông như thế này trong tốc ký:

=IF(OR(G2,AND(H2,Not-G2),AND(I2,Not-G2,Not-H2),...),"Y","")

Điền vào công thức thực tế sẽ như thế này:

=IF(OR(Sheet!$G$2=Sheet1!I2,
       AND(Sheet!$H2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2),
       AND(Sheet!$I2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2),
       AND(Sheet!$J2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2),
       AND(Sheet!$K2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2,Sheet!$J2<>Sheet1!I2),
       AND(Sheet!$L2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2,Sheet!$J2<>Sheet1!I2,Sheet!$K2<>Sheet1!I2),
       AND(Sheet!$M2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2,Sheet!$J2<>Sheet1!I2,Sheet!$K2<>Sheet1!I2,Sheet!$L2<>heet1!I2),
       AND(Sheet!$N2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2,Sheet!$J2<>Sheet1!I2,Sheet!$K2<>Sheet1!I2,Sheet!$L2<>heet1!I2,Sheet!$M2<>Sheet1!I2),
       AND(Sheet!$O2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2,Sheet!$J2<>Sheet1!I2,Sheet!$K2<>Sheet1!I2,Sheet!$L2<>heet1!I2,Sheet!$M2<>Sheet1!I2,Sheet!$N2<>Sheet1!I2),
       AND(Sheet!$P2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2,Sheet!$J2<>Sheet1!I2,Sheet!$K2<>Sheet1!I2,Sheet!$L2<>heet1!I2,Sheet!$M2<>Sheet1!I2,Sheet!$N2<>Sheet1!I2,Sheet!$O2<>Sheet1!I2),
       AND(Sheet!$Q2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2,Sheet!$J2<>Sheet1!I2,Sheet!$K2<>Sheet1!I2,Sheet!$L2<>heet1!I2,Sheet!$M2<>Sheet1!I2,Sheet!$N2<>Sheet1!I2,Sheet!$O2<>Sheet1!I2,Sheet!$P2<>Sheet1!I2),
       AND(Sheet!$R2=Sheet1!I2,Sheet!$G$2<>Sheet1!I2,Sheet!$H2<>Sheet1!I2,Sheet!$I2<>Sheet1!I2,Sheet!$J2<>Sheet1!I2,Sheet!$K2<>Sheet1!I2,Sheet!$L2<>heet1!I2,Sheet!$M2<>Sheet1!I2,Sheet!$N2<>Sheet1!I2,Sheet!$O2<>Sheet1!I2,Sheet!$P2<>Sheet1!I2,Sheet!$Q2<>Sheet1!I2)),"Y","")

(Tôi không thể đảm bảo một lỗi đánh máy không bị trượt trong đó). Các công thức dài rất khó để nhập và duy trì. Nó có thể hữu ích để sử dụng các tế bào trợ giúp cho các phần của công thức.

Nếu đó không thực sự là các quy tắc bạn cần, đây là một vài trường hợp đơn giản hơn:

  • Nếu bạn không cần chuỗi đó và chỉ quan tâm rằng bất kỳ một, và chỉ một, ô đều bằng I2, đây là cách để thực hiện cùng một logic với một IF:

    =IF((Sheet!$G$2=Sheet1!I2)+(Sheet!$H2=Sheet1!I2)+(Sheet!$I2=Sheet1!I2)+ (Sheet!$J2=Sheet1!I2)+(Sheet!$K2=Sheet1!I2)+(Sheet!$L2=Sheet1!I2)+ (Sheet!$M2=Sheet1!I2)+(Sheet!$N2=Sheet1!I2)+(Sheet!$O2=Sheet1!I2)+ (Sheet!$P2=Sheet1!I2)+(Sheet!$Q2=Sheet1!I2)+ (Sheet!$R2=Sheet1!I2)=1,"Y","")

    Mỗi bộ dấu ngoặc đơn chứa một trong các bài kiểm tra của bạn. Nếu đẳng thức là đúng, nó tạo ra giá trị là 1, Nếu không đúng, giá trị sẽ là 0. Đó là cách Excel đại diện cho đúng và sai.

    Kết quả của tất cả các xét nghiệm này được thêm vào. Nếu tổng là 1, nó có nghĩa là một và chỉ một trong những thử nghiệm là đúng.

  • Nếu trong thực tế, bạn chỉ quan tâm nếu ít nhất một trong những trường hợp đó là đúng, bạn có thể sử dụng OR đơn giản:

    =IF(OR(Sheet!$G$2=Sheet1!I2,Sheet!$H2=Sheet1!I2,Sheet!$I2=Sheet1!I2, Sheet!$J2=Sheet1!I2,Sheet!$K2=Sheet1!I2,Sheet!$L2=Sheet1!I2, Sheet!$M2=Sheet1!I2,Sheet!$N2=Sheet1!I2,Sheet!$O2=Sheet1!I2, Sheet!$P2=Sheet1!I2,Sheet!$Q2=Sheet1!I2,Sheet!$R2=Sheet1!I2),"Y","")

Lưu ý rằng tôi đã thêm dấu ngắt dòng và khoảng trắng thừa trong tất cả các công thức để logic dễ nhìn hơn. Nếu bạn muốn sao chép và dán, bạn sẽ cần phải loại bỏ chúng.


2

Về cơ bản bạn muốn biết nếu có bất kỳ tế bào G2:R2 trong một tờ có cùng giá trị với ô I2 trên một tờ khác.

Có một số cách để làm điều đó. Cách dễ nhất mà bạn nghĩ đến là điều này vì các giá trị bạn đang kiểm tra nằm trong một phạm vi liên tục:

Phương pháp 1: HLOOKUP / VLOOKUP

=IF(ISERROR(HLOOKUP(Sheet1!I2,Sheet!G2:R2,1,FALSE)),"","Y")

Việc sử dụng này tìm kiếm giá trị trong ô I2 trên một trang tính và kiểm tra xem nó có trong trang tính khác trong phạm vi không G2:R2. Nếu HLOOKUP tìm thấy ít nhất một giá trị trong phạm vi G2:R2 phù hợp với tế bào I2 trong tờ khác, nó trả về Y hoặc nếu không thì không trả về giá trị.

tôi đã sử dụng HLOOKUP vì phạm vi được cung cấp là một phạm vi ngang. Nếu phạm vi là một phạm vi dọc, bạn có thể sử dụng VLOOKUP thay thế.

Nếu các giá trị là không phải trong một phạm vi liên tục vì bất kỳ lý do gì, bạn có thể sử dụng 2 phương pháp khác bên dưới.

Đây là một cách khác:

Cách 2: XÁC NHẬN

=IF(ISERROR(FIND(Sheet1!I2,CONCATENATE(Sheet!G2,Sheet!H2,Sheet!I2,Sheet!J2,Sheet!K2,Sheet!L2,Sheet!M2,Sheet!N2,Sheet!O2,Sheet!P2,Sheet!Q2,Sheet!R2))),"","Y")

Điều này về cơ bản tạo ra một chuỗi lớn tất cả các giá trị trong các ô G2:R2 và kiểm tra nếu giá trị trong ô I2 của tờ khác là trong đó. Nếu có, nó trả về Y mặt khác, nó không trả về giá trị

Lưu ý rằng vì phương thức này tạo ra một chuỗi lớn trong số tất cả dữ liệu trong phạm vi ô bạn cần tìm, tùy thuộc vào loại dữ liệu trong các ô đó, nó có thể trả về Y không chính xác Ví dụ: Nếu Sheet1!I2 có giá trị 123Sheet!G2 có giá trị 12Sheet!H2 có giá trị 34, phương pháp này vẫn sẽ hiển thị Y vì "chuỗi lớn" sẽ chứa "1234 ..." và giá trị 123 sẽ nằm trong chuỗi này.

Một cách khác để làm điều này là:

Phương pháp 3: Toán tử Boolean - HOẶC

[@ fixer1234 đã đề cập đến điều này đầu tiên]

=IF(OR((Sheet!G2=Sheet1!I2), (Sheet!H2=Sheet1!I2),(Sheet!I2=Sheet1!I2), (Sheet!J2=Sheet1!I2), (Sheet!K2=Sheet1!I2), (Sheet!L2=Sheet1!I2), (Sheet!M2=Sheet1!I2), (Sheet!N2=Sheet1!I2), (Sheet!O2=Sheet1!I2), (Sheet!P2=Sheet1!I2), (Sheet!Q2=Sheet!I2), (Sheet!R2=Sheet1!I2) ),"Y","")

Điều này sử dụng toán tử boolean OR để kiểm tra nếu có bất kỳ giá trị nào trong phạm vi G2:R2 đang ở trong phòng giam I2 trên tờ khác. Nếu toán tử boolean tìm thấy ít nhất một giá trị khớp với ô I2 trong tờ khác, nó trả về Y hoặc nếu không thì không trả về giá trị.

Phương pháp 4: Trải ra công thức

  1. Nếu bạn chỉ muốn sử dụng IF điều kiện (vì một số lý do tôi không thể tưởng tượng được), bạn có thể trải ra IF điều kiện vào nhiều ô và sau đó sử dụng kết quả của các ô đó để xác định kết quả cuối cùng. Ví dụ: bạn có thể có một vài IF điều kiện trong một ô và bạn có thể sử dụng kết quả của điều này trong một ô khác cùng với một vài điều nữa IF điều kiện và như vậy.

Bạn có thể có những điều sau đây trong tế bào A1 của một tờ:

=IF(Sheet!$G$2=Sheet1!I2,"Y",IF(Sheet!$H2=Sheet1!I2,"Y", IF(Sheet!$I2=Sheet1!I2,"Y",IF(Sheet!$J2=Sheet1!I2,"Y", IF(Sheet!$K2=Sheet1!I2,"Y","")))))

Và sau đó, bạn có thể có những điều sau đây trong tế bào A2 của một tờ:

=IF(A1="Y", "Y", IF(Sheet!$L2=Sheet1!I2,"Y", IF(Sheet!$M2=Sheet1!I2,"Y",IF(Sheet!$N2=Sheet1!I2,"Y", ""))))

Cuối cùng, bạn có thể có các mục sau trong ô A3 của một tờ:

=IF(A2="Y","Y",IF(Sheet!$O2=Sheet1!I2,"Y",IF(Sheet!$P2=Sheet1!I2,"Y", IF(Sheet!$Q2=Sheet1!I2,"Y",IF(Sheet!$R2=Sheet1!I2,"Y","")))))

Phương pháp 5: VBA

Sử dụng VBA nếu bạn cảm thấy thoải mái với nó để tạo một hàm do người dùng xác định tùy chỉnh trong đó bạn có thể có nhiều lồng nhau If các câu lệnh.

Lưu ý: Đầu ra của cả hai công thức này giống như công thức mà bạn đã cung cấp.


Bạn đã đánh cắp HOẶC của tôi! Trên thực tế, điều đó không được đảm bảo để mang lại kết quả giống như các IF lồng nhau của OP. Phản ứng đầu tiên của tôi với hai người khác của bạn là họ không được đảm bảo giống nhau, nhưng tôi nghĩ bạn đã đúng. Cả HLOOKUP và TÌM đều tìm kiếm trận đấu đầu tiên theo thứ tự nhất định, bắt chước hành động của các IF lồng nhau. Vì vậy, tôi tin rằng phương pháp 1 của bạn là người chiến thắng rõ ràng.
fixer1234

Rất tiếc. Tôi cũng chỉ nhận thấy rằng. Tôi đã thử những thứ khác nhau và không nhận ra nó có trong câu trả lời của bạn! Tôi sẽ cập nhật của tôi.
thilina R

Excel đánh giá công thức OR theo thứ tự được viết, vì vậy tôi nghĩ bạn cũng đúng với công thức đó. Có vẻ như tôi đã suy nghĩ quá nhiều về câu trả lời của mình (hoặc suy nghĩ kém?). Câu trả lời của bạn là tốt hơn.
fixer1234

Cảm ơn! Tôi đã cập nhật câu trả lời với một vài phương pháp nữa. Tôi nghĩ rằng bạn đã cố gắng giải thích quy trình cho OP theo một cách khác, đó là điều có thể dẫn đến điều đó :)
thilina R
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.