Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [l3]) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range
Dim Jj As Byte, MyAdd As String, Format_ As String, Dat As Date
Set Sh = Sheet1: Set Rng = Sh.Range(Sh.[b4], Sh.[b65500].End(xlUp))
Format_ = Rng.NumberFormat: Rng.NumberFormat = "MM/DD/yyyy"
[b6].Resize(Rng.Rows.Count, 13).ClearContents
For Jj = 0 To 4
Dat = Jj + [l3].Value
Set sRng = Rng.Find(Format(Dat, "mm/DD/yyyy"), , xlFormulas, xlWhole)
If sRng Is Nothing Then
MsgBox "Nothing", , Dat
Else
MyAdd = sRng.Address
Do
[b65500].End(xlUp).Offset(1).Resize(, 13).Value = sRng.Resize(, 13).Value
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
Next Jj
[b6].Resize(Rng.Rows.Count).NumberFormat = "DD/mm/YYYY"
Rng.NumberFormat = "dd/mm/yyyy"
End If
End Sub
Lời đầu tiên mình cũng xin cám ơn bạn đã nhiệt tình giúp đỡ . Nhưng ý của mình là thế này :Chưa chắc lắm nên mình viết cho bạn macro lọc trong vòng 5 ngày kể từ ngay bạn nhập vô [L3]
PHP:Option Explicit Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, [l3]) Is Nothing Then Dim Sh As Worksheet, Rng As Range, sRng As Range Dim Jj As Byte, MyAdd As String, Format_ As String, Dat As Date Set Sh = Sheet1: Set Rng = Sh.Range(Sh.[b4], Sh.[b65500].End(xlUp)) Format_ = Rng.NumberFormat: Rng.NumberFormat = "MM/DD/yyyy" [b6].Resize(Rng.Rows.Count, 13).ClearContents For Jj = 0 To 4 Dat = Jj + [l3].Value Set sRng = Rng.Find(Format(Dat, "mm/DD/yyyy"), , xlFormulas, xlWhole) If sRng Is Nothing Then MsgBox "Nothing", , Dat Else MyAdd = sRng.Address Do [b65500].End(xlUp).Offset(1).Resize(, 13).Value = sRng.Resize(, 13).Value Set sRng = Rng.FindNext(sRng) Loop While Not sRng Is Nothing And sRng.Address <> MyAdd End If Next Jj [b6].Resize(Rng.Rows.Count).NumberFormat = "DD/mm/YYYY" Rng.NumberFormat = "dd/mm/yyyy" End If End Sub
Coi thêm trong file & . . . . viết cho rõ hơn, nếu mình nghĩ chưa đúng í bạn.
cách đơn giản nhất Bạn tạo thêm 1 cột phụ bên sheet 1 sau đó dùng hàm VLOOKUP bên sheet 2 để lọc.Lời đầu tiên mình cũng xin cám ơn bạn đã nhiệt tình giúp đỡ . Nhưng ý của mình là thế này :
VD: Mình sẽ có 2 cột để nhập dữ liệu ngày vào như từ 23/11/2009 - 25/11/2009 thì phần dữ liệu sẽ lọc ra toàn bộ danh sách KH trong khoảng thời gian trên
Trân trọng !
Bạn có thể cho mình một mẫu ví dụ cụ thể không ạ ! Hoặc công thức để mình xem nha bạn .cách đơn giản nhất Bạn tạo thêm 1 cột phụ bên sheet 1 sau đó dùng hàm VLOOKUP bên sheet 2 để lọc.
Có thể là như thế nàyCác bạn vui lòng hướng dẫn mình cách lọc dữ liệu từ ngày A-B ạ!
Mình đã phân chia 2 sheet trong file Data đính kèm .
Sheet 1: DSKH tổng hợp
Sheet 2: DSKH theo dõi
Mình muốn từ sheet 2 xem số lượng KH ở sheet 1 từ ngày A- B
Trân trọng !
Private Sub CommandButton1_Click()
Dim Vung As Range, Ws As Worksheet
Range([a6], [a6].End(xlDown).Offset(1)).Resize(, 15).Clear
Set Ws = Sheets("DSKH tonghop")
Set Vung = Ws.Range(Ws.[b4], Ws.[b5000].End(xlUp))
With Vung
.Offset(0, -1).Resize(, 15).AutoFilter Field:=2, Criteria1:=">=" & Range("dau"), Criteria2:="<=" & Range("cuoi")
.Offset(1, -1).Resize(, 15).SpecialCells(12).Copy [a6]
.AutoFilter
End With
Range([b6], [b6].End(xlDown)).Offset(0, -1) = [row(A:A)]
End Sub
Bài này có thể dùng Pivot. Nhưng Tôi chưa rành về nó, để cho các cao thủ về pivot làm giúp nhé!Bạn có thể cho mình một mẫu ví dụ cụ thể không ạ ! Hoặc công thức để mình xem nha bạn .
Mình xin cám ơn bạn
(1) Nhưng ý của mình là thế này :
VD: Mình sẽ có 2 cột để nhập dữ liệu ngày vào như từ 23/11/2009 - 25/11/2009 thì phần dữ liệu sẽ lọc ra toàn bộ danh sách KH trong khoảng thời gian trên
Trân trọng !
(1) Sao cái í này không viết rõ ngay từ đầu, mà lúc đó lại viết "từ A - B"; Viết như vậy là bạn khiếm nhã đó nghe!
(2) Cứ cho rằng ngày đầu bạn cần thống kê sẽ fải nhập vô [L3]; vậy ngày cuối bạn hay chúng tôi cần nhập vô đâu vậy? (Cái ngày mà trong ví dụ bạn viết là 25/11/2009 đó)
(3) Bạn nên xài kiểu dữ liệu ngày tháng theo bọn Mẽo 'mm/DDyyyy" , nhưng ta định dạng để xem như là 1 ngày kiểu Fáp "DD/mm/yyyy"
(4) Tên trang tính không nên chứa khoảng trống & không nên xài tiếng Việt có dấu & dừng quá lê thê như bạn đang xài;
(5) Cái này sẽ là nặng lời với bạn: Để nhận được trả lời nhanh & chính xác, bạn cần mô tả thuần thục & trong sáng để mọi người hiểu, chứ bạn không nên viết theo cách hiểu của bạn.
Bạn chưa biết tiết kiệm thời gian của bạn & của Cộng đồng.
"Trân trọng!" có vẻ như khó gần nhau quá đi mất!
Các bạn vui lòng hướng dẫn mình cách lọc dữ liệu từ ngày A-B ạ!
Mình đã phân chia 2 sheet trong file Data đính kèm .
Sheet 1: DSKH tổng hợp
Sheet 2: DSKH theo dõi
Mình muốn từ sheet 2 xem số lượng KH ở sheet 1 từ ngày A- B
Trân trọng !
Có thể là như thế này
Hy vọng trúngMã:Private Sub CommandButton1_Click() Dim Vung As Range, Ws As Worksheet Range([a6], [a6].End(xlDown).Offset(1)).Resize(, 15).Clear Set Ws = Sheets("DSKH tonghop") Set Vung = Ws.Range(Ws.[b4], Ws.[b5000].End(xlUp)) With Vung .Offset(0, -1).Resize(, 15).AutoFilter Field:=2, Criteria1:=">=" & Range("dau"), Criteria2:="<=" & Range("cuoi") .Offset(1, -1).Resize(, 15).SpecialCells(12).Copy [a6] .AutoFilter End With Range([b6], [b6].End(xlDown)).Offset(0, -1) = [row(A:A)] End Sub
Bạn ơi khi mình cập nhật thông tin đến ngày 1/12/2009 thì có hiện tượng báo lỗi bạn à. Mình đã chỉnh hệ thống ngày tháng giống như mục ngày tháng ở phần Lọc rồi ạ !
Mong bạn hỗ trợ giúp mình .