Xin hướng dẫn công thức if kết hợp OR

Liên hệ QC

phamvandunghp84

Thành viên thường trực
Tham gia
5/3/20
Bài viết
241
Được thích
12
Mình muốn hỏi cách viết công thức trong tình huống sau:
Nếu A1=B1 hoặc A1=A2 thì trả về đáp "đúng" ngược lại thì là "sai"
mình viết như này nhưng không đúng. Mong các bạn sửa giúp. Xin cảm ơn !!

=IF((A1=B1)*OR(A1=A2);"đúng";"sai")
 
=if((a1=b1)+(a1=a2),True,False)

--------
Chiện gì vậy chời?
Nào là giới hạn số từ, giới hạn số ký tự, giờ thêm cái này.

1601003538692.png
 
=if((a1=b1)+(a1=a2),True,False)...
Bạn có biết Logic shortcut không?
Khi làm việc với IF, những công thức trông gọn ghẽ có khi lại kém hiệu quả.

Theo luật shortcut:
Với OR, nếu logic a1=b1 thoả thì sẽ không xét tiếp a1=a2 (đỡ được 1 con toán)
Với con toán cộng, lô gic bắt buộc phải tính cả hai vế, sau đó lại phải ép kiểu nó thành số.

Tôi nhớ có đọc một tài liệu nói rằng tuy luật này không áp dụng cho VBA nhưng có áp dụng cho các hàm bảng tính.
Nếu bạn làm việc nhiều với Google Sheets thì cũng nên biết rằng JavaScript theo luật này, và khả năng Sheets theo luật rất cao.

Muốn thử cũng không khó. Bạn chỉ cần viết một vài hàm UDF đơn giản MsgBox lên báo cho biết hàm có được gọi hay không. Lên bảng tính tha hồ thử các trường họp lô gic IF AND OR.
 
Bạn có biết Logic shortcut không?
Khi làm việc với IF, những công thức trông gọn ghẽ có khi lại kém hiệu quả.

Theo luật shortcut:
Với OR, nếu logic a1=b1 thoả thì sẽ không xét tiếp a1=a2 (đỡ được 1 con toán)
Với con toán cộng, lô gic bắt buộc phải tính cả hai vế, sau đó lại phải ép kiểu nó thành số.

Tôi nhớ có đọc một tài liệu nói rằng tuy luật này không áp dụng cho VBA nhưng có áp dụng cho các hàm bảng tính.
Nếu bạn làm việc nhiều với Google Sheets thì cũng nên biết rằng JavaScript theo luật này, và khả năng Sheets theo luật rất cao.

Muốn thử cũng không khó. Bạn chỉ cần viết một vài hàm UDF đơn giản MsgBox lên báo cho biết hàm có được gọi hay không. Lên bảng tính tha hồ thử các trường họp lô gic IF AND OR.
Bạn ơi mình thấy viết theo phép + thì kết quả đúng ý mình mong muốn. nhưng chạy hơi chậm. vậy có cách nào khác nhanh hơn sao bạn?
Tiện đây mình hỏi chút. mình so sánh hai chuỗi mà nhìn giống nhau nhưng lại sai.
bạn xem giúp mình chút
 

File đính kèm

  • Ký tự lạ.xlsx
    8.6 KB · Đọc: 7
=IF((A1=B1)*OR(A1=A2);"đúng";"sai")
=if((a1=b1)+(a1=a2),True,False)
Mình mới thấy 2 kiểu viết như này luôn á.
Nếu là mình thì mình viết theo kiểu bình thường mà mình biết thôi:
Mã:
=IF(OR(A1=B1;A1=A2);"đúng";"sai")
@phamvandunghp84 : bạn nhập kiểu của mình xem coi kết quả có ra đúng hôn?
 
Bạn ơi mình thấy viết theo phép + thì kết quả đúng ý mình mong muốn. nhưng chạy hơi chậm. vậy có cách nào khác nhanh hơn sao bạn?
...
"chạy hơi chậm" là do bảng tính của bạn mẫu mã tô đậm tô nhạt, tô màu tô miếc, merge cells tùm lum.
Chứ công thức thì chỉ khác nhau vài phần tỷ giây.

Cái vụ "lô gic shorrtcut" tôi nói ở trên là giữa dân thiết kế bảng tính với nhau.

1601006611421.png
Mình mới thấy 2 kiểu viết như này luôn á. ...
Bạn có biết cái kiểu 1 ở trên nó tính ra cái gì hôn?
Kiểu 2 là do người viết phỏng theo yêu cầu của thớt.
 
Mình mới thấy 2 kiểu viết như này luôn á.
Nếu là mình thì mình viết theo kiểu bình thường mà mình biết thôi:
Mã:
=IF(OR(A1=B1;A1=A2);"đúng";"sai")
@phamvandunghp84 : bạn nhập kiểu của mình xem coi kết quả có ra đúng hôn?
Cảm ơn, thật tình mình tự học mò nên k hiểu sâu lắm.
cho mình hỏi thêm chút mình so sánh hai chuỗi mà hình như gặp ký tự lạ nên kết quả so sánh cứ báo sai. bạn xem giúp mình cần phải làm như nào để loại bỏ ký tự ẩn nào ?
TRUE
TRUE​
 
"chạy hơi chậm" là do bảng tính của bạn mẫu mã tô đậm tô nhạt, tô màu tô miếc, merge cells tùm lum.
Chứ công thức thì chỉ khác nhau vài phần tỷ giây.
Không có gì anh ơi. File ở bài #5 chưa tới 10KB mà anh.

