Hôm qua, tôi nhận được một email từ một trong những độc giả của tôi.
Cô muốn biết cách áp dụng định dạng phông chữ đậm cho một phần cụ thể của một chuỗi trong một ô. Ví dụ: áp dụng định dạng in đậm cho chỉ từ ‘Hello’ từ ‘Hello World’.
Và cô muốn làm điều này cho hàng trăm ô cùng một lúc.
Vì không có chức năng sẵn có trong Excel có thể làm điều đó, tôi đã tạo một macro đơn giản sử dụng hàm Excel VBA InStr (bạn sẽ thấy cách thực hiện điều này trong Ví dụ 4 trong hướng dẫn này).
Nhưng trước tiên, hãy xem hàm Excel VBA InStr hoạt động như thế nào!
Chức năng InStr của Excel VBA
Trong hướng dẫn này, tôi sẽ giải thích cách sử dụng hàm InStr trong Excel VBA và xem một số ví dụ thực tế có thể sử dụng nó ở đâu.
Chức năng InStr của Excel VBA – Giới thiệu
Hàm InStr tìm vị trí của một chuỗi con được chỉ định trong chuỗi và trả về vị trí đầu tiên của sự xuất hiện của nó.
Ví dụ, nếu bạn muốn tìm vị trí của ‘x’ trong ‘Excel’, sử dụng hàm InStr của Excel VBA sẽ trả về 2.
Cú pháp của hàm InStr
InStr ( [Bắt đầu] , String1 , String2 , [So sánh] )
- [Bắt đầu] – (đối số tùy chọn) đây là một giá trị số nguyên cho biết hàm InStr vị trí bắt đầu mà từ đó nó sẽ bắt đầu tìm kiếm. Ví dụ, nếu tôi muốn tìm kiếm bắt đầu từ đầu, tôi sẽ nhập giá trị là 1. Nếu tôi muốn nó bắt đầu bằng ký tự thứ ba trở đi, tôi sẽ sử dụng 3. Nếu bỏ qua, giá trị mặc định của 1 được lấy.
- String1 – Đây là chuỗi chính (hoặc chuỗi gốc) mà bạn muốn tìm kiếm. Ví dụ, nếu bạn đang tìm vị trí của x trong Excel, Chuỗi 1 sẽ là “Excel”.
- String2 – Đây là chuỗi con mà bạn đang tìm kiếm. Ví dụ, nếu bạn đang tìm vị trí của x trong Excel, String2 sẽ là x.
- [So sánh] – (đối số tùy chọn) Bạn có thể chỉ định một trong ba giá trị sau cho đối số [so sánh]:
- vbBinaryCompare – Điều này sẽ làm một nhân vật bằng cách so sánh nhân vật. Ví dụ: nếu bạn đang tìm ‘x’ trong ‘Excel’, nó sẽ trả về 2, nhưng nếu bạn đang tìm ‘X’ trong ‘Excel’, nó sẽ trả về 0 vì X là chữ hoa. Bạn cũng có thể sử dụng 0 thay vì vbBinaryCompare. Nếu đối số [So sánh] bị bỏ qua, đây là đối số được lấy làm mặc định.
- vbTextCompare – Điều này sẽ làm một so sánh văn bản. Ví dụ, nếu bạn tìm ‘x’ hoặc ‘X’ trong Excel, nó sẽ trả về 2 trong cả hai trường hợp. Đối số này bỏ qua trường hợp chữ cái. Bạn cũng có thể sử dụng 1 thay vì vbTextCompare.
- vbDatabaseCompare – Chỉ được sử dụng cho Microsoft Access. Nó sử dụng thông tin trong cơ sở dữ liệu để thực hiện so sánh. Bạn cũng có thể sử dụng 2 thay vì vbDatabaseCompare.
Ghi chú bổ sung về chức năng InStr của Excel VBA:
- InStr là một hàm VBA và không phải là một hàm bảng tính. Điều này có nghĩa là bạn không thể sử dụng nó trong bảng tính.
- Nếu String2 (là chuỗi con có vị trí bạn đang tìm kiếm) trống, hàm sẽ trả về giá trị của đối số [Bắt đầu].
- Nếu hàm InStr không thể tìm thấy chuỗi con trong chuỗi chính, nó sẽ trả về 0.
Bây giờ chúng ta hãy xem xét một số ví dụ về cách sử dụng chức năng Excel VBA InStr
Ví dụ 1 – Tìm vị trí ngay từ đầu
Trong ví dụ này, tôi sẽ sử dụng hàm InStr để tìm vị trí của ‘V’ trong ‘Excel VBA’ ngay từ đầu.
Mã cho điều này sẽ là:
Sub FindFromBeginning()
Dim Position As Integer
Position = InStr(1, "Excel VBA", "V", vbBinaryCompare)
MsgBox Position
End Sub
Khi bạn chạy mã này, nó sẽ hiển thị một hộp thông điệp với giá trị 7, đó là vị trí của ‘V’ trong chuỗi ‘Excel VBA’.
Ví dụ 2 – Tìm vị trí từ đầu từ thứ hai
Giả sử, tôi muốn tìm vị trí của ‘the’ trong câu – ‘The quick brown fox jumps over the lazy dog’
Tuy nhiên, tôi muốn tìm kiếm để bắt đầu với từ thứ hai trở đi.
Trong trường hợp này, chúng ta cần thay đổi đối số [Start] để đảm bảo nó xác định vị trí từ nơi từ thứ hai bắt đầu.
Đây là mã sẽ làm điều này:
Sub FindFromSecondWord()
Dim Position As Integer
Position = InStr(4, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)
MsgBox Position
End Sub
Mã này sẽ hiển thị hộp thông báo với giá trị 32 vì chúng tôi đã xác định vị trí bắt đầu là 4. Do đó, nó bỏ qua ‘the’ đầu tiên và tìm ‘số’ thứ hai trong câu.
Nếu bạn muốn làm cho nó năng động hơn, bạn có thể tăng cường mã để nó tự động bỏ qua từ đầu tiên.
Đây là mã nâng cao sẽ làm điều này:
Sub FindFromSecondWord()
Dim StartingPosition As Integer
Dim Position As Integer
StartingPosition = InStr(1, "The quick brown fox jumps over the lazy dog", " ", vbBinaryCompare)
Position = InStr(StartingPosition, "The quick brown fox jumps over the lazy dog", "the", vbBinaryCompare)
MsgBox Position
End Sub
Mã này đầu tiên tìm vị trí của một ký tự khoảng trắng và lưu nó trong biến StartingPosition.
Sau đó, nó sử dụng biến này làm vị trí bắt đầu để tìm từ ‘the’.
Do đó nó trả về 32 (đó là vị trí bắt đầu của ‘the’ sau từ đầu tiên).
Ví dụ 3 – Tìm vị trí của @ trong địa chỉ email
Bạn có thể dễ dàng tạo ra một chức năng tùy chỉnh để tìm vị trí của @ trong một địa chỉ email bằng cách sử dụng chức năng Excel VBA InStr.
Đây là mã để tạo hàm tùy chỉnh:
Function FindPosition(Ref As Range) As Integer
Dim Position As Integer
Position = InStr(1, Ref, "@")
FindPosition = Position
End Function
Bây giờ bạn có thể sử dụng chức năng tùy chỉnh này như bất kỳ chức năng bảng tính nào khác. Nó sẽ lấy tham chiếu ô làm đầu vào và cung cấp cho bạn vị trí của @ trong đó.
Tương tự, bạn có thể tạo một hàm tùy chỉnh để tìm vị trí của bất kỳ chuỗi con nào trong chuỗi chính.
Ví dụ 4 – Tô sáng một phần của chuỗi trong các ô
Đây là truy vấn được hỏi vào tháng 6 (người đọc của tôi, người cũng truyền cảm hứng cho tôi viết bài hướng dẫn này).
Đây là dữ liệu mẫu ở định dạng tháng 6 đã gửi cho tôi:
Truy vấn của cô là làm cho các con số nằm ngoài dấu ngoặc đơn.
Đây là mã tôi đã tạo để thực hiện điều này:
Sub Bold()
Dim rCell As Range
Dim Char As Integer
For Each rCell In Selection
CharCount = Len(rCell)
Char = InStr(1, rCell, "(")
rCell.Characters(1, Char - 1).Font.Bold = True
Next rCell
End Sub
Đoạn mã trên sử dụng vòng lặp For Each để đi qua từng ô trong vùng chọn. Nó xác định vị trí của ký tự ngoặc mở bằng cách sử dụng hàm InStr . Sau đó nó thay đổi phông chữ của văn bản trước khung.
Để sử dụng mã này, bạn cần sao chép và dán vào một mô-đun trong trình soạn thảo VB.
Một khi bạn đã sao chép dán mã, chọn các ô mà bạn muốn làm định dạng này và chạy macro (như được hiển thị bên dưới).
Xem thêm cách nạp code cho Macro ở đây:
https://quantriexcel.blogspot.com/2018/09/lam-sao-e-nap-code-macros-va-tat-bao.html
https://quantriexcel.blogspot.com/2018/09/lam-sao-e-nap-code-macros-va-tat-bao.html
Học Excel online qua Video với Quản Trị Excel
Xem thêm các video khác tại đây:
? Web : https://quantriexcel.blogspot.com
? Kênh Youtube ( bạn nhớ đăng kí thành viên để tự cập nhật ngay các Video mới nhất, hay nhất mình gửi nhé ) https://www.youtube.com/channel/UCX9o2XoD4fjZORq1gd9cluA?sub_confirmation=1
Xem thêm các video khác tại đây:
? Web : https://quantriexcel.blogspot.com
? Kênh Youtube ( bạn nhớ đăng kí thành viên để tự cập nhật ngay các Video mới nhất, hay nhất mình gửi nhé ) https://www.youtube.com/channel/UCX9o2XoD4fjZORq1gd9cluA?sub_confirmation=1
DienDan.Edu.Vn Cám ơn bạn đã quan tâm và rất vui vì bài viết đã đem lại thông tin hữu ích cho bạn.DienDan.Edu.Vn! là một website với tiêu chí chia sẻ thông tin,... Bạn có thể nhận xét, bổ sung hay yêu cầu hướng dẫn liên quan đến bài viết. Vậy nên đề nghị các bạn cũng không quảng cáo trong comment này ngoại trừ trong chính phần tên của bạn.Cám ơn.