Cách tạo hàm thay thế 1 chuỗi các kí tự trong 1 đoạn text (1 người xem)

  • Thread starter Thread starter fubi
  • Ngày gửi Ngày gửi
Liên hệ QC

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

fubi

Thành viên mới
Tham gia
18/8/06
Bài viết
8
Được thích
16
Mình có 1 array các kí tự mình muốn bị thay thế và 1 array các kí tự sẽ thay thế những kí tự bên array kia. Ví dụ như:
arr1={"one", "two", "three"}
arr2={"một", "hai", "ba"}
Với chuỗi str="Tôi có onetwo trong đây" thì tạo hàm như thế nào để nó biến thành "Tôi có mộthai trong đây"

Xin hỏi trong VBA tạo hàm như thế nào để thực hiện việc thay thế không?
Chân thành cảm ơn!
 
Mình có 1 array các kí tự mình muốn bị thay thế và 1 array các kí tự sẽ thay thế những kí tự bên array kia. Ví dụ như:
arr1={"one", "two", "three"}
arr2={"một", "hai", "ba"}
Với chuỗi str="Tôi có onetwo trong đây" thì tạo hàm như thế nào để nó biến thành "Tôi có mộthai trong đây"

Xin hỏi trong VBA tạo hàm như thế nào để thực hiện việc thay thế không?
Chân thành cảm ơn!
Ý bạn thế này phải không?
 

File đính kèm

Upvote 0
Ý bạn thế này phải không?
viethoai viết code vậy không tổng quát đâu. Ít ra ham phải có dạng thế này:
TenHam(Chuổi, Mảng chứa chuổi tra, Mảng chưa chuổi kết quả)
2 mảng này phải để cho người dùng tùy chọn, nó có thể là mảng hoặc vùng trên bảng tính hoặc là mảng do kết quả tính toán trả về... vân vân...
 
Upvote 0
viethoai viết code vậy không tổng quát đâu. Ít ra ham phải có dạng thế này:
TenHam(Chuổi, Mảng chứa chuổi tra, Mảng chưa chuổi kết quả)
2 mảng này phải để cho người dùng tùy chọn, nó có thể là mảng hoặc vùng trên bảng tính hoặc là mảng do kết quả tính toán trả về... vân vân...

Chắc bác là cao thủ rồi. Bác giúp em với. Em đang bí quá! Cảm ơn rất nhiều!
 
Upvote 0
Bác giúp em với. Em đang bí quá! Cảm ơn rất nhiều!
Bài này thấy đơn giản thế chứ nghĩ cũng nát óc
Vì phải tạo 1 hàm có khả năng hoạt động trên Range và cả mảng 1 chiều cũng như 2 chiều nên... code hơi dài
PHP:
Function Find_n_Replace(ByVal Text As String, ByVal SrcArr, ByVal DesArr) As String
  Dim i As Long, j As Long, n As Long, Item, Arr1(), Arr2(), Tmp As String, Src, Des
  ReDim Arr1(0): ReDim Arr2(0)
  On Error Resume Next
  Tmp = Text
  Src = SrcArr: Des = DesArr
  If TypeName(Src) <> "Variant()" Then
    Arr1(0) = CStr(Src)
  Else
    For Each Item In Src
      ReDim Preserve Arr1(i)
      Arr1(i) = Item
      i = i + 1
    Next
  End If
  If TypeName(Des) <> "Variant()" Then
    Arr2(0) = CStr(Des)
  Else
    For Each Item In Des
      ReDim Preserve Arr2(j)
      Arr2(j) = Item
      j = j + 1
    Next
  End If
  For n = 0 To UBound(Arr1)
    Tmp = Replace(Tmp, Arr1(n), Arr2(n), , , vbTextCompare)
  Next
  Find_n_Replace = Tmp
End Function
Xem file đính kèm và các cú pháp có thể dùng, ví dụ:
=Find_n_Replace($A$3,$I$1,$J$1)
=Find_n_Replace($A$3,$I$1:$I$2,$J$1:$J$2)
=Find_n_Replace($A$3,$I$6:$J$6,$I$7:$J$7)
=Find_n_Replace($A$3,{"one";"two"},{"một";"hai"})
=Find_n_Replace($A$3,{"ONE","two"},$I$7:$J$7)
=Find_n_Replace($A$13,"chỉ có","chỉ nên có")
=Find_n_Replace($A$13,{"chỉ có","1 và 2"},{"chỉ nên có","một hoặc hai"})
=Find_n_Replace($A$13,"chỉ có 1 và 2","chỉ nên có một hoặc hai")
 

File đính kèm

Upvote 0
em không biết phải làm sao để nhờ bác giúp đỡ. Em xin lỗi vì đã spam. Mong anh GNU thông cảm bỏ qua.
mong anh bớt chút thời gian vàng bạc giúp đỡ thằng em ngu dốt này. Chân thành cám ơn anh.
http://www.giaiphapexcel.com/forum/showthread.php?51843-Tìm-kiếm-phần-tử-chung-của-nhiều-mảng&p=328629#post328629
Chào bạn!
Điều đầu tiên xin nói là bạn không nên chen ngang vào topic của người khác như thế
Tôi đã nhận được tin nhắn của bạn, đã xem qua topic của bạn, nhưng đằng nào thì bạn vẫn đang được bạn huuthang_bd giúp đấy thôi (anh ta là siêu cao thủ nên bạn cứ yên tâm về giải thuật).
Nếu có gì chưa hài lòng thì hãy vào topic của mình mà thắc mắc ---> Tuy nhiên, tôi nghĩ vấn đề của bạn là nói làm sao nói cho người khác hiểu ý mình mới quan trọng
Vậy đi nha!
(bài này chắc sẽ bị xóa)
 
Upvote 0
Bài này thấy đơn giản thế chứ nghĩ cũng nát óc
Vì phải tạo 1 hàm có khả năng hoạt động trên Range và cả mảng 1 chiều cũng như 2 chiều nên... code hơi dài
PHP:
...........[/QUOTE]
Trên cả tuyệt vời! Cảm ơn 1 cao thủ có tấm lòng hào hiệp! Em biết ơn bác rất nhiều! Nếu bác ở Đà Nẵng cho em mời bác cafe để diện kiến và học hỏi. Cảm ơn bác!
 
Upvote 0
Web KT

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

Back
Top Bottom