Chắc họ có siêu thiết bị đo đếm thời gian.
 
Dạ không. Con mới thấy lần đầu.
Con thử thì không hiểu luôn: công thức công nhập ở ô G3
View attachment 246155

Bạn ơi không biết lỗi do đâu mà của mình lại cứ bị lỗi như này. Phải nhấn vào ô A2 rồi nhấn Entrer thì nói mới so sánh ra là "đúng" mình thử tìm ký tự nào không hiển thị mà không biết cách tìm mã code của ký tự ẩn
1601007371132.png
 
Bạn ơi không biết lỗi do đâu mà của mình lại cứ bị lỗi như này. Phải nhấn vào ô A2 rồi nhấn Entrer thì nói mới so sánh ra là "đúng" mình thử tìm ký tự nào không hiển thị mà không biết cách tìm mã code của ký tự ẩn
View attachment 246157
Ý, mình làm như bạn nói nó cũng ra đúng. Lạ thiệt luôn. Mình mò cách kiểm tra ký tự lạ nãy giờ mà chưa ra, thấy toàn đúng code không hà, lạ thiệt.
1601007958784.png
 
Có gì đâu mà lạ.
Với bảng tính thì đừng có định dạng tùm lum, kỹ sư lập trình đã tính toán kỹ rồi. Chuỗi mặc định chạy về bên trái, còn số chạy về phải, logic (TRUE, FALSE) ở giữa.
Để khi nhìn vào biết ngay số là số, chữ là chữ. Nếu tùm lum thì số mà không phải số.

File ở bài #5, logic không phải là logic mà là chuỗi (A2) nên kết quả công thức là chuẩn chỉ 1000/1000 rồi. Không có gì lạ và sai cả.

Giờ chọn A2, nhấn F2, rồi Enter xem ra cái gì.

@Chủ thớt: A3 là logical, không phải chuỗi, mà đòi tìm ký lạ với quen.

1601008763684.png
 
Có gì đâu mà lạ.
Với bảng tính thì đừng có định dạng tùm lum, kỹ sư lập trình đã tính toán kỹ rồi. Chuỗi mặc định chạy về bên trái, còn số chạy về phải, logic (TRUE, FALSE) ở giữa.
Để khi nhìn vào biết ngay số là số, chữ là chữ. Nếu tùm lum thì số mà không phải số.

File ở bài #5, logic không phải là logic mà là chuỗi (A2) nên kết quả công thức là chuẩn chỉ 1000/1000 rồi. Không có gì lạ và sai cả.

Giờ chọn A2, nhấn F2, rồi Enter xem ra cái gì.

@Chủ thớt: A3 là logical, không phải chuỗi, mà đòi tìm ký lạ với quen.

View attachment 246159
Mình chưa hiểu ý bạn ( do mình không hiểu sâu ). Vậy trong trường hợp này mình phải làm sao để kết quả so sánh trả về là đúng?
 
Dạ không. Con mới thấy lần đầu.
Con thử thì không hiểu luôn: công thức công nhập ở ô G3
...
Tính biểu thức =IF((A1=B1)*OR(A1=A2);"đúng";"sai")
OR(A1=A2) ---> bên trong OR chỉ có 1 tham số (biểu thức A1=A2). Tức là coi như OR chỉ là đồ trưng bày, kết quả của OR(A1=A2) in hệt như kết quả của (A1=A2)
Như vậy, ta còn lại (A1=B1)*(A1=A2)
Rất tiếc, theo luật lô gic thì phép * tương đương với AND và phép + tương đương với OR
A + B : chỉ cần A hoặc B = 1 thì biểu thức trả về True (>0) ---> OR
A * B : chỉ cần A hoặc B = 0 thì biểu thức trả về False (=0) ---> AND

Tức là theo công thức của thớt ở bài #1 thì đó là hàm AND. Bài #2 chỉnh nó lại thành hàm OR.

Chú: nếu ở cấp Đại học bạn có học môn Toán Lô gic (Boolean Algebra) thì đã biết qua luật (*=And; +=Or) này rồi.
 
Lần chỉnh sửa cuối:
Cái này Toán đại số ở bậc phổ thông học rồi anh ơi.

Em nhớ không nhầm là phần (hệ) phương trình, bất phương trình.
Tôi học ở năm thứ nhất, ĐHBK tpHCM (Lúc tôi học, nó tên là Kỹ Sư Phú Thọ)
Theo như kiến thức các bạn ở đây thì tôi không tin họ đã học qua lý thuyết không gian vectơ gồm một tập hợp hai phần tử T/F, và các toán tử nội And, Or, Not, Xor,...
Chả nhẽ cái con số "học một hai tiết đầu rồi cuối khoá đi thi" nhiều đến thế?
 
Tôi học ở năm thứ nhất, ĐHBK tpHCM (Lúc tôi học, nó tên là Kỹ Sư Phú Thọ)
Theo như kiến thức các bạn ở đây thì tôi không tin họ đã học qua lý thuyết không gian vectơ gồm một tập hợp hai phần tử T/F, và các toán tử nội And, Or, Not, Xor,...
Chả nhẽ cái con số "học một hai tiết đầu rồi cuối khoá đi thi" nhiều đến thế?
Lớp 10 học tập hợp và logic song song, cứ nhầm "giao" "hợp" với "tuyển" "hợp"
Năm đầu đại học, học toán tử, phải chứng minh 1+1=2, các toán tử And, Or, Not, Xor,... không được học
 
Web KT
Back
Top Bottom