Tìm bằng Find Method (1 người xem)

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

canguocs

Thành viên hoạt động
Tham gia
28/6/14
Bài viết
100
Được thích
7
Trong file đính kèm, em muốn tìm chứ vạn bắt đầu ở B3 nhưng thử 2 cách đều chưa được
Nhờ anh chị hướng dẫn em.
Mã:
Sub FIND()
Dim Rng As Range, i&, r& , Rng1 As Range, FirstAddress As String
Set Rng = Sheet1.Range("A3" & Sheet1.Range("A65000").End(3).Row)
Set Rng1 = Rng.FIND("*van*", LookIn:=xlValues, LookAt:=xlWhole)
 FirstAddress = Rng1.Address
 If Not Rng1 Is Nothing Then
        r = 1
        Do
            Cells(r, 2) = Rng1
            r = r + 1
        Set Rng1 = Rng.FindNext(Rng1)
        Loop While FirstAddress <> Rng1.Address
    End If


End Sub
Mã:
Sub TrichLoc()
    Dim Rng As Range, LastCell As Range, FirstAddress As String, r&
    Set LastCell = Range("A3:A65000").Cells(Range("A3:A65000").Cells.Count)
    Set Rng = Range("A3:A65000").FIND("*van*", After:=LastCell, LookIn:=xlValues, LookAt:=xlWhole)
    FirstAddress = Rng.Address
    If Not Rng Is Nothing Then
        r = 1
        Do
            Cells(r, 2) = Rng
            r = r + 1
            Set Rng = Range("A3:A65000").FindNext(Rng)
        Loop While FirstAddress <> Rng.Address
    End If
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Trong file đính kèm, em muốn tìm chứ vạn bắt đầu ở B3 nhưng thử 2 cách đều chưa được
Nhờ anh chị hướng dẫn em.
Mã:
Sub FIND()
Dim Rng As Range, i&, r& , Rng1 As Range, FirstAddress As String
Set Rng = Sheet1.Range("A3" & Sheet1.Range("A65000").End(3).Row)
Set Rng1 = Rng.FIND("*van*", LookIn:=xlValues, LookAt:=xlWhole)
 FirstAddress = Rng1.Address
 If Not Rng1 Is Nothing Then
        r = 1
        Do
            Cells(r, 2) = Rng1
            r = r + 1
        Set Rng1 = Rng.FindNext(Rng1)
        Loop While FirstAddress <> Rng1.Address
    End If


End Sub
Mã:
Sub TrichLoc()
    Dim Rng As Range, LastCell As Range, FirstAddress As String, r&
    Set LastCell = Range("A3:A65000").Cells(Range("A3:A65000").Cells.Count)
    Set Rng = Range("A3:A65000").FIND("*van*", After:=LastCell, LookIn:=xlValues, LookAt:=xlWhole)
    FirstAddress = Rng.Address
    If Not Rng Is Nothing Then
        r = 1
        Do
            Cells(r, 2) = Rng
            r = r + 1
            Set Rng = Range("A3:A65000").FindNext(Rng)
        Loop While FirstAddress <> Rng.Address
    End If
End Sub

Sửa thành vậy

Set Rng = Sheet1.Range("A3:A" & Sheet1.Range("A65000").End(3).Row)
Set Rng1 = Rng.FIND("*v?n*", LookIn:=xlValues, LookAt:=xlWhole)
 
Upvote 0
Sửa thành vậy

Set Rng = Sheet1.Range("A3:A" & Sheet1.Range("A65000").End(3).Row)
Set Rng1 = Rng.FIND("*v?n*", LookIn:=xlValues, LookAt:=xlWhole)
Lúc đầu em tìm như vậy nhưng quên cho A3:A nên sai
Cảm ơn bác nhé
Nhưng liệu có tách được chữ "Vạn" ra không ah, vì tìm thế này nó ra cả diễn giải
 
Upvote 0
Mã:
Sub VX()
    Dim Sarr, i&
    Sarr = Range([A3], [A65000].End(3)).Value2
        For i = 1 To UBound(Sarr, 1)
            If InStr(Sarr(i, 1), "van xuan") = 0 Then
                Sarr(i, 1) = "van xuan"
            End If
        Next
        [B3:B65000].ClearContents
        [B3].Resize(UBound(Sarr, 1), 1).Value = Sarr
End Sub
Dùng vòng lặp cũng là một cách ah
Em test thử, cách này có vẻ chưa ổn lắm
Mã:
 
Lần chỉnh sửa cuối:
Upvote 0
Lúc đầu em tìm như vậy nhưng quên cho A3:A nên sai
Cảm ơn bác nhé
Nhưng liệu có tách được chữ "Vạn" ra không ah, vì tìm thế này nó ra cả diễn giải
Muốn tách chữ vạn ra thôi vậy sửa lại vậy thôi

[GPECODE=vb]
Sub FIND()
Dim Rng As Range, i&, Rng1 As Range, FirstAddress As String, Findv As String
Findv = "*v" & ChrW(7841) & "n*"
Set Rng = Sheet1.Range("A3:A" & Sheet1.Range("A65000").End(3).Row)
Set Rng1 = Rng.FIND(Findv, LookIn:=xlValues, LookAt:=xlWhole)
FirstAddress = Rng1.Address
If Not Rng1 Is Nothing Then
r = 1
Do
Cells(r, 2) = "v" & ChrW(7841) & "n"
r = r + 1
Set Rng1 = Rng.FindNext(Rng1)
Loop While FirstAddress <> Rng1.Address
End If


End Sub


[/GPECODE]
 
Upvote 0
Muốn tách chữ vạn ra thôi vậy sửa lại vậy thôi

[GPECODE=vb]
Sub FIND()
Dim Rng As Range, i&, Rng1 As Range, FirstAddress As String, Findv As String
Findv = "*v" & ChrW(7841) & "n*"
Set Rng = Sheet1.Range("A3:A" & Sheet1.Range("A65000").End(3).Row)
Set Rng1 = Rng.FIND(Findv, LookIn:=xlValues, LookAt:=xlWhole)
FirstAddress = Rng1.Address
If Not Rng1 Is Nothing Then
r = 1
Do
Cells(r, 2) = "v" & ChrW(7841) & "n"
r = r + 1
Set Rng1 = Rng.FindNext(Rng1)
Loop While FirstAddress <> Rng1.Address
End If


End Sub


[/GPECODE]
Cảm ơn bác nhiều nhé, vẫn phải dùng 7841 (ạ) nó mới hiểu được
 
Lần chỉnh sửa cuối:
Upvote 0
Theo mình, câu lệnh:
Mã:
 Set Rng1 = Rng.FIND(Findv, LookIn:=xlValues, LookAt:=xlWhole)

nên sửa lại & xài như vầy:

PHP:
Findv = "v" & ChrW(7841) & "n"
' . . . '
Set Rng1 = Rng.FIND(Findv, LookIn:=xlValues, LookAt:=xlPart)
 
Upvote 0
Theo mình, câu lệnh:
Mã:
 Set Rng1 = Rng.FIND(Findv, LookIn:=xlValues, LookAt:=xlWhole)

nên sửa lại & xài như vầy:

PHP:
Findv = "v" & ChrW(7841) & "n"
' . . . '
Set Rng1 = Rng.FIND(Findv, LookIn:=xlValues, LookAt:=xlPart)

Thầy có thể nói rõ hơn là tại sao nên tìm một phần mà ko phải toàn bộ không ah
 
Upvote 0

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

Back
Top Bottom