Viết Function tương tự hàm Match trong Excel

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

vippera2

Thành viên mới
Tham gia
27/8/11
Bài viết
21
Được thích
0
Chào diễn đàn,

Mình đang cần 1 hàm tương tự hàm Match trong Excel viết bằng VBA
Hàm Match trong excel sẽ tìm chính xác từ cần tìm ở dòng nào trong cột chỉ định
Nhưng mình cần hàm tìm dòng chỉ cần chứa các ký tự cần tìm trong cột chỉ định thì sẽ ra dòng đó
Các bác xem minh họa như hình vẽ ạ
fuction match.png
Rất mong nhận được sự hỗ trợ ạ.
 
Chào diễn đàn,

Mình đang cần 1 hàm tương tự hàm Match trong Excel viết bằng VBA
Hàm Match trong excel sẽ tìm chính xác từ cần tìm ở dòng nào trong cột chỉ định
Nhưng mình cần hàm tìm dòng chỉ cần chứa các ký tự cần tìm trong cột chỉ định thì sẽ ra dòng đó
Các bác xem minh họa như hình vẽ ạ
View attachment 285178
Rất mong nhận được sự hỗ trợ ạ.
Viết hàm Match bình thường tham số 0 và thêm dấu * ở các ký tự tìm kiếm là được.
 
Upvote 0
Chào diễn đàn,

Mình đang cần 1 hàm tương tự hàm Match trong Excel viết bằng VBA
Hàm Match trong excel sẽ tìm chính xác từ cần tìm ở dòng nào trong cột chỉ định
Nhưng mình cần hàm tìm dòng chỉ cần chứa các ký tự cần tìm trong cột chỉ định thì sẽ ra dòng đó
Các bác xem minh họa như hình vẽ ạ
View attachment 285178
Rất mong nhận được sự hỗ trợ ạ.
thử xem bạn :

Mã:
Function Match_2_Row(lookup_value As Variant, lookup_range As Range, Optional match_type As Integer = 0) As Variant
    Dim cell        As Range
    Match_2_Row = "Not Found"

    For Each cell In lookup_range
        If InStr(1, cell.Value, lookup_value, match_type) > 0 Then
            Match_2_Row = cell.Row
            Exit For
        End If
    Next cell
End Function
 
Upvote 0
thử xem bạn :

Mã:
Function Match_2_Row(lookup_value As Variant, lookup_range As Range, Optional match_type As Integer = 0) As Variant
    Dim cell        As Range
    Match_2_Row = "Not Found"

    For Each cell In lookup_range
        If InStr(1, cell.Value, lookup_value, match_type) > 0 Then
            Match_2_Row = cell.Row
            Exit For
        End If
    Next cell
End Function
không được bạn ơi
1672201036798.png
có 1 vấn đề nữa là các kí tự cần tìm có thể ở các vị trí khác nhau, chỉ cần trong cột cần tìm có dòng chứa các kí tự đó là hiển thị số dòng lên ạ
 
Upvote 0
Upvote 0
thực tế mình sẽ lấy hết cột B đó bạn, dòng nào match đầu tiên thì lấy số dòng đó bạn ạ
Thử code
Mã:
Function MyMatch(ByVal lookup_value As String, ByVal lookup_range As Range) As Long
    Dim cell As Range, CellValue As String, i As Long, lenL As Long, k As Long
    lenL = Len(lookup_value)

    For Each cell In lookup_range
        CellValue = cell.Value
        For i = 1 To lenL
            k = InStr(1, CellValue, Mid(lookup_value, i, 1))
            If k = 0 Then Exit For
            Mid(CellValue, k, 1) = "|"
        Next i
        If i > lenL Then
            MyMatch = cell.Row
            Exit Function
        End If
    Next cell
End Function
 
Upvote 0
Chào diễn đàn,

Mình đang cần 1 hàm tương tự hàm Match trong Excel viết bằng VBA
Hàm Match trong excel sẽ tìm chính xác từ cần tìm ở dòng nào trong cột chỉ định
Nhưng mình cần hàm tìm dòng chỉ cần chứa các ký tự cần tìm trong cột chỉ định thì sẽ ra dòng đó
Các bác xem minh họa như hình vẽ ạ
View attachment 285178
Rất mong nhận được sự hỗ trợ ạ.
Góp vui.

Mã:
Function Tim(Rng As Range, Str As String)
Dim i&, j&, Chk As Boolean
For i = 1 To Rng.Rows.Count
 If Chk = False Then
    For j = 1 To Rng.Columns.Count
        If Rng(i, j) Like "*" & Str & "*" Then Tim = Rng(i, j).Row: Chk = True: Exit For
    Next j
 Else
    Exit For
 End If
Next

End Function
Cú pháp : =Tim(Vùng cần tìm, ký tự cần tìm) và Enter
 
