Giúp đỡ về hàm IF nhiều điều kiện với And hoặc Or

Liên hệ QC

protq2

Thành viên mới
Tham gia
6/3/17
Bài viết
26
Được thích
0
Mình có hàm sau


=IF(F6<>"";IF(AND(LEFT(F6;1)<>"0";LEFT(F6;2)<>",";LEFT(F6;2)<>"-");RIGHT(F6;LEN(F6)-FIND("-";F6;1));F6);"")

Với F6 = dòng text,
F6<>"" : Với điều kiện F6 khác rỗng

Mục đích mình muốn là:

với 3 điều kiện con: Lấy đoạn text sau dấu "-" với điều kiện
LEFT(F6;1)<>"0": ký tự đầu tiên khác 0:
LEFT(F6;2)<>"," : Ký tự thứ 2 khác ,
LEFT(F6;2)<>"-" : Ký tự thứ 2 khác -

RIGHT(F6;LEN(F6)-FIND("-";F6;1));F6): [Nếu thỏa mãn sẽ lấy đoạn sau dấu -Nếu ko thỏa mãn sẽ trở về nguyên giá trị của F6]

cuối cùng: Nếu ô rỗng sẽ trở về rỗng

Như dưới đây

023-AAA-BBB -> 023-AAA-BBB
0,7-CCC-DDD -> CCC-DDD
1-1/2-EEE-FFF -> EEE-FFF

Mình đã thử code trên nhưng vẫn còn 0,7-CCC-DDD liệu có phải excel ko nhận dấu , hay tại mình dùng And ko được?
Trường hợp dùng OR thì lại mất 023-AAA-BBB -> AAA-BBB.

Cảm ơn các bạn
 
Mình có hàm sau


=IF(F6<>"";IF(AND(LEFT(F6;1)<>"0";LEFT(F6;2)<>",";LEFT(F6;2)<>"-");RIGHT(F6;LEN(F6)-FIND("-";F6;1));F6);"")

Với F6 = dòng text,
F6<>"" : Với điều kiện F6 khác rỗng

Mục đích mình muốn là:

với 3 điều kiện con: Lấy đoạn text sau dấu "-" với điều kiện
LEFT(F6;1)<>"0": ký tự đầu tiên khác 0:
LEFT(F6;2)<>"," : Ký tự thứ 2 khác ,
LEFT(F6;2)<>"-" : Ký tự thứ 2 khác -


RIGHT(F6;LEN(F6)-FIND("-";F6;1));F6): [Nếu thỏa mãn sẽ lấy đoạn sau dấu -Nếu ko thỏa mãn sẽ trở về nguyên giá trị của F6]

cuối cùng: Nếu ô rỗng sẽ trở về rỗng

Như dưới đây

023-AAA-BBB -> 023-AAA-BBB
0,7-CCC-DDD -> CCC-DDD
1-1/2-EEE-FFF -> EEE-FFF

Mình đã thử code trên nhưng vẫn còn 0,7-CCC-DDD liệu có phải excel ko nhận dấu , hay tại mình dùng And ko được?
Trường hợp dùng OR thì lại mất 023-AAA-BBB -> AAA-BBB.

Cảm ơn các bạn
Chỗ màu đỏ trật lất. Hình như bạn không biết dùng hàm LEFT thì phải?
LEFT(F6;2) trả về kết quả là 2 ký tự nên phép so sánh LEFT(F6;2) <> "," sẽ luôn cho kết quả = FALSE (chuỗi 2 ký tự so sánh với chuỗi 1 ký tự thì không trời nào cho kết quả TRUE được)
Muốn ký tự thứ 2 thì phải dùng hàm MID
 
Chỗ màu đỏ trật lất. Hình như bạn không biết dùng hàm LEFT thì phải?
LEFT(F6;2) trả về kết quả là 2 ký tự nên phép so sánh LEFT(F6;2) <> "," sẽ luôn cho kết quả = FALSE (chuỗi 2 ký tự so sánh với chuỗi 1 ký tự thì không trời nào cho kết quả TRUE được)
Muốn ký tự thứ 2 thì phải dùng hàm MID


Thực sự là mình ko có nhiều kiến thức về excel, bạn có thể sửa giúp đc ko?
 
Thực sự là mình ko có nhiều kiến thức về excel, bạn có thể sửa giúp đc ko?
Bạn thử công thức sau:

A1 chứa chuỗi bạn muốn cắt
Mã:
B1=IF(OR(MID(A1,2,1)={"-";","}),REPLACE(A1,1,FIND("-",IF(MID(A1,2,1)="-",SUBSTITUTE(A1,"-","",1),A1))+(MID(A1,2,1)="-"),""),A1)

