Tạo Function thay thế chuỗi trong một chuỗi!
Tôi có một Function dùng Hàm Replace để thay thế chuỗi
mong GPE giúp tôi rút gọn Function bằng vòng lặp
mong được sự giúp đỡ của GPE và cũng để học hỏi thêm về cách viết vòng lặp
xin cảm ơn!
Sử dụng thêm hàm ConvertTo1DArray range1, range2 dọc ngang đều được
Private Function ConvertTo1DArray(ByVal SourceArray)
Dim aTmp, Item, arr()
Dim n As Long
On Error Resume Next
aTmp = SourceArray
If Not IsArray(aTmp) Then aTmp = Array(aTmp)
For Each Item In aTmp
n = n + 1
ReDim Preserve arr(1 To n)
arr(n) = Item
Next
ConvertTo1DArray = arr
End Function
ConvertTo1DArray
Function ThayThe(ByVal val As String, ByVal range1 As Range, ByVal range2 As Range) As String
Dim I As Long
ThayThe = val
For I = 1 To range1.Count
ThayThe = Replace(ThayThe, range1(I), range2(I))
Next
End Function
Tuy nhiên, bất cứ so sánh chuỗi nào cũng cần phải lưu ý đến CompareMode, bởi ai biết được người dùng muốn so sánh kiểu gì, có phân biệt HOA thường hay không?
Vụ CompareMode các bạn tự sửa lấy nhé
Vì chủ thớt có nói rằng "học hỏi thêm về cách viết vòng lặp" nên tôi cũng khuyến cáo:
Vòng lặp có nghĩa là lặp lại nhiều lần. Và mõi lần lặp có cái thứ thự của nó. Nếu không cẩn thận, không phân tích trước sự độc lập của mỗi lượt chạy, kết quả của lần n2 có thể chồng lên kết quả của lần n1. Hoặc kết quả của lần n2 cần phải có sử hoạt động của lần n1
Ví dụ thay thế chuỗi là ví dụ điển hình của trường hợp "mỗi lượt không hẳn độc lập này"
Chuỗi: "Tôi chỉ thích ăn cơm và không thích ăn cá"
thay thế: "chỉ" -> "không", "không thích" -> "luôn luôn"
Thứ tự thay thế có thể làm cho kết quả khác biệt
Mình từng gặp vụ này vài lần, chẳng hạn ở hàm UniConvert. Mục đích của hàm là biến phương pháp gõ tiếng Việt thành tiếng Việt có dấu thật sự. Ví dụ:
UniConvert("Nguye64n Anh Tua61n", "VNI")
Sẽ cho kết quả là Nguyễn Anh Tuấn
(hàm phục cho vụ việc gõ tiếng Việt trong môi trường VBA)
Cách giải quyết để tránh nhận kết quả sai: Sắp xếp bảng tra sao cho hợp lý nhất để ép code tìm và thay thế cái nào "to nhất" trước rồi dần dần sẽ thay thế đến cái "nhỏ". Ví dụ sẽ thay a61 trước rồi mới thay a6 sau
————————
Tương tự vậy cho bài toán này, cũng là sắp xếp bảng tra sao cho hợp lý!
www.giaiphapexcel.com/diendan/threads/t%E1%BA%A1o-function-thay-th%E1%BA%BF-chu%E1%BB%97i-trong-m%E1%BB%99t-chu%E1%BB%97i.131424/
Khóa học Power PI – Ứng dung trong Nhân sự
TỔNG QUAN KHÓA HỌC: POWER BI CHO NGÀNH NHÂN SỰ Khóa học Power BI cho Nhân sự được thiết kế dành riêng cho các...
Xem khóa học