hàm tra cụm từ trong các cụm từ nhỏ (2 người xem)

Liên hệ QC

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

Thấy mới hiểu được.
PHP:
Public Function LuXuBu(ByVal Rng As Range, ByVal DK As Range) As String
Dim Txt As String, Arr(), I As Long, R As Long
Arr = Rng.Value:    R = UBound(Arr):    Txt = DK.Value
For I = 1 To R
    If InStr(Txt, Arr(I, 1)) Then
        LuXuBu = LuXuBu & Arr(I, 2)
        Txt = Replace(Txt, Arr(I, 1), "")
    End If
Next I
LuXuBu = LuXuBu & Application.WorksheetFunction.Trim(Txt)
End Function
Công thức nhập như cũ.
Em cảm ơn thầy nhiều. Chúc thầy buổi tối vui vẻ
 
Thấy mới hiểu được.
PHP:
Public Function LuXuBu(ByVal Rng As Range, ByVal DK As Range) As String
Dim Txt As String, Arr(), I As Long, R As Long
Arr = Rng.Value:    R = UBound(Arr):    Txt = DK.Value
For I = 1 To R
    If InStr(Txt, Arr(I, 1)) Then
        LuXuBu = LuXuBu & Arr(I, 2)
        Txt = Replace(Txt, Arr(I, 1), "")
    End If
Next I
LuXuBu = LuXuBu & Application.WorksheetFunction.Trim(Txt)
End Function
Công thức nhập như cũ.
Thầy ơi cho em hỏi. muốn chữ của ô tra, được xắp xếp đúng theo thứ tự chữ của ô cần tra ta phải làm như thế nào ạ. do công thức thầy để nó tra xáo trộn theo vị trí từ điển;. nhờ thầy hướng dẫn hộ. em xin cảm ơn
 
em gửi file lên nhờ các thầy xem và hướng dẫn e với ạ
 

File đính kèm

Thầy ơi cho em hỏi. muốn chữ của ô tra, được xắp xếp đúng theo thứ tự chữ của ô cần tra ta phải làm như thế nào ạ. do công thức thầy để nó tra xáo trộn theo vị trí từ điển;.
Đến đây thì thấy "lòi ra" nhiều cái lu bu rồi.
Chỉnh được thế này thôi, chưa vừa ý nữa thì chờ các giải pháp khác từ các bạn khác.
PHP:
Public Function LuXuBu(ByVal Rng As Range, ByVal DK As Range) As String
Dim Txt As String, Str As String, Arr(), I As Long, R As Long
Arr = Rng.Value:    R = UBound(Arr):    Txt = DK.Value & " "
For I = 1 To R
    If Arr(I, 1) <> Empty Then
        Str = Arr(I, 1) & " "
        If InStr(Txt, Str) Then
            Txt = Replace(Txt, Str, Arr(I, 2))
        End If
    End If
Next I
LuXuBu = Application.WorksheetFunction.Trim(Txt)
End Function
 
Giải thích tới lui cả chục bài, cuối cùng mới hiểu thì ra là bài toán TÌM KIẾM VÀ THAY THẾ. Hic
Mô ta không rõ ràng là lỗi của tác giả. Nếu không thì ta đa đơn giản hóa vấn đề thế này rồi:
Mã:
Function MReplace(ByVal Text As String, Dictionary As Range, Optional ByVal CompareMode As VbCompareMethod = vbTextCompare) As String
  Dim aDic, idx As Long
  MReplace = Text
  aDic = Dictionary.Value
  For idx = 1 To UBound(aDic, 1)
    MReplace = Replace(MReplace, aDic(idx, 1), aDic(idx, 2), , , CompareMode)
  Next
End Function
và:
Mã:
=MReplace(D2,A2:B11)
 
em cám ơn các thầy nhiều
 
Giải thích tới lui cả chục bài, cuối cùng mới hiểu thì ra là bài toán TÌM KIẾM VÀ THAY THẾ. Hic
Mô ta không rõ ràng là lỗi của tác giả. Nếu không thì ta đa đơn giản hóa vấn đề thế này rồi:
Mã:
Function MReplace(ByVal Text As String, Dictionary As Range, Optional ByVal CompareMode As VbCompareMethod = vbTextCompare) As String
  Dim aDic, idx As Long
  MReplace = Text
  aDic = Dictionary.Value
  For idx = 1 To UBound(aDic, 1)
    MReplace = Replace(MReplace, aDic(idx, 1), aDic(idx, 2), , , CompareMode)
  Next
End Function
và:
Mã:
=MReplace(D2,A2:B11)
thầy ơi làm sao cho nó tìm kiếm một cách tuyệt đối không ạ. hiện tại nó đang tìm một cách tương đối thôi. mong thầy hướng dẫn
 
Đến đây thì thấy "lòi ra" nhiều cái lu bu rồi.
Chỉnh được thế này thôi, chưa vừa ý nữa thì chờ các giải pháp khác từ các bạn khác.
PHP:
Public Function LuXuBu(ByVal Rng As Range, ByVal DK As Range) As String
Dim Txt As String, Str As String, Arr(), I As Long, R As Long
Arr = Rng.Value:    R = UBound(Arr):    Txt = DK.Value & " "
For I = 1 To R
    If Arr(I, 1) <> Empty Then
        Str = Arr(I, 1) & " "
        If InStr(Txt, Str) Then
            Txt = Replace(Txt, Str, Arr(I, 2))
        End If
    End If
Next I
LuXuBu = Application.WorksheetFunction.Trim(Txt)
End Function
Thầy ơi có cách nào hàm tìm kiếm một cách tuyệt đối không ạ. hiện tại nó chỉ tìm đường đối. mong hồi âm của thầy
 
Thầy ơi có cách nào hàm tìm kiếm một cách tuyệt đối không ạ. hiện tại nó chỉ tìm đường đối. mong hồi âm của thầy
ma quỷ --.> a
ma quỷ ám --> b
quỷ ám --> c

Dò bảng tra :
Tôi bị ma quỷ ám
Gặp dòng 1: --> Tôi bị a ám
Gặp dòng 2: --> Bạn muốn sao?
..............................
Tôi thấy bạn luôn hỏi chuyên về coi sao, hình tướng... chuyện này tôi thua rồi, không có cái gì tuyệt đối đâu, trừ phi ...
 
Lần chỉnh sửa cuối:
ma quỷ --.> a
ma quỷ ám --> b
quỷ ám --> c

Dò bảng tra :
Tôi bị ma quỷ ám
Gặp dòng 1: --> Tôi bị a ám
Gặp dòng 2: --> Bạn muốn sao?
..............................
Tôi thấy bạn luôn hỏi chuyên về coi sao, hình tướng... chuyện này tôi thua rồi, không có cái gì tuyệt đối đâu, trừ phi ...
Thật sự nhờ vả các thầy nhiều em cũng ngại lắm. nhưng vẫn hỏi các thầy cho ra kết quả em gửi file lên mong các thầy dừng giận giúp đỡ em lần này thôi. em xin cảm ơn các thầy nhiều
 

File đính kèm

Thật sự nhờ vả các thầy nhiều em cũng ngại lắm. nhưng vẫn hỏi các thầy cho ra kết quả em gửi file lên mong các thầy dừng giận giúp đỡ em lần này thôi. em xin cảm ơn các thầy nhiều
Tới đây là căng rồi đấy! Tin chắc khó có giải pháp cho bạn. Bởi tự bạn phải thiết kế bảng tra hợp lý, tức là phải tìm "cái lớn" trước rồi mới đến "cái nhỏ". Tránh tình trạng bị trùng lập vì "cái nhỏ" là con của "cái lớn"
Ví dụ:
- Phải tìm "Cộng hòa xã hội chủ nghĩa Việt Nam" trước, xong mới tìm đến "Cộng hòa xã hội chủ nghĩa"
- Phải tìm "Cộng hòa xã hội chủ nghĩa" trước, xong mới tìm đến "Cộng hòa xã hội"
- Phải tìm "Cộng hòa xã hội" trước, xong mới tìm đến "Cộng hòa"
vân.... vân....
đại khái là vậy. Nếu không xem như ta chẳng có quy luật nào cả
 
