Cách lọc giữ liệu theo năm trong file quản lý kho (1 người xem)

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

huytc91

Thành viên mới
Tham gia
28/10/15
Bài viết
19
Được thích
1
Nghề nghiệp
IT helpdesk
Chào các anh chị cao thủ trong diễn đàn!

Em có một file quản lý kho gồm 2 sheet, sheet 1 là bảng báo cáo tài sản theo tháng và theo năm. Sheet 2 là bảng nhật ký xuất nhập tài sản hàng ngày. Vấn đề ở đây là khi sort theo năm thì không thấy ra kết quả (theo tháng thì OK). các dữ liệu xuất nhập vẫn đứng yên, chứng tỏ công thức có vấn đề.
về yêu cầu của file này thì là sheet 1 có bảng tải sản cho trước, sheet 2 có nhiệm vụ nhập xuất dữ liệu hàng ngày, sheet 1 sẽ lấy dữ liệu nhập xuất từ sheet 2 và lọc theo tháng theo năm để báo cáo. Dữ liệu được lọc theo tháng theo năm nhưng vẫn được cộng lũy tiến từ tất cả các năm trước đó. Ví dụ: có năm 2013,2014,2015 thì khi sỏrt năm 2014 thì kết quả nhập xuất là 2013+2014. Có lẽ hơi phức tạp. Vậy mong các anh chị cao thủ trong diễn đàn cao tay giúp em với ạ.
Chi tiết trong file đính kèm đây ạ.
 
Bạn thử trước với các số liệu tồn đầu các kì xem sao?

Cần thiết fải fạt bạn cái tội giả lập không đầy đủ số liệu.
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
 
Chỉnh sửa lần cuối bởi điều hành viên:
Trước hết, XL bạn vì cái giả lập. Do mình mới bước vào môi trường excel nên các công thức còn lủng củng. Quay lại nhìn công thức của bạn thì ngại quá. Các số liệu tồn đầu kỳ theo cách của bạn là như vậy mình thấy rất hay nhưng làm thế nào để sort các số liệu đó theo tháng của các năm đó?
 
Trong file có macro đi kèm với ô chọn năm cần thống kê;

Qui trình là ta có thể chọn tháng bất kỳ nào đó hay mục 'All';
Khi chọn 'All' thì sẽ nhận được tổng kết cả năm đó; Bằng ngược lại chỉ là số liệu tháng đó trong năm.
Bạn xem file hoàn chỉnh hơn ở dưới đây:
(& mình sẽ xóa file trước để thu hồi tài nguyên.)
 

File đính kèm

Cảm ơn bạn nhiều nhé. Mặc dù mình chưa nhìn rõ macro bạn chạy như thế nào.-\\/.-\\/.
 
Chèn thêm cột trong 2 bảng.

Trong file có macro đi kèm với ô chọn năm cần thống kê;

Qui trình là ta có thể chọn tháng bất kỳ nào đó hay mục 'All';
Khi chọn 'All' thì sẽ nhận được tổng kết cả năm đó; Bằng ngược lại chỉ là số liệu tháng đó trong năm.
Bạn xem file hoàn chỉnh hơn ở dưới đây:
(& mình sẽ xóa file trước để thu hồi tài nguyên.)

Bạn ơi. mình muốn chèn thêm một cột tại 2 bảng để ghi nhớ vị trí để ts, sau đó mình sửa code của bạn cho nhưng không chạy được, bạn sửa giúp mình với. Cột mình đã chèn rồi, Bạn sửa giúp mình nhé.
 
