Dùng hàm gì để thay thế dữ liệu chuổi theo bảng dò (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

minhtuan55

Thành viên bị đình chỉ hoạt động
Thành viên bị đình chỉ hoạt động
Tham gia
23/3/16
Bài viết
705
Được thích
52
Chào cả nhà GPE ! Mình dùng hàm SUBSTITUTE() để thay thế 1 ký tự nào đó = 1 ký tự khác thì ok. Nhưng trường hợp thay thế theo giá trị trong bảng dò thì phải làm sao. Các bạn giúp mình công thức hoặc Code cũng được. Xin chân thành cảm ơn

upload_2017-4-26_10-25-35.png
 

File đính kèm

{Ctrl + H} 6 lần. Chưa đầy 1 phút.
 
Upvote 0
{Ctrl + H} 6 lần. Chưa đầy 1 phút.

Dạ Em cảm ơn anh. Cái Vụ Ctrl + H em cũng biết. Nhưng khổ nỗi các Bảng dò của em ở trên là e ví dụ nên mới có 6 dòng. chứ thực tế gần 100 dòng anh ak. Với lại giá trị bảng đò em thay đổi thường xuyên, nên em muốn dùng code hay công thức để cho kết quả cập nhật luôn
 
Upvote 0
Chào cả nhà GPE ! Mình dùng hàm SUBSTITUTE() để thay thế 1 ký tự nào đó = 1 ký tự khác thì ok. Nhưng trường hợp thay thế theo giá trị trong bảng dò thì phải làm sao. Các bạn giúp mình công thức hoặc Code cũng được. Xin chân thành cảm ơn

View attachment 174941
Thử với:
PHP:
Sub abc()
    Dim Tim, Thay, i As Long
    Tim = Array("tp", "tg", "hg", "la", "dn", "hn")
    Thay = Array("a1", "a2", "a3", "a4", "a5", "a6")
    For i = LBound(Tim) To UBound(Tim)
        Sheets(1).Columns(2).Replace Tim(i), Thay(i)
    Next i
End Sub
 
Upvote 0
Dạ Em cảm ơn anh. Cái Vụ Ctrl + H em cũng biết. Nhưng khổ nỗi các Bảng dò của em ở trên là e ví dụ nên mới có 6 dòng. chứ thực tế gần 100 dòng anh ak. Với lại giá trị bảng đò em thay đổi thường xuyên, nên em muốn dùng code hay công thức để cho kết quả cập nhật luôn
Chẳng tin...
 
Upvote 0
Cho em góp vui 1 hàm:
Mã:
Function ThayKyTu(ma As String, Rng As Range, n As Long)
    Dim my_arr, sArr, d As Object, v  As Variant
    Dim j As Long, I As Long
On Error Resume Next
sArr = Rng.Value
my_arr = Split(ma, ".")
For I = LBound(my_arr) To UBound(my_arr)
    For j = 1 To UBound(sArr)
        If sArr(j, 1) = my_arr(I) Then
            If I = 0 Then
                ThayKyTu = Application.WorksheetFunction.Substitute(ma, my_arr(I), sArr(j, n))
            Else
                ThayKyTu = Application.WorksheetFunction.Substitute(ThayKyTu, my_arr(I), sArr(j, n))
            End If
        End If
    Next j
Next I
End Function
Công thức C3:
Mã:
=ThayKyTu(B3;$E$3:$F$8;2)
 
Upvote 0
Thử với:
PHP:
Sub abc()
    Dim Tim, Thay, i As Long
    Tim = Array("tp", "tg", "hg", "la", "dn", "hn")
    Thay = Array("a1", "a2", "a3", "a4", "a5", "a6")
    For i = LBound(Tim) To UBound(Tim)
        Sheets(1).Columns(2).Replace Tim(i), Thay(i)
    Next i
End Sub

dạ em cảm ơn anh. tại trường hợp của em cái bảng dò em thường xuyên thay đổi. nên cứ mổi lần vậy em lại thay đổi code. Anh còn cách nào nữa không
 
Upvote 0
Cho em góp vui 1 hàm:
Mã:
Function ThayKyTu(ma As String, Rng As Range, n As Long)
    Dim my_arr, sArr, d As Object, v  As Variant
    Dim j As Long, I As Long
On Error Resume Next
sArr = Rng.Value
my_arr = Split(ma, ".")
For I = LBound(my_arr) To UBound(my_arr)
    For j = 1 To UBound(sArr)
        If sArr(j, 1) = my_arr(I) Then
            If I = 0 Then
                ThayKyTu = Application.WorksheetFunction.Substitute(ma, my_arr(I), sArr(j, n))
            Else
                ThayKyTu = Application.WorksheetFunction.Substitute(ThayKyTu, my_arr(I), sArr(j, n))
            End If
        End If
    Next j
Next I
End Function
Công thức C3:
Mã:
=ThayKyTu(B3;$E$3:$F$8;2)

dạ em cảm ơn anh. Anh xem lại sao em làm giống như code anh mà nó bị lỗi anh ơi
upload_2017-4-26_11-7-10.png
 
Upvote 0
Cho em góp vui 1 hàm:
Mã:
Function ThayKyTu(ma As String, Rng As Range, n As Long)
    Dim my_arr, sArr, d As Object, v  As Variant
    Dim j As Long, I As Long
On Error Resume Next
sArr = Rng.Value
my_arr = Split(ma, ".")
For I = LBound(my_arr) To UBound(my_arr)
    For j = 1 To UBound(sArr)
        If sArr(j, 1) = my_arr(I) Then
            If I = 0 Then
                ThayKyTu = Application.WorksheetFunction.Substitute(ma, my_arr(I), sArr(j, n))
            Else
                ThayKyTu = Application.WorksheetFunction.Substitute(ThayKyTu, my_arr(I), sArr(j, n))
            End If
        End If
    Next j
Next I
End Function
Công thức C3:
Mã:
=ThayKyTu(B3;$E$3:$F$8;2)

sorry anh Code anh đúng rồi. Lúc nảy em copy thiếu code
 
Upvote 0
Cho em góp vui 1 hàm:
Mã:
Function ThayKyTu(ma As String, Rng As Range, n As Long)
    Dim my_arr, sArr, d As Object, v  As Variant
    Dim j As Long, I As Long
On Error Resume Next
sArr = Rng.Value
my_arr = Split(ma, ".")
For I = LBound(my_arr) To UBound(my_arr)
    For j = 1 To UBound(sArr)
        If sArr(j, 1) = my_arr(I) Then
            If I = 0 Then
                ThayKyTu = Application.WorksheetFunction.Substitute(ma, my_arr(I), sArr(j, n))
            Else
                ThayKyTu = Application.WorksheetFunction.Substitute(ThayKyTu, my_arr(I), sArr(j, n))
            End If
        End If
    Next j
Next I
End Function
Công thức C3:
Mã:
=ThayKyTu(B3;$E$3:$F$8;2)
Trong VBA có hàm Replace sao bạn không dùng mà lại đi dùng SUBSTITUTE?
Đó là chưa nói SUBSTITUTE có phân biệt HOA thường trong khi hàm Replace trong VBA cho bạn tùy chọn có phân biệt HOA thường hay không
Ngoài ra tôi chưa hiểu bạn Split(ma, ".") ra thành 1 array để làm gì nữa? Hình như là.. thừa
Toàn bộ code của bạn có thể sửa thành:
Mã:
Function ThayKyTu(ma As String, Rng As Range, n As Long)
  Dim sArr,  j As Long
  On Error Resume Next
  sArr = Rng.Value
  ThayKyTu = ma
  For j = 1 To UBound(sArr, 1)
    ThayKyTu = Replace(ThayKyTu, sArr(j, 1), sArr(j, n), 1, , vbTextCompare)
  Next
End Function
Nhưng dù gì thì code thế vẫn chưa hoàn hảo, nhất là biến Rng. Bạn đang khai triển code theo kiểu hàm VLOOKUP, tức dò tìm từ trái sang phải. Vậy nếu như có trường hợp: Người ta dò theo chiều dọc (từ trên xuống giống HLOOKUP) thì tính sao?
 
Upvote 0
Do e không biết dùng Replace nên cắt chuỗi để thay thế. Hôm nay em học thêm được hàm mới. Cám ơn thầy nhiều.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom