không tìm kiếm được giá trị đúng trong hàm excel! Mong mọi người giúp đỡ

  • Thread starter quynhpham
  • Ngày gửi
Q

quynhpham

Trung cấp
4/2/09
104
0
16
Nam Thành_Ninh Bình
Em có sổ chi tiết vật tư cho từng mặt hàng, ví dụ em muốn in sổ chi tiết vật tư mặt hàng là máy in canon 2900, mã hàng là 156HH001, phần phát sinh nhập và xuất của tháng 03 từ dòng 107 đến dòng 214 em đã đặt lại công thức theo dòng này mà giá trị tìm kiếm lại ở tháng các tháng trước. Không hiểu lỗi này là như thế nào mọi người giúp em sửa lỗi này với ạ! Em xin cảm ơn! Dưới đây là file của em.
 
Khóa học Quản trị dòng tiền
IChiNoVa

IChiNoVa

Phu cà phê
2/4/05
134
4
18
Sòn Gài
www.xommuaban.vn
File nhìn hoa cả mắt, kết cấu file của mỗi người làm kế toán không giống nhau, mỗi lần 1 ng gửi 1 file lên thì ng đọc phải tìm hiểu lại gần như cả file.
Nên rất khó cho ng khác khi trả lời câu hỏi của bạn. Bạn nên hướng dẫn rõ cho file của bạn: VD bạn đang làm sheet gì, sheet đó lấy dữ liệu từ đâu. công thức nào bị lỗi...
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
611
104
43
68
HCM city
Bạn thử xem có đúng í chưa nha

Lần sau đưa ít trang lên thôi, chỉ những trang cần thiết í!

Lưu í: Có thể chọn tháng tại [f2] trước khi chọn mã hàng để được fục vụ chu đáo hơn!
 
Sửa lần cuối:
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
Có thể giảm thời gian thực thi xuống 5 lần, nếu . . .

Theo fương án trên, macro đi tìm các ngày trong tháng cần tìm & đối chiếu với MHH (mã hàng hóa), nếu trùng mã thì chép lên báo cáo;

Macro dưới đây theo fương cách sau:

Tìm tất tần tật các MHH trùng với mã cần tìm; hễ cái nào trong tháng cần báo cáo thì chép lên báo cáo;

Nội dung macro như sau:

Mã:
Option Explicit
[B]Private Sub Worksheet_Change(ByVal Target As Range)[/B]
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 Dim fDat As Date, lDat As Date, Dat As Date
 Dim Ngay As Byte, jJ As Byte, Offs As Integer, Timer_ As Double
 Dim MyAdd As String

 If  Not Intersect(Target, [G2]) Is Nothing Then
   Timer_ = Timer
   Set Sh = ThisWorkbook.Worksheets("PHATSINH")
   Set Rng = Sh.Range(Sh.[o10], Sh.[o65500].End(xlUp))
   fDat = DateSerial([i2].Value, [G2].Value, 0)
   lDat = DateSerial([i2].Value, 1 + [G2].Value, 1)
   Rows("10:33").Hidden = False
   [a10].Resize(24, 7).ClearContents:              [j10:j33].ClearContents
   Set sRng = Rng.Find([f3].Value, , xlFormulas, xlWhole)
      
   If Not sRng Is Nothing Then
      MyAdd = sRng.Address
      Do
         Dat = sRng.Offset(, -8).Value
         If Dat > fDat And Dat < lDat Then
            With [A33].End(xlUp).Offset(1)
               .Resize(, 2).Value = sRng.Offset(, -9).Resize(, 2).Value
               .Offset(, 2).Value = sRng.Offset(, -1).Value
               Offs = IIf(sRng.Offset(, -10).Value = "PN", 3, 5)
               .Offset(, Offs).Value = sRng.Offset(, 3).Value       'Só Lg'
               .Offset(, 1 + Offs).Value = sRng.Offset(, 7).Value   'TTièn'
               .Offset(, 9).Value = sRng.Row
            End With
         End If
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
   End If
   Offs = [b9].End(xlDown).Row + 3
   If Offs > 33 Then Offs = 12
   Rows(Offs & ":32").Hidden = True
   [L65500].End(xlUp).Offset(1).Value = Timer - Timer_
 End If
[B]End Sub[/B]
 

Xem nhiều