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

Liên hệ QC

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

maiban116

Thành viên thường trực
Tham gia
29/3/15
Bài viết
361
Được thích
20
xin hỏi các thầy. có công thức nào hay dùng code nào tra một câu trong các cụm từ không ạ. em gửi file lên nhờ cả nhà hướng dẫn. xin cám ơn
 

File đính kèm

xin hỏi các thầy. có công thức nào hay dùng code nào tra một câu trong các cụm từ không ạ. em gửi file lên nhờ cả nhà hướng dẫn. xin cám ơn
Nói cho cùng là nối chuỗi có điều kiện? Vậy câu trả lời là: "Làm được nhưng phải là VBA". Bạn thấy sao?
 

File đính kèm

xin hỏi các thầy. có công thức nào hay dùng code nào tra một câu trong các cụm từ không ạ. em gửi file lên nhờ cả nhà hướng dẫn. xin cám ơn
Thử:
PHP:
Sub abc()
    Dim x As Range, y As Range, dk As Range
    Set dk = [d2]
    [d3] = Application.Transpose(Join(Application.Transpose(Range("a2", Range("a" & Rows.Count).End(xlUp))), " "))
    If dk.Value Like [d3] Then
        [e3] = Application.Transpose(Join(Application.Transpose(Range("B2", Range("b" & Rows.Count).End(xlUp))), ""))
    Else
        [e3] = "Khong biet!"
    End If
    [d3].ClearContents
End Sub
 

File đính kèm

Bạn thử lại như vầy xem
Mã:
=JoinIf("";IFERROR(IF(FIND(A2:A1000;C2;1);1;0);"");1;B2:B1000)
Ết úc ằng Ctrl+Shift+Enter
 
Kiểm tra lại lần nữa xem sao
Đoán là vì mấy bạn kia vẫn còn dùng phiên bản cũ
dạ cám ơn các thầy nhiều ạ.. thầy cho em hỏi thêm tý nữa , giả sử những từ cần tra không có trong bảng tra
em muốn nó trả về đúng từ cần tra thì làm như thế nào ạ. và ở cột từ điển hai từ giống nhau thì nó sẽ lấy cái từ đầu tiên nó nhận được mong hồi âm của các thầy. xin cảm ơn nhiều ạ
 
dạ cám ơn các thầy nhiều ạ.. thầy cho em hỏi thêm tý nữa , giả sử những từ cần tra không có trong bảng tra
em muốn nó trả về đúng từ cần tra thì làm như thế nào ạ. và ở cột từ điển hai từ giống nhau thì nó sẽ lấy cái từ đầu tiên nó nhận được mong hồi âm của các thầy. xin cảm ơn nhiều ạ. em gửi file lên mong các thầy hướng dẫn em lần nữa ạ
 

File đính kèm

có thầy nào giúp em với ạ
 
có thầy nào giúp em với ạ
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
End Function
Công thức:
PHP:
=LuXuBu($A$2:$B$11;D2)
Chưa hiểu và thấy kết quả mẫu của yêu cầu: "và nếu không tìm thấy nó sẽ trả về chính nó"
 
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
End Function
Công thức:
PHP:
=LuXuBu($A$2:$B$11;D2)
Chưa hiểu và thấy kết quả mẫu của yêu cầu: "và nếu không tìm thấy nó sẽ trả về chính nó"
cái này đáp ứng được 1 vế thầy ạ. còn vế những từ không tra thấy thì trả vể chính nó. mong thầy kiểm tra lại hộ. xin cảm ơn
 
có thầy nào giúp em với ạ
Bạn có thể thêm điều kiện vào tùy thích mà. Cụ thể ở đây là điều kiện Unique, đúng không?
Vậy đề xuất công thức này:
Mã:
=JoinIf("",FIND(A2:A100,D2)*FREQUENCY(IF(A2:A100<>"",MATCH(A2:A100,A2:A100,0)),MATCH(A2:A100,A2:A100,0)),">0",B2:B100)
 
Bạn đọc lại dòng cuối cùng bài #14.
Bạn đọc lại dòng cuối cùng bài #14.
thầy ơi cụm từ 15/55 nếu nó tra không có thì nó có thể trở về chính 15/55 được không ạ. có nghĩa là cụm từ tra được + với chính nó ạ: ví dụ
Bạn đọc lại dòng cuối cùng bài #14.
ý em như trong hình ảnh. thầy xem hướng dẫn em với ạ
 

File đính kèm

  • hỏi cách sửa.png
    hỏi cách sửa.png
    8.2 KB · Đọc: 15
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ũ.
 

File đính kèm

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 á
 

File đính kèm

File đính kèm

Lần chỉnh sửa cuối:

File đính kèm

Bạn cho mình hỏi tý. có cách nào làm chọn chữ như ví dụ mình gửi lên không. nếu được xin bạn hướng dẫn
Cái này không được đâu. Vì phải có đầu vào thì mới có đầu ra. Chứ như file đính kèm thì biết răng mừ làm
 
đầu vào là các ô màu vàng ấy. còn đầu ra cứ đánh chữ nào thì nó hiện chữ cho mình chọn được. bạn xem có ý tưởng nào không
Híc. Đầu vào có 1048576 dòng. trong đó ai biết nó là cái gì mà ghép
Tạm tạm hiểu thui. Bạn xem thử hàm Cái Ấy Là cái Đó trong file
 

File đính kèm

Lần chỉnh sửa cuối:

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

Back
Top Bottom