Tạo Function thay thế chuỗi trong một chuỗi!

Chia sẻ bởi:hands
★★★★★
Quảng cáo

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ự
Khóa học SprinGO phù hợp

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
★★★★★ 5 ★ 1 👤 0 ▥ 0
Quảng cáo

Bạn nên đọc

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm