- Tham gia
- 3/7/07
- Bài viết
- 4,946
- Được thích
- 23,208
- Nghề nghiệp
- Dạy đàn piano
Không phải như thế! Khi chỉ cần lấy 1 ký tự, thì RIGHT() và LEFT() dùng như thế là chính xác, không cần con số 1. Không tin, bạn có thể thử.Tôi xem qua thì thấy bạn sai tại các hàm RIGHT(B4), LEFT(B4). Bạn phải thêm đối số để chỉ định số ký tự cần lấy ví dụ =RIGHT(B4;1), =LEFT(B4;1)
Vấn đề ở đây là: Con số 1 và 2 ở cột B là dữ liệu kiểu Text, trong khi trong hàm IF ở cột G, cái RIGHT(B4)=1 là yêu cầu lấy dữ liệu kiểu số, cho nên luôn luôn RIGHT(B4)=1 trả về kết quả là FALSE, vì Excel sẽ cho rằng "chữ 1" ở cột B không phải là "con số 1", và IF sẽ luôn luôn lấy giá trị cho FALSE, chứ không phải là hàm chỉ đúng khi con số cuối cùng ở cột B là 2 đâu!
Cách sửa: Có hai cách, nhưng chung quy lại, là quy về một loại dữ liệu, đã Text thì Text hết, còn Số thì Số hết, Excel mới hiểu được.
- Nếu thích quy về kiểu Text, thì bỏ con số 1 trong hàm IF vào trong cái nháy nháy, nó sẽ trở thành Text liền. Ví dụ:
=IF(RIGHT(B4)=1,...
Sửa thành:
=IF(RIGHT(B4)="1",...
- Nếu thích quy về kiểu số, thì đem cái kết quả của RIGHT() nhân thêm với 1, hoặc cộng/trừ thêm với 0, hoặc lũy thừa với 1, v.v... nói chung là kết hợp thêm một phép tính toán học, nhưng không làm thay đổi giá trị của biểu thức. Ví dụ:
=IF(RIGHT(B4)=1,...Sửa thành:
=IF(RIGHT(B4)*1=1,...hoặc:
=IF(RIGHT(B4)+0=1,...
Thích dùng kiểu nào, thì dùng, bạn nhé.
Góp ý thêm tí, công thức của bạn dài quá, có thể gộp chung cái cột dò của VLOOKUP lại được cơ mà. Ví dụ như quy đối tượng dò về kiểu text hết nha:
Công thức của bạn:
=IF(RIGHT(B4)=1, F4 * VLOOKUP(LEFT(B4), $E$17:$F$20, 2, 0), F4 * VLOOKUP(LEFT(B4), $E$17:$G$20, 3, 0))
Có phải ý bạn là nếu như RIGHT(B4)=1 thì VLOOKUP lấy cột 2, còn không thì lấy cột 3, phải không, có thể sửa lại như vầy:=F4 * VLOOKUP(LEFT(B4), $E$17:$F$20, IF(RIGHT(B4)="1", 2, 3), 0)
Lần chỉnh sửa cuối: