Nhờ gỡ rối hàm if với nhiều điều kiện

Liên hệ QC

nthxe

Trình còi
Tham gia
14/6/08
Bài viết
259
Được thích
112
Giờ em đã ngồi máy nên vào diễn đàn thấy em post nhầm khu vực. Bác Mod nào đi qua xin xóa giùm. Em post lại bài cho đúng khu vực và chi tiết hơn. Cảm ơn các bác


Cảm ơn các bác
 
Lần chỉnh sửa cuối:
Không ngồi máy tính mà nhớ được công thức dài thế?
Bạn nên tạo file giả lập, hoặc chỉ để 1 dòng dữ liệu cho file mẫu rồi gửi lên đây thử xem.
 
Không ngồi máy tính mà nhớ được công thức dài thế?
Bạn nên tạo file giả lập, hoặc chỉ để 1 dòng dữ liệu cho file mẫu rồi gửi lên đây thử xem.
Dạ công thức của em đơn giản nên em nhớ ạ.

Em đang cầm điện thoại nên không biết tạo file giả lập như thế nào. Hay ý bác như này có đúng không nhé.
Tại dòng 22, các cột L và M lần lượt nhận các giá trị: 15 và 12 thì ở cột N em đặt công thức kia ạ.
 
Kính chào các bác
Em có 2 cột dữ liệu của năm 2019 lưu ở cột L và năm 2020 lưu ở cột M.
Em cần kiểm tra dữ liệu thay đổi giữa 2 năm theo điều kiện sau: ....

Lập bảng dò có 4 cột:

1.số liệu từ 2.số liệu đến 3. Tăng giảm giữa năm 4. Kết quả

rồi dùng LOOKUP
 
Giờ em đã ngồi máy nên vào diễn đàn thấy em post nhầm khu vực. Bác Mod nào đi qua xin xóa giùm. Em post lại bài cho đúng khu vực và chi tiết hơn. Cảm ơn các bác
 
Kính chào các bác;

Em có 2 cột dữ liệu của năm 2019 lưu ở cột A và năm 2020 lưu ở cột B. Em cần kiểm tra dữ liệu thay đổi giữa 2 năm theo điều kiện sau:

- Nếu cột B có giá trị nhỏ hơn 10 và mức biến động của cột B so với cột A lớn hơn 70% thì cột C nhận giá trị "Kiểm tra";
- Nếu cột B có giá trị từ 11 đến 99 và mức biến động của cột B so với cột A lớn hơn 30% thì cột C nhận giá trị "Kiểm tra";
- Nếu cột B có giá trị từ 100 đến 500 và mức biến động của cột B so với cột A lớn hơn 15% thì cột C nhận giá trị "Kiểm tra";
- Nếu cột B có giá trị từ 501 đến 999 và mức biến động của cột B so với cột A lớn hơn 10% thì cột C nhận giá trị "Kiểm tra";
- Nếu cột B có giá trị lớn hơn 1000 và mức biến động của cột B so với cột A lớn hơn 5% thì cột C nhận giá trị "Kiểm tra".

Ngoài các điều kiện trên thì C nhận giá trị trắng.

Em dùng công thức này ở cột C nhưng bị lỗi. Nhờ các bác kiểm tra giúp:

=IFERROR((IF(OR(AND(B2<10,ABS(B2/A2*100-100)>70), AND(AND(B2>=10,B2<=100),ABS(B2/A2*100-100)>30),AND(AND(B2>100,B2<=500),ABS(B2/A2*100-100)>15),AND(AND(B2>500,B2<=1000),ABS(B2/A2*100-100)>10),AND(B2>1000,ABS(B2/A2*100)>5),"Kiểm tra",""),"")

Cảm ơn các bác
 

File đính kèm

  • GPE_trogiup_24-12-2021.xlsx
    9.9 KB · Đọc: 8
Tôi đoán bạn muốn viết công thức này:
Mã:
=IFERROR(IF(OR(AND(B2<10,ABS(B2/A2*100-100)>70), AND(AND(B2>=10,B2<=100),ABS(B2/A2*100-100)>30),AND(AND(B2>100,B2<=500),ABS(B2/A2*100-100)>15),AND(AND(B2>500,B2<=1000),ABS(B2/A2*100-100)>10),AND(B2>1000,ABS(B2/A2*100)>5)),"Kiểm tra",""),"")
Tuy nhiên vẫn có cách thu gọn lại công thức ngắn hơn.
Bạn không nên mở cùng 1 đề tài ở 2 bài viết. Tạm thời tôi sẽ để vậy, ngày mai tôi sẽ gom lại cùng 1 bài viết.
 
Tôi đoán bạn muốn viết công thức này:
Mã:
=IFERROR(IF(OR(AND(B2<10,ABS(B2/A2*100-100)>70), AND(AND(B2>=10,B2<=100),ABS(B2/A2*100-100)>30),AND(AND(B2>100,B2<=500),ABS(B2/A2*100-100)>15),AND(AND(B2>500,B2<=1000),ABS(B2/A2*100-100)>10),AND(B2>1000,ABS(B2/A2*100)>5)),"Kiểm tra",""),"")
Tuy nhiên vẫn có cách thu gọn lại công thức ngắn hơn.
Bạn không nên mở cùng 1 đề tài ở 2 bài viết. Tạm thời tôi sẽ để vậy, ngày mai tôi sẽ gom lại cùng 1 bài viết.
Cảm ơn bác. Lúc chiều em vào diễn đàn bằng điện thoại nên không nhìn hết được các mục trong diễn đàn nên post nhầm khu vực. Nay em vào bằng máy tính nên biết mình post nhầm nên post lại cho đúng. Bên bài kia em có nhờ các bác Mod xóa giùm cho khỏi loãng rồi ạ
 
Công thức dài ngoằng mà bị lỗi thì việc đầu tiên là phải đếm dấu ngoặc.

- copy cả công thức vào Word
- Ctrl+f > tìm dấu "(" ---> cửa sổ Navigation sẽ báo cho biết là tìm được 17 dấu (
- tìm dấu ")" ---> cửa sổ Navigation sẽ báo cho biết là tìm được 15 dấu )
Số dấu ")" ít hơn số dấu "(" , cho nên chắc công thức sdai chô đó (còn sai chỗ nào nữa thì tính sau).

Ngắt đoạn ra:
=IFERROR(
(


IF(
OR(
AND(B2<10,ABS(B2/A2*100-100)>70), -------------------------> 2 "(" và 2 ")" là một cụm
AND(AND(B2>=10,B2<=100),ABS(B2/A2*100-100)>30), -----> 3 "(" và 3 ")" là một cụm
AND(AND(B2>100,B2<=500),ABS(B2/A2*100-100)>15), -----> nt
AND(AND(B2>500,B2<=1000),ABS(B2/A2*100-100)>10), -----> nt
AND(B2>1000,ABS(B2/A2*100)>5), -----------------------> đến đây thì hết lô gic. Hàm OR không có ")" để đóng block lại
"Kiểm tra","" -----------------> đến đây thì hết tham số thứ 3 của IF. Hàm IF không có ")" để dóng block lại

)
,"")


Đó là kiểm tra lỗi thôi. Chứ về cách diễn giả lô gic thì bạn không có căn bản về toàn lô gic.
Phép And cũng giống như phép nhân, có tính đồng đẳng:
a * (b * c) = (a * b ) * c = a * b * c
X And (Y And Z) = X And Y And Z


AND(AND(B2>=10,B2<=100),ABS(B2/A2*100-100)>30) = AND((B2>=10, B2<=100, ABS(B2/A2*100-100)>30)
 
Công thức dài ngoằng mà bị lỗi thì việc đầu tiên là phải đếm dấu ngoặc.

- copy cả công thức vào Word
- Ctrl+f > tìm dấu "(" ---> cửa sổ Navigation sẽ báo cho biết là tìm được 17 dấu (
- tìm dấu ")" ---> cửa sổ Navigation sẽ báo cho biết là tìm được 15 dấu )
Số dấu ")" ít hơn số dấu "(" , cho nên chắc công thức sdai chô đó (còn sai chỗ nào nữa thì tính sau).

Ngắt đoạn ra:
=IFERROR(
(


IF(
OR(
AND(B2<10,ABS(B2/A2*100-100)>70), -------------------------> 2 "(" và 2 ")" là một cụm
AND(AND(B2>=10,B2<=100),ABS(B2/A2*100-100)>30), -----> 3 "(" và 3 ")" là một cụm
AND(AND(B2>100,B2<=500),ABS(B2/A2*100-100)>15), -----> nt
AND(AND(B2>500,B2<=1000),ABS(B2/A2*100-100)>10), -----> nt
AND(B2>1000,ABS(B2/A2*100)>5), -----------------------> đến đây thì hết lô gic. Hàm OR không có ")" để đóng block lại
"Kiểm tra","" -----------------> đến đây thì hết tham số thứ 3 của IF. Hàm IF không có ")" để dóng block lại

)
,"")


Đó là kiểm tra lỗi thôi. Chứ về cách diễn giả lô gic thì bạn không có căn bản về toàn lô gic.
Phép And cũng giống như phép nhân, có tính đồng đẳng:
a * (b * c) = (a * b ) * c = a * b * c
X And (Y And Z) = X And Y And Z


AND(AND(B2>=10,B2<=100),ABS(B2/A2*100-100)>30) = AND((B2>=10, B2<=100, ABS(B2/A2*100-100)>30)
vâng, cám ơn bác đã chỉ cho cách kiểm ra dấu ngoặc. Nay em cũng ngờ ngợ vấn đề ở đó mà không biết cách kiểm tra rõ ràng như bác.

Về logic, đúng là em không cần nhiều AND thế.

Cảm ơn bác
 
Web KT
Back
Top Bottom