Lần chỉnh sửa cuối:
PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [k2]) Is Nothing Then     'K<=|j'
    Dim Sh As Worksheet, CSDL As Range, WF As Object, Cls As Range
    Dim Rws As Long, fDat As Date, lDat As Date, Nam As Integer
    Set Sh = ThisWorkbook.Worksheets("NKNX")
    Rws = Sh.[B4].CurrentRegion.Rows.Count
    Set CSDL = Sh.[B4].Resize(Rws, 9)               '<=|8'
    Set WF = Application.WorksheetFunction
    Nam = 2000 + Target.Value
    If [I2].Value = "All" Then                      '<=|H'
        fDat = DateSerial(Nam, 1, 1)
        lDat = DateSerial(Nam, 12, 31)
    Else
        fDat = DateSerial(Nam, [I2].Value, 1)       '<=|H'
        lDat = DateSerial(Nam, 1 + [I2].Value, 1) - 1   '<=|H'
    End If
    Application.ScreenUpdating = False
    For Each Cls In Range([b7], [b7].End(xlDown))
        With Cls.Offset(, 6)                    '<=|5'
1 'Tình Tòn Truóc Kì:'
            Sh.[aC2].Value = Cls.Value
            Sh.[aa4].Value = #12/9/2012#
            Sh.[aB4].Value = fDat - 1
            .Value = .Offset(, -1).Value + WF.DSum(CSDL, Sh.[I4], Sh.[aa1:ac2]) _
                - WF.DSum(CSDL, Sh.[J4], Sh.[aa1:ac2])          'I<=|H & J<=|I'
2 'Tính Nhap/Xuát Trong Kì:'
            Sh.[aa4].Value = fDat
            Sh.[aB4].Value = lDat
            .Offset(, 1).Value = WF.DSum(CSDL, Sh.[I4], Sh.[aa1:ac2])       'I<=|H'
            .Offset(, 2).Value = WF.DSum(CSDL, Sh.[J4], Sh.[aa1:ac2])       'J<=|i'
        End With
    Next Cls
    Application.ScreenUpdating = True
 End If
End Sub
 
Mình làm đc rồi. Sửa các cột và dk tính đến các cột các hàng là ok bây giờ đến lượt tìm cách lock các vùng ko cần thiết để trách đụng chạm là xong. Hì
 
Bị sai công thức sau khi chỉnh sửa thêm một số liên kết trong sheet

PHP:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, [k2]) Is Nothing Then     'K<=|j'
    Dim Sh As Worksheet, CSDL As Range, WF As Object, Cls As Range
    Dim Rws As Long, fDat As Date, lDat As Date, Nam As Integer
    Set Sh = ThisWorkbook.Worksheets("NKNX")
    Rws = Sh.[B4].CurrentRegion.Rows.Count
    Set CSDL = Sh.[B4].Resize(Rws, 9)               '<=|8'
    Set WF = Application.WorksheetFunction
    Nam = 2000 + Target.Value
    If [I2].Value = "All" Then                      '<=|H'
        fDat = DateSerial(Nam, 1, 1)
        lDat = DateSerial(Nam, 12, 31)
    Else
        fDat = DateSerial(Nam, [I2].Value, 1)       '<=|H'
        lDat = DateSerial(Nam, 1 + [I2].Value, 1) - 1   '<=|H'
    End If
    Application.ScreenUpdating = False
    For Each Cls In Range([b7], [b7].End(xlDown))
        With Cls.Offset(, 6)                    '<=|5'
1 'Tình Tòn Truóc Kì:'
            Sh.[aC2].Value = Cls.Value
            Sh.[aa4].Value = #12/9/2012#
            Sh.[aB4].Value = fDat - 1
            .Value = .Offset(, -1).Value + WF.DSum(CSDL, Sh.[I4], Sh.[aa1:ac2]) _
                - WF.DSum(CSDL, Sh.[J4], Sh.[aa1:ac2])          'I<=|H & J<=|I'
2 'Tính Nhap/Xuát Trong Kì:'
            Sh.[aa4].Value = fDat
            Sh.[aB4].Value = lDat
            .Offset(, 1).Value = WF.DSum(CSDL, Sh.[I4], Sh.[aa1:ac2])       'I<=|H'
            .Offset(, 2).Value = WF.DSum(CSDL, Sh.[J4], Sh.[aa1:ac2])       'J<=|i'
        End With
    Next Cls
    Application.ScreenUpdating = True
 End If
End Sub