Tới đây là căng rồi đấy! Tin chắc khó có giải pháp cho bạn. Bởi tự bạn phải thiết kế bảng tra hợp lý, tức là phải tìm "cái lớn" trước rồi mới đến "cái nhỏ". Tránh tình trạng bị trùng lập vì "cái nhỏ" là con của "cái lớn"
Ví dụ:
- Phải tìm "Cộng hòa xã hội chủ nghĩa Việt Nam" trước, xong mới tìm đến "Cộng hòa xã hội chủ nghĩa"
- Phải tìm "Cộng hòa xã hội chủ nghĩa" trước, xong mới tìm đến "Cộng hòa xã hội"
- Phải tìm "Cộng hòa xã hội" trước, xong mới tìm đến "Cộng hòa"
vân.... vân....
đại khái là vậy. Nếu không xem như ta chẳng có quy luật nào cả
vâng cám ơn thầy nhiều lắm. chắc không có gì tuyệt đối cả. mong sao có một phương án hay
 
Đối với những yêu cầu thay thế nhiều giá trị thì cần phải sắp xếp từ điển theo thứ tự độ dài chuỗi tìm kiếm từ dài đến ngắn và ánh xạ qua 1 bộ chuỗi trung gian thì mới hạn chế được các kết quả không mong muốn.
Tuy nhiên, theo dữ liệu giả lập của chủ thớt thì có vẻ như là quy địa chỉ về mã đơn vị hành chính. Nếu đúng là như vậy thì topic này phá sản ngay từ cách đặt vấn đề vì có rất nhiều phường, xã trùng tên và kết quả sẽ trật lất.
 
Thật sự nhờ vả các thầy nhiều em cũng ngại lắm. nhưng vẫn hỏi các thầy cho ra kết quả em gửi file lên mong các thầy dừng giận giúp đỡ em lần này thôi. em xin cảm ơn các thầy nhiều
Đang chơi vui sao lại nghỉ vậy bạn :p
 

File đính kèm

Đang chơi vui sao lại nghỉ vậy bạn :p
hàm này gần như tuyệt đối rồi. coi như nó là khá nhất. nhưng những chữ không tìm thấy nó lại lấy chữ hần giống. ví dụ: chừ nhà nó lậy lấy chữ n+chữ hà. nếu mà chỉnh được thì nó là toàn vẹn. dù sao cũng cảm ơn Thầy đã giúp đỡ. xin cảm ơn
 
hàm này gần như tuyệt đối rồi. coi như nó là khá nhất. nhưng những chữ không tìm thấy nó lại lấy chữ hần giống. ví dụ: chừ nhà nó lậy lấy chữ n+chữ hà. nếu mà chỉnh được thì nó là toàn vẹn. dù sao cũng cảm ơn Thầy đã giúp đỡ. xin cảm ơn
Bạn trích nhầm bài rùi. Em đâu có phải là "Thầy" hu hu. Mà N+hà =Nhà mừ
 
Lần chỉnh sửa cuối:
mình đưa lên ví dụ như này: trong Từ điển từ "Nhà" không có;" hà"=2 muốn tra từ nhà như từ điển nhưng không có. Hàm của mình lại lấy N+2. bạn xem có khắc phục được nỗi này không. xin cảm ơn bạn nhiều
Như kiểu thế này á
Tùng, beng .......... Nam Định tỉnh, Hải Hậu huyện, Hải Nam xã...........
Xong mình đọc sang tiếng Hán á
 
Web KT

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

Back
Top Bottom