Tổng hợp về phương thức tìm kiếm FIND (Find Method)

khacbao72

Thành viên mới
Tham gia ngày
23 Tháng sáu 2008
Bài viết
27
Được thích
18
Điểm
665
Kính thưa thầy và các bạn ,

Em cũng theo cú pháp trên làm nhưng không hiểu sau kết quả hoàn toàn khac trong 02 file .

Mục tiêu : dò tìm xem liệu các giá trị có trong cột A /sheet "Hours x SLP" có tồn tại trong cột B sheet "forecast" hay không ? nếu không có thì mark vàng giá trị đó ở cột A/Sheet "HoursxSLP"

Em chuẩn bị code nhu sau:

Sub Bookertrack()
Dim kq, code, dky As Range
Dim codekt As String
'tim illegal booker
Set code = [spentcode]
Set dky = [dangky]
'chon codekt
Sheets("forecast").Select

For i = 2 To code.Rows.Count
codekt = code(i, 1).Value
Set kq = [dangky].Find(codekt) ', LookIn:=xlValues, LookAt:=xlWhole)
'Kiem tra
If kq Is Nothing Then
code(i, 1).Interior.Color = 65535
End If
Next i
End Sub

Tuy nhiên khi chạy
File test1 : giá trị ở cột B là kết quả phép tính(formula), kết quả không đúng như yêu cầu;
File test2 : Kết quả như yêu cầu , khi em chuyển các giá trị trong cột B thành value (copy và paste value )

Nhờ thày và các anh chị chỉ giúp nguyên nhân và cách khắc phục với ạ.
 

File đính kèm

guitarnguyen1989

Thành viên chính thức
Tham gia ngày
31 Tháng bảy 2016
Bài viết
52
Được thích
6
Điểm
170
Tuổi
30
Mã:
Sub TrichLocSocai()
    Dim Rng As Range, LastCell As Range
    Dim FirstAddress As String, R As Long, SaveRow As Long
    Application.ScreenUpdating = False
    With Range("B2:C11")
        Set LastCell = .Cells(.Cells.Count)
        Set Rng = .Find("111*", After:=LastCell, LookIn:=xlValues, LookAt:=xlWhole)
        FirstAddress = Rng.Address
        If Not Rng Is Nothing Then
            R = 2
            Do
                SaveRow = Rng.Row
                Select Case Rng.Column
                Case 2
                    Cells(R, 6) = Rng.Offset(, -1)
                    Cells(R, 7) = Rng.Offset(, 1)
                    Cells(R, 8) = Rng.Offset(, 2)
                Case 3
                    Cells(R, 6) = Rng.Offset(, -2)
                    Cells(R, 7) = Rng.Offset(, -1)
                    Cells(R, 9) = Rng.Offset(, 1)
                End Select
                R = R + 1
                Set Rng = .FindNext(Rng)
            Loop While FirstAddress <> Rng.Address And SaveRow <> Rng.Row
        End If
    End With
    Set LastCell = Nothing: Set Rng = Nothing
    Application.ScreenUpdating = True
End Sub

Ai có thể giải thích dùm em "case 2 , case 3" trong code tren có nghĩa là gì hok???? Cảm ơn
 

SA_DQ

/(hông là gì!
Thành viên danh dự
Tham gia ngày
8 Tháng sáu 2006
Bài viết
5,751
Được thích
9,658
Điểm
860
Ai có thể giải thích dùm em "case 2 , case 3" trong code tren có nghĩa là gì hok???? Cảm ơn
Câu lệnh
Set Rng = .Find("111*", After:=LastCell, LookIn:=xlValues, LookAt:=xlWhole)
sẽ tiến hành công việc tìm kiếm trong vùng Range("B2:C11")
Mà vùng này có 2 cột
Vậy khi tiến hành tìm ra kết quả thì đối chiếu với cột của ô tìm thấy ta xử tiếp

Vì không có file giả lập nên mọi người ngại trả lời, bạn thông cảm nha!
 
Top