Mình cũng đã làm giống theo bạn hướng dẫn OK rồi. Nhưng sau khi mình có liên kết nó thêm một sheet nữa để lấy thông tin tài sản từ sheet này có tên là HD TTTS, và một số liên kết nhỏ nữa từ NKNX!, sơ đồ kho!. xong quay lại thấy bảng NXT! bị nhảy lung tung phần SL nhập, SL xuất. không lấy dữ liệu của TDK, Nói chung là tớ bị loạn mất rồi, ngồi tìm hiểu tận 2 ngày mà không ra nổi. &&&%$R. Nhờ bạn chỉnh sửa lại giúp mình với. Sau đó bạn dùng code lock cho mình. Bảng XNT! thì lock all trừ phần chọn tháng, năm, nội dung của ghi chú. Bảng NKNX! thì lock cho mình phần STT, Tên tài sản, model, loại, vị trí.
Giúp mình với nhé. Cảm ơn HYen17 nhiều!
https://drive.google.com/file/d/0B7C3edouBZuEQ3Zid2ZOVUN2MGs/view?usp=sharing
 
Lần chỉnh sửa cuối:
Mình làm giống bạn hướng dẫn OK rồi.
Nhưng sau khi mình có liên kết nó thêm một sheet nữa để lấy thông tin tài sản từ sheet này có tên là HD TTTS, và một số liên kết nhỏ nữa từ NKNX!, sơ đồ kho!. xong quay lại thấy bảng NXT! bị nhảy lung tung phần SL nhập, SL xuất. không lấy dữ liệu của TDK, Nói chung là tớ bị loạn mất rồi,
. . . . . .

Bạn nên tìm cách đưa file lên diễn đàn; Máy mình cà tèng, không thể lấy file nơi khác được suông sẻ.

Bạn có đổi cấu trúc ở 2 trang tính liên quan thì mới lộn tùng fèo kết quả như thế.

1: Bạn cô gọn & đưa file lên diễn đàn;

2: Mổ tả những thay đổi của bạn thiệt kỹ lưỡng!

Tạm biệt!
 
Bạn nên tìm cách đưa file lên diễn đàn; Máy mình cà tèng, không thể lấy file nơi khác được suông sẻ.

Bạn có đổi cấu trúc ở 2 trang tính liên quan thì mới lộn tùng fèo kết quả như thế.

1: Bạn cô gọn & đưa file lên diễn đàn;

2: Mổ tả những thay đổi của bạn thiệt kỹ lưỡng!

Tạm biệt!

Do mình thả mấy cái ảnh tài sản vào nên nó hơi nặng. Mình đã kéo nó ra và up cho bạn xem. Bạn giúp mình với nhé.
 

File đính kèm

Do mình thả mấy cái ảnh tài sản vào nên nó hơi nặng. Mình đã kéo nó ra và up cho bạn xem. Bạn giúp mình với nhé.

1/ Hạn chế dùng công thức sẵn cho hàng ngàn dòng khi không xài hết, cần bi nhiêu xài bấy nhiêu thôi.
2/ Đã "chơi" code thì code luôn, "nửa nạc nửa mỡ" làm gì?
Nhập tháng, Năm, Bấm nút và Xem kết quả trong sheet NXT nhé.
Vì không chuyên ngành nên hiểu sao làm vậy, có sai thì "la lên" và nói rõ sai chỗ nào, kết quả đúng là bi nhiêu?...
 

File đính kèm

Nhờ vả thêm vài thứ

1/ Hạn chế dùng công thức sẵn cho hàng ngàn dòng khi không xài hết, cần bi nhiêu xài bấy nhiêu thôi.
2/ Đã "chơi" code thì code luôn, "nửa nạc nửa mỡ" làm gì?
Nhập tháng, Năm, Bấm nút và Xem kết quả trong sheet NXT nhé.
Vì không chuyên ngành nên hiểu sao làm vậy, có sai thì "la lên" và nói rõ sai chỗ nào, kết quả đúng là bi nhiêu?...

