LEFT(text; num_chars): cắt num_chars ký tự bên trái chuỗi text. Ví dụ: LEFT("abcde";3) thì kết quả là abc
RIGHT(text; num_chars): cắt num_chars ký tự bên phải chuỗi text. Ví dụ: RIGHT("abcde";3) thì kết quả là cde
MID(text; start_num; num_chars): cắt num_chars ký tự bắt đầu từ ký tự thứ start_num trong chuỗi text. Ví dụ: MID("abcde";2;3) thì kết quả là bcd
Giả sử ta có chuỗi ký tự sau
Muốn lấy số 123 trong đoạn trên ta làm cách nào?
Tôi viết thêm hàm sau để có thể cắt chuỗi cho chủ động hơn
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Function catchuoi(str, sttkytubatdaucat, catdenkhigapkytunao) | |
timthay = False | |
For i = sttkytubatdaucat To Len(str) | |
ch = Mid(str, i, 1) | |
If ch = catdenkhigapkytunao Then | |
timthay = True | |
Exit For | |
End If | |
Next | |
If catdenkhigapkytunao = "" Then | |
timthay = True 'cut to the end of str | |
End If | |
If timthay Then | |
catchuoi = Mid(str, sttkytubatdaucat, i - sttkytubatdaucat) | |
Else | |
catchuoi = CVErr(xlErrNA) 'return N/A in excel | |
End If | |
End Function |
Sử dụng như sau: catchuoi(str, sttkytubatdaucat, catdenkhigapkytunao), tham số:
- str: chuỗi ký tự gốc
- sttkytubatdaucat: bắt đầu cắt từ vị trí này
- catdenkhigapkytunao: cắt chuỗi cho đến khi gặp ký tự này. Nếu không tìm thấy ký tự này trong chuỗi thì kết quả sẽ trả về N/A, nếu đặt là "" thì sẽ cắt đến cuối chuỗi.
Áp dụng cho trường hợp trên ta phân tích như sau: số 123 cần lấy đứng sau ký tự ":" thứ 2 trong chuỗi, ta sẽ cắt từ vị trí sau dấu ":" thứ 2 này đến khi gặp dấu cách sau 123. Ta có công thức như sau
Hàm timsttkytu bạn có thể xem ở bài trước tôi có giới thiệu http://lehoangdieu.blogspot.com/2016/04/tim-vi-tri-cua-ky-tu-trong-excel.html.
Vì timsttkytu trả về số thứ tự của dấu ":" nên ta phải cộng 2 vào.