Excel nói quá nhiều đối số cho hàm IF / AND / MONTH


1

Tôi cần nó để sản xuất các đơn đặt hàng ở Canada hoặc Mexico, trên 1.000 đô la và trong tháng bảy. Công thức tôi đang cố gắng sử dụng là:

=IF(OR(A2="Canada","Mexico", IF(C2>1000, "Ship by Air", IF(MONTH(B2=7, "Ship by Air", "Ship by Ground")))

Tôi không biết làm thế nào khác để viết nó với tất cả các thông tin đó.

Câu trả lời:


3

OR cần mỗi phần là biểu thức Boolean của riêng nó:

OR(A2="Canada","Mexico"

Nên là:

OR(A2="Canada",A2="Mexico")

HOẶC LÀ

OR(A2={"Canada","Mexico"})

MONTH(B2

đang thiếu )

Vì thế:

=IF(OR(A2={"Canada","Mexico"}), IF(C2>1000, "Ship by Air", IF(MONTH(B2)=7, "Ship by Air", "Ship by Ground")))

Ngoài ra, bạn đang thiếu FALSE ở IF bên ngoài, có thể là những gì bạn muốn, nhưng tôi có xu hướng thêm nó để công thức của tôi dễ đọc hơn:

=IF(OR(A2={"Canada","Mexico"}), IF(C2>1000, "Ship by Air", IF(MONTH(B2)=7, "Ship by Air", "Ship by Ground")),FALSE)

Nhưng chúng ta có thể kết hợp cả hai bên trong vì đầu ra giống nhau trên đúng:

=IF(OR(A2={"Canada","Mexico"}), IF(OR(C2>1000, MONTH(B2)=7), "Ship by Air", "Ship by Ground"),FALSE)

Chỉnh sửa: điều này sẽ trở lại Ship by Airnếu bất kỳ điều nào sau đây là TRUE:

  • A2 bằng "Canada" hoặc "Mexico"
  • C2> 1000
  • Tháng B2 là tháng 7

:

=IF(OR(A2={"Canada","Mexico"},C2>1000, MONTH(B2)=7), "Ship by Air", "Ship by Ground")

Edit2: điều này sẽ trở lại Ship by Airnếu Tất cả những điều sau đây là TRUE:

  • A2 bằng "Canada" hoặc "Mexico"
  • C2> 1000
  • Tháng B2 là tháng 7

:

=IF(AND(OR(A2={"Canada","Mexico"}),C2>1000, MONTH(B2)=7), "Ship by Air", "Ship by Ground")

2

Bạn đã có một khởi đầu tốt; công thức của bạn là "mã giả" cho những gì bạn muốn thực hiện. Bạn chỉ cần cấu trúc nó cho Excel.

Vấn đề đầu tiên là các yếu tố được sử dụng bởi các hàm cần được đặt trong dấu ngoặc đơn để Excel biết chúng bắt đầu và kết thúc ở đâu. HOẶC đầu tiên của bạn không có dấu ngoặc đơn chặt chẽ; tương tự với hàm MONTH.

Vấn đề thứ hai là OR cần có sự lựa chọn các điều kiện hoàn chỉnh. Excel không xử lý các so sánh với một danh sách, ít nhất là ở định dạng không phải là mảng như bạn đang sử dụng.

Ngoài ra, IF đầu tiên không chứa kết quả cho những gì sẽ hiển thị nếu OR sai, vì vậy bạn có thể muốn thêm điều đó.

Vì vậy, công thức nên như:

=IF(OR(A2="Canada",A2="Mexico"), IF(C2>1000, "Ship by Air", IF(MONTH(B2)=7, "Ship by Air", "Ship by Ground")),"Not Canada or Mexico")

Được rồi, cái đó đã làm việc cho hầu hết các phần, tuy nhiên các đơn đặt hàng từ Hoa Kỳ đang đến là sai thay vì "tàu bằng đất" vì một số lý do.
Anna

@Anna vậy điều bạn đang nói là nếu A2 là canada hoặc Mexico hoặc c2> 1000 hoặc tháng trong B2 là tháng 7, nếu bất kỳ điều nào là đúng thì giao hàng bằng đường hàng không?
Scott Craner

@Anna, yeah, tôi đã phát hiện ra vấn đề không có kết quả sai cho OR, sau đó quên tại sao tôi đưa nó vào câu trả lời và xóa nó. Cần thêm cà phê. :-) Tôi đã thêm nó trở lại. Bạn có thể thay đổi kết quả cuối cùng đó thành bất cứ điều gì bạn cần (thậm chí một IF khác lồng nhau nếu kết quả có thể là một cái gì đó khác ngoài Hoa Kỳ).
fixer1234

@Anna, Scott nêu lên một điểm tốt. Bạn đã có một số quy tắc phức tạp khi giao hàng bằng phương pháp nào. Đặt cược an toàn sẽ là mở rộng câu hỏi với bộ quy tắc hoàn chỉnh cho những gì bạn muốn làm (bằng từ hoặc bảng). Sau đó, chúng tôi có thể xác minh rằng logic Excel đang thực sự thực hiện những gì bạn muốn.
fixer1234

0

Đếm các dấu ngoặc: Bạn có năm dấu ngoặc mở và ba dấu ngoặc đóng. Nhưng số lượng phải phù hợp.

Bạn có thể thấy vấn đề với thụt lề chính xác của biểu thức:

=IF(
    OR(
       A2="Canada","Mexico", 
       IF(
          C2>1000, "Ship by Air", 
          IF(
             MONTH(
                   B2=7, "Ship by Air", "Ship by Ground"
             )
          )
       )
// ---------------- Here your expression ends
    )    // missing
)        // missing

Tôi đã đánh dấu hai dấu ngoặc đóng thiếu. Những biểu thức bạn muốn đóng )phụ thuộc vào logic bạn muốn thực hiện.


Vì vậy, tôi chỉ cần thêm dấu ngoặc đơn đóng? Tôi mới thử điều đó, vì vậy bây giờ có 5 kết thúc và 5 kết thúc, nhưng nó cho tôi cùng một thông báo lỗi.
Anna

Nhìn lướt qua tài liệu Office cho thấy MONTH(...)hàm này có một đối số. Bạn đã cung cấp ba: - / Vì vậy, loại bỏ =7, "Ship by Air", "Ship by Ground"và bạn nên gần gũi hơn với một biểu thức làm việc. Hãy nhớ kiểm tra IFORmệnh đề theo cách này, vì có vẻ như IFmệnh đề thứ hai cũng sai, vì dường như nó cần ba đối số. Xem mệnh đề IF .
zx485
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.