Hì hì... Mình dốt về code nên toàn đi đốt công thức.
Cảm ơn bạn đã giúp mình rút ngắn đồ loàng ngoàng. code bạn viết mình xem thấy không sai chỗ nào cả (tồn đầu kỳ + tồn trước kỳ + nhập - xuất theo điều kiện ra sl tồn) chỉ có điều trong phần chọn tháng có một mục all tức là chọn cả năm đó bạn chưa đưa ra được.
mình có một vài ý tưởng thêm cho cái file này và muốn đưa ra cho bạn giúp. Cái mình muốn mình có notes trong đó rồi.
Cảm ơn bạn trước nhé!
 

File đính kèm

Bạn muốn lọc theo từng năm số dư đầu + phát sinh + số dư cuối của từng năm hay từng tháng.
Cái này dân kế toán có thể dùng công thức.
Chỉ cần bạn định nghia được số dư đầu kỳ sau= cái gì.
Từ đấy mình tin chắc trên diễn đàn này sẽ cho bạn nhiều công thức để làm.
Ko cần phải dùng code đâu.
 
Để làm được từng tháng. Chọn cả năm chỉ cần 1 hàm sum thôi.
 
Bạn muốn lọc theo từng năm số dư đầu + phát sinh + số dư cuối của từng năm hay từng tháng.
Cái này dân kế toán có thể dùng công thức.
Chỉ cần bạn định nghia được số dư đầu kỳ sau= cái gì.
Từ đấy mình tin chắc trên diễn đàn này sẽ cho bạn nhiều công thức để làm.
Ko cần phải dùng code đâu.
1. Mình muốn lọc theo năm, theo tháng, theo cả năm đó để lấy ra số lượng nhập xuất, tồn trước kỳ(tức là tồn từ tháng trước của tháng lọc trở về trước), số lượng tồn.
2. Số dư kỳ sau nó bằng tồn đầu kỳ + tồn trước kỳ + nhập - xuất.
3. Không biết cách nào sẽ tốt hơn.
 
Code hay công thức không quan trọng. Cái quan trọng các bạn nhiệt tình với mình là mình vui rồi.
 
[/B]Cái này lẽ ra bạn phải thiết kế 2 ô ngày để chọn là từ ngày tới ngày thì sẽ hay hơn. Ví dụ ta chọn từ ngày 1/1/15 -> 31/1/15: thì xem như tháng 1 năm 2015. Nếu chọn từ 1/1/15 -> 31/12/2015 thì là cả năm rồi. Một lựa chọn nhưng có lợi cho ta xem được từ thời gian tới thời gian ta muốn...


[/B]
Dù làm gì cũng lường trước. Giờ họ giúp bạn như vậy, mỗi ngày bạn nãy ra 1 ý tưởng. Rồi lại up lên, nhờ người khác chỉnh lại code... Cứ hoài như vậy thì biết bao giờ xong... và người giúp sẽ không kiên nhẫn để làm cho bạn đến cuối con đường đâu...

Vì vậy, Muốn làm gì phải ý tưởng ngay từ đầu. Yêu cầu làm 1 lèo cho xong...Vài lời góp ý!

Hì. ý tưởng của mình đến đây là hồi kết rồi. Mình cũng thấy áy láy khi chưa hoàn thành ý tưởng mà đã la đi hỏi rồi. Cái mục chọn ngày của bạn hợp ly đấy. Giúp mình thực hiện được không?
 
Hì. ý tưởng của mình đến đây là hồi kết rồi. Mình cũng thấy áy láy khi chưa hoàn thành ý tưởng mà đã la đi hỏi rồi. Cái mục chọn ngày của bạn hợp ly đấy. Giúp mình thực hiện được không?

Chỉnh lại 1 chút từ bài trên (#12), nếu muốn xài công thức thì chờ tác giả bài #16 giúp.
Chưa kiểm tra, nếu có sai thì "la tiếp".
----------
Muốn tìm tên thì dùng Filter.
Muốn khóa thì tự khóa, viết bài trên GPE mà khóa "uổng công".
 

File đính kèm

Lần chỉnh sửa cuối:

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

Back
Top Bottom