Chúc bạn ngày vui.
 

File đính kèm

  • GPE_CatKytu.xlsx
    11.3 KB · Đọc: 6
Lần chỉnh sửa cuối:
Cảm ơn bạn rất nhiều, hàm hoạt động rất tốt, nhưng mình có 1 thắc mắc. Nếu ô là rỗng thì hàm sẽ về số 0.
Trong khi mình muốn đổi về là nếu ô Rỗng sẽ là Rỗng thì sửa ntn bạn? mình cảm ơn!
Mình đã lồng thêm hàm IF ở ngoài nếu text khác rỗng thì giá trị như hàm kia, nếu sai thì về rỗng.

Cảm ơn bạn
 
Lần chỉnh sửa cuối:
Mình có hàm sau


=IF(F6<>"";IF(AND(LEFT(F6;1)<>"0";LEFT(F6;2)<>",";LEFT(F6;2)<>"-");RIGHT(F6;LEN(F6)-FIND("-";F6;1));F6);"")

Với F6 = dòng text,
F6<>"" : Với điều kiện F6 khác rỗng

Mục đích mình muốn là:

với 3 điều kiện con: Lấy đoạn text sau dấu "-" với điều kiện
LEFT(F6;1)<>"0": ký tự đầu tiên khác 0:
LEFT(F6;2)<>"," : Ký tự thứ 2 khác ,
LEFT(F6;2)<>"-" : Ký tự thứ 2 khác -

RIGHT(F6;LEN(F6)-FIND("-";F6;1));F6): [Nếu thỏa mãn sẽ lấy đoạn sau dấu -Nếu ko thỏa mãn sẽ trở về nguyên giá trị của F6]

cuối cùng: Nếu ô rỗng sẽ trở về rỗng

Như dưới đây

023-AAA-BBB -> 023-AAA-BBB
0,7-CCC-DDD -> CCC-DDD
1-1/2-EEE-FFF -> EEE-FFF

Mình đã thử code trên nhưng vẫn còn 0,7-CCC-DDD liệu có phải excel ko nhận dấu , hay tại mình dùng And ko được?
Trường hợp dùng OR thì lại mất 023-AAA-BBB -> AAA-BBB.

Cảm ơn các bạn
Điều kiện của bạn có bị ngược không ta :
LEFT(F6;1)<>"0": ký tự đầu tiên khác 0:
LEFT(F6;2)<>"," : Ký tự thứ 2 khác ,
LEFT(F6;2)<>"-" : Ký tự thứ 2 khác

Cả 3 trường hợp này đều không thỏa hết tức là nó sẽ không cắt mà trả về y cũ!!!
Thôi làm theo kết quả bạn đưa vậy:
Cột A là các chuỗi cần cắt, bạn dùng CT này ở B1:
Mã:
B1=IF(AND(MID(A1,{1,2,2},1)<>{"0",",","-"}),A1,MID(A1,MIN(IFERROR(FIND(CHAR(ROW($65:$90)),A1),"")),1000))
Ctrl+Shift+Enter rồi fill xuống!!!
 

File đính kèm

  • GPE_CatKytu.xlsx
    11.3 KB · Đọc: 2
Cảm ơn bạn rất nhiều, hàm hoạt động rất tốt, nhưng mình có 1 thắc mắc. Nếu ô là rỗng thì hàm sẽ về số 0.
Trong khi mình muốn đổi về là nếu ô Rỗng sẽ là Rỗng thì sửa ntn bạn? mình cảm ơn!
Mình đã lồng thêm hàm IF ở ngoài nếu text khác rỗng thì giá trị như hàm kia, nếu sai thì về rỗng.

Cảm ơn bạn
Bạn thêm đoạn này vào công thức :
(Công thức)&""
 
Cảm ơn bạn rất nhiều, hàm hoạt động rất tốt, nhưng mình có 1 thắc mắc. Nếu ô là rỗng thì hàm sẽ về số 0.
Trong khi mình muốn đổi về là nếu ô Rỗng sẽ là Rỗng thì sửa ntn bạn? mình cảm ơn!
Mình đã lồng thêm hàm IF ở ngoài nếu text khác rỗng thì giá trị như hàm kia, nếu sai thì về rỗng.

Cảm ơn bạn
Bạn làm đúng rồi đó.
=IF(A1<>"",IF(OR(MID(A1,2,1)={"-";","}),REPLACE(A1,1,FIND("-",IF(MID(A1,2,1)="-",SUBSTITUTE(A1,"-","",1),A1))+(MID(A1,2,1)="-"),""),A1),"")

Chúc bạn ngày vui.
 
Web KT
Back
Top Bottom