Nhờ sửa code tìm số hóa đơn, code phương thức Find (1 người xem)

Liên hệ QC

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

AnhThu-1976

Thành viên tích cực
Tham gia
17/10/14
Bài viết
1,063
Được thích
175
Em có sưu tầm 1 code để tìm giống như hàm VLOOKUP
Tuy nhiên khi áp dụng thì nó không ra kết quả,
Nhờ các anh tìm giúp chỗ sai
em muốn giống như kết quả ở cột F
Em cảm ơn!
Mã:
Sub TimSoHD()
    Dim i As Long
    Dim arrRes, arrSrc
    Dim n1 As Range, rTmp As Range
    With ActiveSheet
        arrSrc = .Range(.[B9], .[B65536].End(3)).Resize(, 5).Value
    End With


    With Sheets("KQ")
        Set n1 = .Range(.[T9], .[T500].End(3))
    End With


    ReDim arrRes(1 To UBound(arrSrc, 1), 1 To 1)
    For i = 1 To UBound(arrSrc, 1)
        Set rTmp = n1.Find(arrSrc(i, 1), , xlValues, xlWhole)
        If Not rTmp Is Nothing Then
            If arrSrc(i, 1) <> "" Then


                arrRes(i, 1) = rTmp.Offset(, 1)


            End If
        End If
    Next i
    ActiveSheet.Range("F9").Resize(UBound(arrRes, 1)).Value = arrRes
End Sub
 

File đính kèm

Lần chỉnh sửa cuối:
Xin lỗi, em đã đưa file ở bài #1 sai, xin tải bài ở đây
 

File đính kèm

Upvote 0
Em đã tìm ra nguyên nhân code không chạy
VÌ DÒ TÌM THEO NGÀY NÊN NÓ KHÔNG CHẠY?!? KHÔNG HIỂU LUÔN
Giả sử ta thay ngày 01/01/2017 ở cột B và T là chữ "A"
Tương tự thay ngày 02/01/2017 ở cột B và T là chữ "B"
Xem file đính kèm
............
Nếu thay như trên thì nó ra kết quả
Vậy các anh chị hướng dẫn em đổi code để nó chạy ra kết quả
Em cảm ơn
 

File đính kèm

Upvote 0
Sửa
Mã:
Set rTmp = n1.Find(arrSrc(i, 1), , xlValues, xlWhole)
Thành
Mã:
Set rTmp = n1.Find(CDate(arrSrc(i, 1)), , xlFormulas, xlWhole)
 
Upvote 0
Với fương thức FIND() giá trị là ngày/tháng/năm thì nhất thiết/nên:

(1) Định dạng vùng (fải đi) tìm có dạng "MM/DD/YYYY"

(2) Trị đi tìm cũng fải được định dạng như vậy;

(Thấy 1 số không ít file của bạn đưa lên diễn đàn thường là dạng 'DD/MM/yyyy' (điều này là không bình thường với fương thức FIND() này!)

Cái này do xung đột giữa thói quen xài kiểu dữ liệu Ngày-Tháng-Năm theo hệ Fáp & hệ Mẽo.

Theo mình nên nhập là MM/dd/yyyy & định dạng dd/mm/yy cho dễ nhìn!

Bạn nghĩ sao về vấn đề này?
 
Upvote 0
Với fương thức FIND() giá trị là ngày/tháng/năm thì nhất thiết/nên:

(1) Định dạng vùng (fải đi) tìm có dạng "MM/DD/YYYY"

(2) Trị đi tìm cũng fải được định dạng như vậy;
Ở bài #2 em định dạng đúng như vậy. nhưng nó không cho kết quả
Em cảm ơn anh/chị đã giúp đỡ
 
Upvote 0
Upvote 0
Mã:
Option Explicit

Sub TimSoHD()

 Dim I As Long

 Dim rArr, sArr, N1 As Range, rTmp As Range

1 Dim MyFormat As String


 With ActiveSheet

    sArr = .Range(.[B9], .[B65536].End(3)).Resize(, 5).Value

 End With

 With Sheets("KQ")

    Set N1 = .Range(.[T9], .[T500].End(3))

    MyFormat = N1.NumberFormat

2    N1.NumberFormat = "mm/dd/yyyy"              '*'

 End With

 ReDim rArr(1 To UBound(sArr, 1), 1 To 1)

 For I = 1 To UBound(sArr, 1)

3    Set rTmp = N1.Find(Format(sArr(I, 1), "MM/dd/yyyy"), , xlValues, xlWhole)

    If Not rTmp Is Nothing Then

        If sArr(I, 1) <> "" Then

            rArr(I, 1) = rTmp.Offset(, 1)

        End If

    End If

 Next I

 ActiveSheet.Range("F9").Resize(UBound(rArr, 1)).Value = rArr

4 N1.NumberFormat = MyFormat

End Sub
 
Upvote 0
Gán một cell khác bằng với cell dò tìm và định dạng mm/dd/yy. Sau đó dò tìm dựa vào cell định dạng mm/dd/yy là được.
 
Upvote 0
Web KT

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

Back
Top Bottom