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
6,102
Được thích
10,120
Điểm
1,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!
 

Duongvulg

Thành viên mới
Tham gia ngày
1 Tháng sáu 2019
Bài viết
4
Được thích
0
Điểm
13
Tuổi
31
dear các anh
em có issue thế này :

222723

em viết code như sau :

Sub test()
Dim i As Variant
For i = 2 To 4
Cells(i, 4) = Range(Cells(2, 2), Cells(4, 2)).Find(Cells(i, 3))
Next i
End Sub

khi chạy sẽ báo lỗi

e sử dung cột B là range để find
cột C là các data cần find
D là nơi trả về data find được

khi gặp giá trị "d" thì code sẽ báo lỗi

222724

các anh có thể gỡ rối cho em đc ko ạ

thank các anh.
 

leonguyenz

╠╗╦══╦╔╣
Thành viên BQT
Moderator
Tham gia ngày
2 Tháng tám 2010
Bài viết
4,349
Được thích
7,628
Điểm
610
Nơi ở
Bình Dương
dear các anh
em có issue thế này :

View attachment 222723

em viết code như sau :

Sub test()
Dim i As Variant
For i = 2 To 4
Cells(i, 4) = Range(Cells(2, 2), Cells(4, 2)).Find(Cells(i, 3))
Next i
End Sub

khi chạy sẽ báo lỗi

e sử dung cột B là range để find
cột C là các data cần find
D là nơi trả về data find được

khi gặp giá trị "d" thì code sẽ báo lỗi

các anh có thể gỡ rối cho em đc ko ạ

thank các anh.
Không tìm thấy giá trị "d" trong vùng tìm kiếm (B2:B4), bạn phải bỏ qua bước bước này, ví dụ:
If not Vùng tìm kiếm.Find( .. ) is nothing then
'Lệnh thực thi
end if
 

tueyennhi

Thành viên tích cực
Tham gia ngày
18 Tháng mười 2010
Bài viết
1,096
Được thích
89
Điểm
420
Tuổi
30
Cho em hỏi phương thức tìm kiếm find có tác dụng với việc tìm kiếm màu đổ trong ô không? Ví dụ em muốn tìm màu mã 255 trong vùng từ B5:B5000 thì phải làm thế nào?
 

Duongvulg

Thành viên mới
Tham gia ngày
1 Tháng sáu 2019
Bài viết
4
Được thích
0
Điểm
13
Tuổi
31
Không tìm thấy giá trị "d" trong vùng tìm kiếm (B2:B4), bạn phải bỏ qua bước bước này, ví dụ:
If not Vùng tìm kiếm.Find( .. ) is nothing then
'Lệnh thực thi
end if
Rất cảm ơn anh LeonguyenZ.

E có them 1 issue nữa
hiện e đang làm code dungf Find để ktra.
đề bài có 15,969 ea số.
Hiện đang có 7,584 ea số. cần kiểm tra xem 7,584 số này có nằm trong 15,969 hay ko.
e dung lenh Find thì mất 5 phút,
Liệu có cách nào rút ngắn thời gian ko ạ.

222743
 

leonguyenz

╠╗╦══╦╔╣
Thành viên BQT
Moderator
Tham gia ngày
2 Tháng tám 2010
Bài viết
4,349
Được thích
7,628
Điểm
610
Nơi ở
Bình Dương
Rất cảm ơn anh LeonguyenZ.

E có them 1 issue nữa
hiện e đang làm code dungf Find để ktra.
đề bài có 15,969 ea số.
Hiện đang có 7,584 ea số. cần kiểm tra xem 7,584 số này có nằm trong 15,969 hay ko.
e dung lenh Find thì mất 5 phút,
Liệu có cách nào rút ngắn thời gian ko ạ.

View attachment 222743
Thời gian ghi lên bảng tính khá lâu, còn phương thức Find thì không ảnh hưởng nhiều tốc độ thực thi code.
Vậy nếu tìm được, nên đưa vào mảng, rồi gán xuống bảng tính.
Có thể bạn phải nghiên cứu thêm về mảng.
 

tueyennhi

Thành viên tích cực
Tham gia ngày
18 Tháng mười 2010
Bài viết
1,096
Được thích
89
Điểm
420
Tuổi
30
Cho em hỏi phương thức tìm kiếm find có tác dụng với việc tìm kiếm màu đổ trong ô không? Ví dụ em muốn tìm màu mã 255 trong vùng từ B5:B5000 thì phải làm thế nào?
Em làm được rồi nhé.

PHP:
Public Sub Tim_o_co_mau()
Application.FindFormat.Interior.Color = 255
Cells.Find(What:="", SearchFormat:=True).Activate
End Sub
 

tieubavuong1986

Thành viên mới
Tham gia ngày
28 Tháng mười một 2014
Bài viết
2
Được thích
0
Điểm
163
Tuổi
33
Kính chào các anh chị !. Em là người không chuyên, chỉ biết vài công thức exel, biết chạy đoạn macro copy về. Em có bài toán này kính mong các anh chị giúp đỡ ạ.
Em có mảng dữ liệu tại Cột B, trong đó gồm nhiều chuỗi ở mỗi cell. Các chuỗi có thể chứa chuỗi dữ liệu tại cột C từ C1:C3 chẳng hạn. Bây giờ em muốn tìm xem dữ liệu ô C1, C2, C3 có nằm chứa trong cột A hay không (nghĩ đến hàm Find). Nếu có thì lấy dữ liệu tương ứng ở cột A. Em có đính file kèm theo. Em nghĩ đến hàm Find nhưng hàm này chỉ giới hạn tìm kiếm trong một Cell. Em thực sự không hiểu nhiều về chuyên môn này, kính mong được giúp đỡ ạ. Trân trọng cảm ơn các anh chị!
 

File đính kèm

Top Bottom