Lọc ngày tháng

Liên hệ QC

girltocdai

Thành viên mới
Tham gia
8/6/07
Bài viết
4
Được thích
0
E dùng bộ lọc Data Short để lọc ngày tháng nhưng nó chỉ cho e lọc những giá trị nằm trước.VD : 01/05/2007....và 02/02/2007 , 02/05/2007 thì nó chỉ sắ xếp ngày cho e còn tháng thì không được nên tháng 2 vẫn ở sau tháng 5.
Anh chị nào biết chỉ giùm em nghe.E cảm ơn nhiều.
 
girltocdai đã viết:
E dùng bộ lọc Data Short để lọc ngày tháng nhưng nó chỉ cho e lọc những giá trị nằm trước.VD : 01/05/2007....và 02/02/2007 , 02/05/2007 thì nó chỉ sắ xếp ngày cho e còn tháng thì không được nên tháng 2 vẫn ở sau tháng 5.
Anh chị nào biết chỉ giùm em nghe.E cảm ơn nhiều.

Không phải là tháng 2 ở sau tháng 5 đâu bạn à. Do bạn định dạng thôi. Thông thường, mặc định máy tính để định dạng là mm/dd/yyy. Nên lúc bạn gõ ngày trước tháng sau nó sẽ hiểu nhầm là tháng trước ngày sau. Bạn phải sửa lại trong control panel/ regional setting/regional options/customize regional options/date/short date format bạn định dạng lại là dd/mm/yyy thì bạn gõ ngày trước tháng sau.

Have a nice weekend!
SG
 
Thêm cột quý
quy=INT((MONTH(ngay)+2)/3)
Sort theo ngày, dùng autofilter hay advance filter theo tháng hay quy
 
Mình có bài tập làm sổ kế toán, mình trích lọc theo tháng nhưng mình muốn từ trong tháng lại trích theo ngày nhưng ko dùng auto filter được ko, tức là có thêm ô từ ngày và đến ngày đó. mình gửi file các bạn làm giúp với
Còn số dư đầu kỳ thì có cách nào tìm ra theo tháng ko, mình chỉ toàn nhập bằng tay...
 

File đính kèm

  • bai tap.rar
    89 KB · Đọc: 544
Đây là PP lấy sổ cái theo ngày từ NKC
1/ Bạn nên định dạng ngày ghi sổ theo dd/mm/yyyy, nếu đã text thì dùng ham date và thêm cột tạm sau đó paste value lại vào.
2/ Tại I8 của NKC, nhập ct, copy xuống =IF(AND(OR($E8=SOCAI!$E$4,$F8=SOCAI!$E$4),$A8<=SOCAI!$C$6,$A8>=SOCAI!$C$5),1,"")
SOCAI!$C$6: Ngày cuối
SOCAI!$C$5: Ngày đầu
3/ Đặt 1 số name, như file
4/ Dùng hàm match để tìm số 1 trong cột code (I) trong NKC
5/ Dùng index để lấy dữ liệu
6/ Phần số dư đầu kỳ thì dùng sumproduct kết hợp max
Chúc thành công. File mới chỉ làm khoảng 100 dòng và không dùng VBA cũng như Autofilter.
 

File đính kèm

  • bai tap_GPE.rar
    30.1 KB · Đọc: 698
ThuNghi đã viết:
Đây là PP lấy sổ cái theo ngày từ NKC
1/ Bạn nên định dạng ngày ghi sổ theo dd/mm/yyyy, nếu đã text thì dùng ham date và thêm cột tạm sau đó paste value lại vào.
2/ Tại I8 của NKC, nhập ct, copy xuống =IF(AND(OR($E8=SOCAI!$E$4,$F8=SOCAI!$E$4),$A8<=SOCAI!$C$6,$A8>=SOCAI!$C$5),1,"")
SOCAI!$C$6: Ngày cuối
SOCAI!$C$5: Ngày đầu
3/ Đặt 1 số name, như file
4/ Dùng hàm match để tìm số 1 trong cột code (I) trong NKC
5/ Dùng index để lấy dữ liệu
6/ Phần số dư đầu kỳ thì dùng sumproduct kết hợp max
Chúc thành công. File mới chỉ làm khoảng 100 dòng và không dùng VBA cũng như Autofilter.


Nếu muốn thay toàn bộ công thức bằng VBA thì làm sao nhỉ.
Có tiện viết code hộ mình nhỉ.


PS: Bạn đang sử dụng file nào làm báo cáo sổ sách hàng tháng thì cho mình 1 bản nhen (từ A-Z luôn).
 
Code theo file trên.
Sub TaoSoCai()
With Application
.Calculation = xlCalculationManual
.ScreenUpdating = False
.DisplayAlerts = False
End With
Dim iRows As Integer
Dim i As Integer, j As Integer
Dim FiDay As Date, LaDay As Date
Dim SoTK As String

