Xin giúp lọc dữ liệu từ cột ngày tháng trong bảng tính - báo cáo tháng (1 người xem)

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

thanhnam20

Thành viên mới
Tham gia
3/5/09
Bài viết
30
Được thích
7
Gửi cả nhà,

hiện tại em gặp trục trặc trong công thức lọc các giá trị thanh toán tiền trong tháng để chốt công nợ với khách hàng theo như file excel mẫu em đính kèm.

Vì mỗi lần filter xong giá trị trong bảng sẽ thay đổi,e cần một hàm để chốt ngày mà khách hàng trả tiền trong tháng để đưa vào báo cáo

cả nhà xem giúp em với nhé.

em cảm ơn
 

File đính kèm

Lần chỉnh sửa cuối:
Gửi cả nhà,
hiện tại em gặp trục trặc trong công thức lọc các giá trị thanh toán tiền trong tháng để chốt công nợ với khách hàng theo như file excel mẫu em đính kèm.
Vì mỗi lần filter xong giá trị trong bảng sẽ thay đổi,e cần một hàm để chốt ngày mà khách hàng trả tiền trong tháng để đưa vào báo cáo
cả nhà xem giúp em với nhé.
em cảm ơn
Chào thanhnam20,

Bạn thử công thức sau nhé.
Mã:
M3559=IF($N$3555>0,SUBTOTAL(5,$C$7:$C$3549),INDEX($R$7:$R$3549,MATCH(1,SUBTOTAL(103,INDIRECT("R7:R"&ROW($R$7:$R$3549))),0)))
Nhớ là nhập công thức xong thì giữ 2 phím ctrl và shift rồi nhấn Enter (đó là công thức mảng).
p/s: Tôi thấy file của bạn có cái Form nhập hoành tráng thế. Sao bạn không làm luôn kiểu vba hết luôn cho hoành tráng luôn. Mà công thức trong sheet "in trong thang TRUOC" cũng hoành tráng luôn.
Chúc bạn ngày vui!
Thân,
 
Chào thanhnam20,

Bạn thử công thức sau nhé.
Mã:
M3559=IF($N$3555>0,SUBTOTAL(5,$C$7:$C$3549),INDEX($R$7:$R$3549,MATCH(1,SUBTOTAL(103,INDIRECT("R7:R"&ROW($R$7:$R$3549))),0)))
Nhớ là nhập công thức xong thì giữ 2 phím ctrl và shift rồi nhấn Enter (đó là công thức mảng).
p/s: Tôi thấy file của bạn có cái Form nhập hoành tráng thế. Sao bạn không làm luôn kiểu vba hết luôn cho hoành tráng luôn. Mà công thức trong sheet "in trong thang TRUOC" cũng hoành tráng luôn.
Chúc bạn ngày vui!
Thân,


Gửi befaint,

cảm ơn bạn đã lập công thức giúp mình, file nhập dữ liệu này có nhiều phần nhỏ, hiện tại chưa hoàn thiện và mình đang làm tới vụ lọc ngày cuối cùng mà khách trả tiền để đối chiếu công nợ.
Về phần công thức mình chưa hiểu lắm nên chưa thể sửa được (do kết quả đạt được nó luôn lấy ngày trên cùng đưa vào ô cần điền). kết quả mình mong muốn là lấy ngày cuối mà khách hàng trả nợ gần nhất. Ví dụ trong tháng khách trả tiền ngày 5, ngày 10, ngày 20/11 thì mình sẽ chốt toàn bộ công nợ đến ngày 20/11 và ô dữ liệu sẽ tự cập nhật ngày 20/11.

Kết quả hiện tại đang xuất ra là ngày 05/11.

Mình cũng đã dùng VBA để tạo bộ lọc, nhưng nó có nhược điểm là mỗi lần lọc thì không ghép được cái phần tính tổng, tính VAT (cái đuôi phía sau), mò chưa ra nên phải làm bằng tay.

Mình cũng muốn làm bộ lọc cho nhiều tháng cùng lúc trong sheet, đính kèm thêm phần đuôi tính tổng, VAT, Nợ phía sau cho mỗi tháng, nhưng đang bị hạn chế về kiến thức. Vì nếu xài bộ lọc của excel thì chỉ lọc được 1 lần, kết hợp vừa lọc excel + VBA thì lọc được nhiều hơn 02 tháng nhưng nó không kẹp thêm phần đuôi phía sau được. và mỗi lần lọc thì công thức nó bị REEF hết, không hiểu tại sao.

File mình có thêm nhược điểm là mỗi lần mở lên các cột STT, ngày, số phiếu...nó bị định dạng là DATE, nên ra dấu #### phải chỉnh tay mất công quá.

các bạn có biết chỉ giúp mình nhé.

mình đính kèm lại file sau khi đã ép công thức, và kết quả mình mong muốn nhận được

https://1drv.ms/x/s!Ak1klnJR3P9egdZ_J-kRlkPW74cQ_w

đây là link, tài khoản mình hết được upload file lên nữa rồi, maximum 1MB :)

mình cảm ơn bạn!
 
Chào thanhnam20,

Do chưa hiểu hết ý của bạn nên công thức trên chưa đạt.
Bạn chép đoạn sau vào một module nào đó (Chuyển qua cái này vì công thức/ hàm mình kém lắm).
PHP:
Function Ngay(rng1 As Range, rng2 As Range) ' // rng1 la vung dieu kien, rng2 la vung can lay ket qua Ngay.
If rng1.Columns.Count > 1 Or rng2.Columns.Count > 1 Then Exit Function
Dim i As Long, j As Long, cll As Range, Arr(), Drr()
ReDim Arr(1 To 65000)
For Each cll In rng1
    If cll.Rows.Hidden = False And cll.Value > 0 Then
        i = i + 1
        Arr(i) = cll.Row
    End If
Next cll
ReDim Preserve Arr(1 To i)
ReDim Drr(1 To UBound(Arr))
For j = 1 To UBound(Arr)
    Drr(j) = 1 * rng2.Cells(Arr(j) - rng2.Cells(1, 1).Row + 1, 1).Value
Next j
Ngay = Application.Max(Drr)
End Function
và dùng công thức sau:
Mã:
M3559=IF($N$3555>0,ngay(N7:N3549,C7:C3549),INDEX($R$7:$R$3549,MATCH(1,SUBTOTAL(103,INDIRECT("R7:R"&ROW($R$7:$R$3549))),0)))
Nhấn ctrl + shift + enter

Còn các vấn đề khác thì bạn tự điều chỉnh (như định dạng Date... thì bạn thiết lập luôn cho cả bảng tính, không phải làm lại lần sau).
 

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

Back
Top Bottom