Xin giúp đỡ viết Code VBA để thực hiện việc tìm kiếm dữ liệu đơn giản (2 người xem)

Liên hệ QC

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

hiepnh1985

Thành viên chính thức
Tham gia
31/8/10
Bài viết
76
Được thích
48
Em cần tìm các dòng có chứa dữ liệu liên quan đến ký tự tìm kiếm. Giống như thao tác Ctr+F trong Excel. Tuy nhiên em muốn kết quả tìm kiếm được liệt kê vào một khu vực như mình mong muốn. Chỉ cần nhập ký tự tìm kiếm rồi ấn vào Biểu tượng tìm kiếm (đã gán Macro) là nó hiện ra kết quả các dòng liên quan. Chi tiết trong File đính kèm. Anh chị nào biết thì giúp em nhé. Em cảm ơn.
 

File đính kèm

Tham khảo giải pháp công thức kết hợp Name:
Đặt Name Data (nhấn Ctrl+F3 để xem):
Mã:
=OFFSET(Data!$A$1,,,COUNTA(Data!$A$1:$A$1000),)
Name Dk:
Mã:
=IF(ISERROR(SEARCH("*"&Data!$F$3&"*",Data))=FALSE,ROW(Data),"")
Công thức tại F4 (kéo xuống):
Mã:
=IF(ROW(A1)<=COUNT(Dk),INDEX(Data,SMALL(Dk,ROW(A1))),"")
 

File đính kèm

Upvote 0
Em cần tìm các dòng có chứa dữ liệu liên quan đến ký tự tìm kiếm. Giống như thao tác Ctr+F trong Excel. Tuy nhiên em muốn kết quả tìm kiếm được liệt kê vào một khu vực như mình mong muốn. Chỉ cần nhập ký tự tìm kiếm rồi ấn vào Biểu tượng tìm kiếm (đã gán Macro) là nó hiện ra kết quả các dòng liên quan. Chi tiết trong File đính kèm. Anh chị nào biết thì giúp em nhé. Em cảm ơn.

Thích code thì dùng phương thức find thôi
Ví dụ :
Mã:
Sub GPE()
    Dim rng As Range, FindAddress$
    Dim Arr, i&
        ReDim Arr(1 To 1)
        With Range("A1:A20")
            Set rng = .Find([F3])
            If Not rng Is Nothing Then
                FindAddress = rng.Address
                Arr(1) = rng: i = i + 1
                Do
                    Set rng = .FindNext(rng)
                    If Not rng Is Nothing Then
                        ReDim Preserve Arr(1 To i)
                        Arr(i) = rng
                        i = i + 1
                    Else
                        Exit Do
                    End If
                Loop While rng.Address <> FindAddress
            Range("F4:F1000").ClearContents
            Range("F4").Resize(i - 1) = WorksheetFunction.Transpose(Arr)
            End If
        End With
End Sub
 
Upvote 0
Em cần tìm các dòng có chứa dữ liệu liên quan đến ký tự tìm kiếm. Giống như thao tác Ctr+F trong Excel. Tuy nhiên em muốn kết quả tìm kiếm được liệt kê vào một khu vực như mình mong muốn. Chỉ cần nhập ký tự tìm kiếm rồi ấn vào Biểu tượng tìm kiếm (đã gán Macro) là nó hiện ra kết quả các dòng liên quan. Chi tiết trong File đính kèm. Anh chị nào biết thì giúp em nhé. Em cảm ơn.
Tham khảo code sau thử:
[gpecode=vb]
Sub TimKiem()
Dim nR As Integer, eR As Integer
Dim Rng As Range, Clls As Range
Dim Key As String
eR = Sheets("Data").Range("A65535").End(xlUp).Row
Set Rng = Sheets("Data").Range("A1:A" & eR)
Key = "*" & Sheets("Data").Range("F3") & "*"
Sheets("Data").Range("G4:G" & eR + 3).Clear
For Each Clls In Rng
If Application.CountIf(Clls, Key) > 0 Then
nR = nR + 1
Cells(nR + 3, 7) = Clls
End If
Next Clls
End Sub
[/gpecode]
 

File đính kèm

Upvote 0
Em cần tìm các dòng có chứa dữ liệu liên quan đến ký tự tìm kiếm. Giống như thao tác Ctr+F trong Excel. Tuy nhiên em muốn kết quả tìm kiếm được liệt kê vào một khu vực như mình mong muốn. Chỉ cần nhập ký tự tìm kiếm rồi ấn vào Biểu tượng tìm kiếm (đã gán Macro) là nó hiện ra kết quả các dòng liên quan. Chi tiết trong File đính kèm. Anh chị nào biết thì giúp em nhé. Em cảm ơn.
Lỡ xài code rồi thì thử cái này cho vui thêm chút. Nhấp chuột vào ô màu vàng và gõ thử
 

File đính kèm

Upvote 0
Em đã xem các file hỗ trợ từ các bác. Mỗi người đều có 1 phương án giải quyết đáng để em học hỏi thêm. Xin cảm ơn các bác nhiều.
 
Upvote 0

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

Back
Top Bottom