Viết lại một công thức của nhiều IF lồng nhau quá sâu


17

Tôi đã viết một công thức đơn giản để kiểm tra giá trị của một ô. Thật không may, công thức quá dài cho phiên bản Excel 2007 của tôi. Lỗi là:

Tiếng Đức: Die angegebene Formel kann nicht eingegeben werden, da sie mehr als 64 Verschachtelungsebenen verwendet.

Tiếng Anh: Không thể nhập công thức đã chỉ định vì nó sử dụng nhiều mức lồng nhau hơn mức cho phép trong định dạng tệp hiện tại

Bất kỳ ý tưởng làm thế nào để làm cho công thức ngắn hơn?

"WENN" có nghĩa là "NẾU" trong tiếng Đức.

   =WENN(N7>=100000000;0;
    WENN(N7>=99000000;1;
    WENN(N7>=98000000;2;
    WENN(N7>=97000000;3;
    WENN(N7>=96000000;4;
    WENN(N7>=95000000;5;
    WENN(N7>=94000000;6;
    WENN(N7>=93000000;7;
    WENN(N7>=92000000;8;
    WENN(N7>=91000000;9;
    WENN(N7>=90000000;10;
    WENN(N7>=89000000;11;
    WENN(N7>=88000000;12;
    WENN(N7>=87000000;13;
    WENN(N7>=86000000;14;
    WENN(N7>=85000000;15;
    WENN(N7>=84000000;16;
    WENN(N7>=83000000;17;
    WENN(N7>=82000000;18;
    WENN(N7>=81000000;19;
    WENN(N7>=80000000;20;
    WENN(N7>=79000000;21;
    WENN(N7>=78000000;22;
    WENN(N7>=77000000;23;
    WENN(N7>=76000000;24;
    WENN(N7>=75000000;25;
    WENN(N7>=74000000;26;
    WENN(N7>=73000000;27;
    WENN(N7>=72000000;28;
    WENN(N7>=71000000;29;
    WENN(N7>=70000000;30;
    WENN(N7>=69000000;31;
    WENN(N7>=68000000;32;
    WENN(N7>=67000000;33;
    WENN(N7>=66000000;34;
    WENN(N7>=65000000;35;
    WENN(N7>=64000000;36;
    WENN(N7>=63000000;37;
    WENN(N7>=62000000;38;
    WENN(N7>=61000000;39;
    WENN(N7>=60000000;40;
    WENN(N7>=59000000;41;
    WENN(N7>=58000000;42;
    WENN(N7>=57000000;43;
    WENN(N7>=56000000;44;
    WENN(N7>=55000000;45;
    WENN(N7>=54000000;46;
    WENN(N7>=53000000;47;
    WENN(N7>=52000000;48;
    WENN(N7>=51000000;49;
    WENN(N7>=50000000;50;
    WENN(N7>=49000000;51;
    WENN(N7>=48000000;52;
    WENN(N7>=47000000;53;
    WENN(N7>=46000000;54;
    WENN(N7>=45000000;55;
    WENN(N7>=44000000;56;
    WENN(N7>=43000000;57;
    WENN(N7>=42000000;58;
    WENN(N7>=41000000;59;
    WENN(N7>=40000000;60;
    WENN(N7>=39000000;61;
    WENN(N7>=38000000;62;
    WENN(N7>=37000000;63;
    WENN(N7>=36000000;64;
    WENN(N7>=35000000;65;
    WENN(N7>=34000000;66;
    WENN(N7>=33000000;67;
    WENN(N7>=32000000;68;
    WENN(N7>=31000000;69;
    WENN(N7>=30000000;70;
    WENN(N7>=29000000;71;
    WENN(N7>=28000000;72;
    WENN(N7>=27000000;73;
    WENN(N7>=26000000;74;
    WENN(N7>=25000000;75;
    WENN(N7>=24000000;76;
    WENN(N7>=23000000;77;
    WENN(N7>=22000000;78;
    WENN(N7>=21000000;79;
    WENN(N7>=20000000;80;
    WENN(N7>=19000000;81;
    WENN(N7>=18000000;82;
    WENN(N7>=17000000;83;
    WENN(N7>=16000000;84;
    WENN(N7>=15000000;85;
    WENN(N7>=14000000;86;
    WENN(N7>=13000000;87;
    WENN(N7>=12000000;88;
    WENN(N7>=11000000;89;
    WENN(N7>=10000000;90;
    WENN(N7>=9000000;91;
    WENN(N7>=8000000;92;
    WENN(N7>=7000000;93;
    WENN(N7>=6000000;94;
    WENN(N7>=5000000;95;
    WENN(N7>=4000000;96;
    WENN(N7>=3000000;97;
    WENN(N7>=2000000;98;
    WENN(N7>=1000000;99;
    WENN(N7>=500000;100;0)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))

13
Câu hỏi của bạn sẽ dễ đọc hơn nhiều nếu bạn đã cấu trúc công thức (có một chỉnh sửa đang chờ xử lý về vấn đề này) - và, IMHO quan trọng hơn, nếu bạn mô tả bằng lời muốn bạn sẽ thực hiện. Có lẽ chúng ta có một vấn đề xy ở đây.
mpy

1
dòng cuối cùng làm tôi nhớ đến một trò đùa
kmdreko

Câu trả lời:


65

Tôi nghĩ rằng công thức tương đương với:

=IF(OR(N7>=100000000,N7<500000),0,100-INT(N7/1000000))

Bây giờ Kevin đã định dạng lại công thức, tôi có thể thấy khá rõ rằng công thức này đúng trong mọi trường hợp.

Nhờ nhận xét của người hỏi, tôi có thể nói rằng công thức tương đương của Đức là:

=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))

Hoạt động tuyệt vời !!! thx - tôi đã sử dụng de.excel-translator.de/translator để dịch công thức. Trong tiếng Đức nó trông giống như=WENN(ODER(N7>=100000000;N7<500000);0;100-GANZZAHL(N7/1000000))
evavienna

Sử dụng VBA và tạo một chức năng do người dùng xác định.
dùng1750995

Một chút buồn khi điều này bỏ qua câu hỏi chung và chỉ giải quyết cho ví dụ cụ thể này.
ống

Công thức có vẻ đúng nhưng câu trả lời thực sự là điều này nên được thực hiện trong một bảng tra cứu như tevlyn nói. Cố gắng làm điều này với một câu lệnh If là thực hành xấu.
WhatEvil

5
@pipe, @WhatEvil - Người hỏi muốn giảm kích thước IFcâu nói của anh ấy và vì cấu trúc dữ liệu của anh ấy, tôi đã đưa ra câu trả lời rõ ràng (cho một nhà toán học) và tôi hoàn toàn không đồng ý rằng nó không đúng hoặc sai . Rõ ràng là cần có một bảng tra cứu cho một hàm tuyến tính ít hơn, nhưng nó quá mức cần thiết cho những dữ liệu này và nó khó có thể được coi là tối ưu: một phép tính trực tiếp luôn tốt hơn tìm kiếm khi có thể tránh được cái sau.
AFH

21

Đặt tất cả các giá trị ngưỡng của bạn vào một phạm vi trên bảng tính và sử dụng công thức tra cứu với kết quả gần đúng.

Sắp xếp dữ liệu của bạn tăng dần theo giá trị của cột tra cứu. Cột tra cứu phải là cột đầu tiên của bảng tra cứu nếu bạn muốn sử dụng VLookup. Nếu bạn hài lòng khi sử dụng kết hợp Chỉ mục / Kết hợp, cột tra cứu có thể ở bất kỳ đâu trong bảng.

Ảnh chụp màn hình bên dưới có bảng tra cứu mẫu trong các ô từ A1 đến B6. Bảng được sắp xếp tăng dần theo các giá trị trong cột A. Điều này rất quan trọng . Nếu bảng không được sắp xếp tăng dần, thì công thức sau sẽ không hoạt động.

Giá trị trong ô E2 không khớp chính xác với bất kỳ giá trị nào trong cột A. Công thức Vlookup sẽ tìm giá trị nhỏ nhất tiếp theo (tức là 50) và sẽ trả về kết quả từ cột 2 của bảng tra cứu cho kết quả gần đúng này. Lưu ý rằng để khớp gần đúng, tham số thứ tư của VLookup phải là "TRUE" hoặc 1.

Đây là công thức:

=VLOOKUP(E2,$A$1:$B$6,2,TRUE)

Và ảnh chụp màn hình:

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

Tên tiếng Đức của Vlookup là SVerweis (tôi nghĩ) và bạn cần thay thế dấu phẩy bằng dấu chấm phẩy trong Excel tiếng Đức. Tôi không biết "TRUE" trong Excel tiếng Đức là gì, nhưng bạn có thể sử dụng 1 cho TRUE và 0 cho FALSE.

=SVerweis(E2;$A$1:$B$6;2;1)

Hoffentlich klappt's !!


Ich hoffe auch! Hãy để tôi đọc qua điều này - có vẻ như rất nhiều công việc cho tôi. thx - tôi cho bạn biết nếu tôi có thể làm cho nó hoạt động :)
evavienna

Việc điền vào bảng số không phải là nhiều việc nếu các số được đặt cách đều nhau. Nhập hai số đầu tiên, chọn chúng và kéo tay cầm điền.
teylyn

TRUEWAHRFALSEFALSCH.
IQV

Và tại sao một downvote?
teylyn
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.