'Xoa du lieu
S03.Range("A11:I1000").ClearContents
FiDay = DateSerial(Year(S03.Cells(5, 3)), Month(S03.Cells(5, 3)), Day(S03.Cells(5, 3)))
LaDay = DateSerial(Year(S03.Cells(6, 3)), Month(S03.Cells(6, 3)), Day(S03.Cells(6, 3)))
SoTK = S03.Cells(4, 5).Value
'MsgBox (SoTK)
S01.Select
'dong cuoi co du lieu
iRows = Cells(6, 2).Value + 7
j = 10
'Gan so lieu
For i = 8 To iRows
If Cells(i, 1).Value >= FiDay And Cells(i, 1).Value <= LaDay Then
If Cells(i, 5).Value = SoTK Or Cells(i, 6).Value = SoTK Then
j = j + 1
With S03
.Cells(j, 1).Value = Cells(i, 1).Value
.Cells(j, 2).Value = Cells(i, 2).Value
.Cells(j, 3).Value = Cells(i, 3).Value
.Cells(j, 4).Value = Cells(i, 4).Value
.Cells(j, 5).Value = IIf(Cells(i, 5).Value = SoTK, Cells(i, 6).Value, Cells(i, 5).Value)
.Cells(j, 6).Value = IIf(Cells(i, 5).Value = SoTK, Cells(i, 7).Value, "")
.Cells(j, 7).Value = IIf(Cells(i, 6).Value = SoTK, Cells(i, 7).Value, "")
End With
End If
End If
Next i
'Dong tong cong
S03.Select
Cells(j + 1, 6).Value = WorksheetFunction.Sum(Range(Cells(11, 6), Cells(j, 6)))
Cells(j + 1, 7).Value = WorksheetFunction.Sum(Range(Cells(11, 7), Cells(j, 7)))
Cells(j + 1, 6).Font.Bold = True
Cells(j + 1, 7).Font.Bold = True
Cells(j + 2, 6).Value = WorksheetFunction.Max(0, Cells(10, 6).Value + Cells(j + 1, 6).Value - Cells(j + 1, 7).Value)
Cells(j + 2, 7).Value = WorksheetFunction.Max(0, Cells(10, 7).Value + Cells(j + 1, 7).Value - Cells(j + 1, 6).Value)
Cells(j + 1, 6).Font.Bold = True
Cells(j + 1, 7).Font.Bold = True
Cells(j + 2, 6).Font.Bold = True
Cells(j + 2, 7).Font.Bold = True

With Application
.Calculation = xlCalculationAutomatic
.ScreenUpdating = True
.DisplayAlerts = True
End With
End Sub
S01: NKC
S03: SoCai
 
ThuNghi đã viết:
Thêm cột quý
quy=INT((MONTH(ngay)+2)/3)
Sort theo ngày, dùng autofilter hay advance filter theo tháng hay quy
Dùng AF thì không cẫn dùng cột phụ đâu. Chỉ cần thay đổi điều kiện lọc là được thôi (tất nhiên là tự động theo quý), phải không bác.
 
Có thể dùng index match và sumproduct để tạo ra danh sách theo ngày, tháng, quý, năm...
 
Cho mình hỏi một tý. Mình có bảng dữ liệu từ cột A1 đến cột C8 trong đó từ cột B1 đến C8 là các ngày tháng. Mình muốn lọc các ngày tháng trùng nhau ra sang một bảng khác với điều kiện dữ liệu tại cột A vẫn dữ nguyên tương ứng với hàng có chứa các ngày trùng nhau đã lọc. Có ai biết giúp mình với.
 
Ai biết lọc ngày tháng giúp mình với (mình có VD đính kèm).
 

File đính kèm

  • Vi du.xls
    24 KB · Đọc: 25
Xem thêm trong file đính kèm nha

Ai biết lọc ngày tháng giúp mình với (mình có VD đính kèm).
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect([c2], Target) Is Nothing Then
 
   Dim Rng As Range, sRng As Range, Clls As Range
   Dim MyAdd As String, dFormat As String
   Dim eRw As Long
 
   eRw = [B6].CurrentRegion.Row:         [A17].Resize(2 * eRw, 4).Clear
   Set Rng = [B6].Resize(eRw, 3)
   Set sRng = Rng.Find([c2].Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      MyAdd = sRng.Address
      Do
         With [a65500].End(xlUp).Offset(1).Resize(, 4)
            .Value = Cells(sRng.Row, "A").Resize(, 4).Value
         End With
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
 End If:                    End If
End Sub
 

File đính kèm

  • GPE.rar
    11.5 KB · Đọc: 73
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect([c2], Target) Is Nothing Then
 
   Dim Rng As Range, sRng As Range, Clls As Range
   Dim MyAdd As String, dFormat As String
   Dim eRw As Long
 
   eRw = [B6].CurrentRegion.Row:         [A17].Resize(2 * eRw, 4).Clear
   Set Rng = [B6].Resize(eRw, 3)
   Set sRng = Rng.Find([c2].Value, , xlFormulas, xlWhole)
   If Not sRng Is Nothing Then
      MyAdd = sRng.Address
      Do
         With [a65500].End(xlUp).Offset(1).Resize(, 4)
            .Value = Cells(sRng.Row, "A").Resize(, 4).Value
         End With
         Set sRng = Rng.FindNext(sRng)
      Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
 End If:                    End If
End Sub
Em nghĩ bài toán này dùng Advanced Filter sẽ dể dàng hơn rất nhiều chứ sư phụ
 
các bạn giúp mình cài công thức cho số dư đầu kỳ với. mình gửi tập tin đính kèm nè,mình dùng sumproduct ma sao không được,mình muốn lấy số dư từ ngày đến ngày
cám ơn nhiều!
mình gửi file đính kèm sao khong dược, chỉ mình với
 
Bạn gõ phần trả lời và đổi sang khung lớn sau đó có phần để tải file đính kèm lên là được mà. Bạn không nói cụ thể thì mọi người không giúp bạn được đâu.
 
Web KT
Back
Top Bottom