Lần chỉnh sửa cuối:
Upvote 0
Thử code
Mã:
Function MyMatch(ByVal lookup_value As String, ByVal lookup_range As Range) As Long
    Dim cell As Range, CellValue As String, i As Long, lenL As Long, k As Long
    lenL = Len(lookup_value)

    For Each cell In lookup_range
        CellValue = cell.Value
        For i = 1 To lenL
            k = InStr(1, CellValue, Mid(lookup_value, i, 1))
            If k = 0 Then Exit For
            Mid(CellValue, k, 1) = "|"
        Next i
        If i > lenL Then
            MyMatch = cell.Row
            Exit Function
        End If
    Next cell
End Function
perfect, cảm ơn bạn nhiều
hy vọng được học hỏi thêm
 
Upvote 0
không được bạn ơi
. . . .
có 1 vấn đề nữa là các kí tự cần tìm có thể ở các vị trí khác nhau, chỉ cần trong cột cần tìm có dòng chứa các kí tự đó là hiển thị số dòng lên ạ
Hình như còn có thêm vấn đề nữa & sẽ là chữ in & chữ thường. . . . .
Giúp em nó đi các anh/chị/em!
 
Upvote 0
Thấy có cái "pơ phếch" là anh chuyền bóng phải không.
Tôi thích "perfecto" hơn.

Chú:
Từ kia đọc là pớ-phịt - từ này đặt mạnh âm đầu, và vì vậy âm sau đọc nhẹ thành giồng như phịt, thay vì phẹt.
Từ tôi thich mới đọc là pờ phếch tô
 
Upvote 0
Chào diễn đàn,

Mình đang cần 1 hàm tương tự hàm Match trong Excel viết bằng VBA
Hàm Match trong excel sẽ tìm chính xác từ cần tìm ở dòng nào trong cột chỉ định
Nhưng mình cần hàm tìm dòng chỉ cần chứa các ký tự cần tìm trong cột chỉ định thì sẽ ra dòng đó
Các bác xem minh họa như hình vẽ ạ
View attachment 285178
Rất mong nhận được sự hỗ trợ ạ.
Theo hình, thử công thức tại E4 (Ctrl+Shift+Enter)
Mã:
=MATCH(LEN(D4),MMULT(--ISNUMBER(SEARCH(MID(D4,TRANSPOSE(ROW(INDIRECT("1:"&LEN(D4)))),1),B3:B6)),ROW(INDIRECT("1:"&LEN(D4)))^0),0)
 
Upvote 0
Theo hình, thử công thức tại E4 (Ctrl+Shift+Enter)
=MATCH(LEN(D4),MMULT(--ISNUMBER(SEARCH(MID(D4,TRANSPOSE(ROW(INDIRECT("1:"&LEN(D4)))),1),B3:B6)),ROW(INDIRECT("1:"&LEN(D4)))^0),0)
1672365685331.png
Cho mình hỏi tí, khi mình dán công thức trên thì nó ra thông báo như trên. Bấm Ok thì nó trỏ con chuột về hàm len chỗ mình bôi đậm. Lỗi trên là do dùng nhiều ngoặc đơn quá phải không nhỉ?
Mình sửa lại như dưới thì nó lại ra kết quả.
Mã:
=MATCH(LEN(D4),MMULT(--ISNUMBER(SEARCH(MID(D4,COLUMN(INDIRECT("c1:c"&LEN(D4),0)),1),B3:B6)),ROW(INDIRECT("1:"&LEN(D4)))^0),0)
 
Upvote 0
Theo hình, thử công thức tại E4 (Ctrl+Shift+Enter)
Mã:
=MATCH(LEN(D4),MMULT(--ISNUMBER(SEARCH(MID(D4,TRANSPOSE(ROW(INDIRECT("1:"&LEN(D4)))),1),B3:B6)),ROW(INDIRECT("1:"&LEN(D4)))^0),0)
Dịch cái này sang tiếng Việt cũng đủ vất vả rồi. :wallbash: :wallbash: :wallbash:
Bài đã được tự động gộp:

View attachment 285243
Cho mình hỏi tí, khi mình dán công thức trên thì nó ra thông báo như trên. Bấm Ok thì nó trỏ con chuột về hàm len chỗ mình bôi đậm. Lỗi trên là do dùng nhiều ngoặc đơn quá phải không nhỉ?
Mình sửa lại như dưới thì nó lại ra kết quả.
Mã:
=MATCH(LEN(D4),MMULT(--ISNUMBER(SEARCH(MID(D4,COLUMN(INDIRECT("c1:c"&LEN(D4),0)),1),B3:B6)),ROW(INDIRECT("1:"&LEN(D4)))^0),0)
công thức đúng mà ta.
 
Upvote 0
1672365685331.png

Cho mình hỏi tí, khi mình dán công thức trên thì nó ra thông báo như trên. Bấm Ok thì nó trỏ con chuột về hàm len chỗ mình bôi đậm. Lỗi trên là do dùng nhiều ngoặc đơn quá phải không nhỉ?
Bạn xem thử Bài này
 
Upvote 0
Web KT

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

Back
Top Bottom