Giúp em Code VBA tính tổng từ ngày đến ngày của từng người (1 người xem)

  • Thread starter Thread starter hitlecp
  • Ngày gửi Ngày gửi
Liên hệ QC

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

hitlecp

Thành viên hoạt động
Tham gia
17/5/10
Bài viết
151
Được thích
14
Chào các Anh/chị!
Nhờ các Anh/chị chỉ giúp em Code, vì dữ liệu rất nhiều theo từng người nếu dùng công thức thì file rất chậm, em làm file 1 vài người để dữ liệu ít upload lên nhờ Anh/chị chỉ giúp.
Khi em nhập từ ngày… đến ngày… thì kết quả là tổng của những ngày này theo từng người. (Em có đính kèm theo file)
Em cám ơn!
 

File đính kèm

Chào các Anh/chị!
Nhờ các Anh/chị chỉ giúp em Code, vì dữ liệu rất nhiều theo từng người nếu dùng công thức thì file rất chậm, em làm file 1 vài người để dữ liệu ít upload lên nhờ Anh/chị chỉ giúp.
Khi em nhập từ ngày… đến ngày… thì kết quả là tổng của những ngày này theo từng người. (Em có đính kèm theo file)
Em cám ơn!
Bạn không nói chi tiết ai biết code thế nào đây.Mà có ngày đâu mà bạn tìm từ ngày đến ngày nhỉ.
 
Chào các Anh/chị!
Nhờ các Anh/chị chỉ giúp em Code, vì dữ liệu rất nhiều theo từng người nếu dùng công thức thì file rất chậm, em làm file 1 vài người để dữ liệu ít upload lên nhờ Anh/chị chỉ giúp.
Khi em nhập từ ngày… đến ngày… thì kết quả là tổng của những ngày này theo từng người. (Em có đính kèm theo file)
Em cám ơn!
Bạn dùng code này thử :
Mã:
Sub a()
Dim arr, sh_arr, res, i As Long, j As Long, k As Long, formdate As Date, todate As Date
arr = Sheets("FAF").Range("b5:L" & Sheets("FAF").Cells(Rows.Count, "b").End(xlUp).Row)
ReDim res(1 To UBound(arr), 1 To UBound(arr, 2) - 1)
fromdate = Sheets("FAF").[c2]: todate = Sheets("FAF").[c3]:
For i = 1 To UBound(arr)
    With Sheets(arr(i, 1))
        sh_arr = .Range("A2:L" & .Cells(Rows.Count, "A").End(xlUp).Row)
        For k = 3 To UBound(sh_arr, 2)
            For j = 1 To UBound(sh_arr)
                If sh_arr(j, 1) >= fromdate And sh_arr(j, 1) <= todate Then
                    res(i, k - 2) = res(i, k - 2) + sh_arr(j, k)
                End If
            Next
        Next
    End With
Next
Sheets("FAF").[c5].Resize(UBound(res), UBound(res, 2)) = res
End Sub
 
Chào các Anh/chị!
Nhờ các Anh/chị chỉ giúp em Code, vì dữ liệu rất nhiều theo từng người nếu dùng công thức thì file rất chậm, em làm file 1 vài người để dữ liệu ít upload lên nhờ Anh/chị chỉ giúp.
Khi em nhập từ ngày… đến ngày… thì kết quả là tổng của những ngày này theo từng người. (Em có đính kèm theo file)
Em cám ơn!
Bạn chuyển thành dạng bảng thao tác cho dễ nha:
Sheet Acc.dungnd đặt tên bảng là DUNG
Sheet Acct.hanhlt đặt tên là HANH
Bên sheet AFF:
Ô C5 công thức:
Mã:
=SUMIFS(DUNG[TM inside],DUNG[[Ngày]:[Ngày]],">=" & DATE(YEAR($C$2),MONTH($C$2),DAY($C$2)),DUNG[[Ngày]:[Ngày]],"<=" & DATE(YEAR($C$3),MONTH($C$3),DAY($C$3)),DUNG[[NVTC]:[NVTC]],$B$5)
ô c6 công thức:
Mã:
=SUMIFS(HANH[TM inside],HANH[[Ngày]:[Ngày]],">=" & DATE(YEAR($C$2),MONTH($C$2),DAY($C$2)),HANH[[Ngày]:[Ngày]],"<=" & DATE(YEAR($C$3),MONTH($C$3),DAY($C$3)),HANH[[NVTC]:[NVTC]],$B$6)
kéo fill qua bên phải
 
Bạn chuyển thành dạng bảng thao tác cho dễ nha:
Sheet Acc.dungnd đặt tên bảng là DUNG
Sheet Acct.hanhlt đặt tên là HANH
Bên sheet AFF:
Ô C5 công thức:
Mã:
=SUMIFS(DUNG[TM inside],DUNG[[Ngày]:[Ngày]],">=" & DATE(YEAR($C$2),MONTH($C$2),DAY($C$2)),DUNG[[Ngày]:[Ngày]],"<=" & DATE(YEAR($C$3),MONTH($C$3),DAY($C$3)),DUNG[[NVTC]:[NVTC]],$B$5)
ô c6 công thức:
Mã:
=SUMIFS(HANH[TM inside],HANH[[Ngày]:[Ngày]],">=" & DATE(YEAR($C$2),MONTH($C$2),DAY($C$2)),HANH[[Ngày]:[Ngày]],"<=" & DATE(YEAR($C$3),MONTH($C$3),DAY($C$3)),HANH[[NVTC]:[NVTC]],$B$6)
kéo fill qua bên phải
Nếu dùng công thức, không dùm sumifs +indirect, làm như bạn lỡ có 1000 cái acc thì sao?
 
Chào các Anh/chị!
Nhờ các Anh/chị chỉ giúp em Code, vì dữ liệu rất nhiều theo từng người nếu dùng công thức thì file rất chậm, em làm file 1 vài người để dữ liệu ít upload lên nhờ Anh/chị chỉ giúp.
Khi em nhập từ ngày… đến ngày… thì kết quả là tổng của những ngày này theo từng người. (Em có đính kèm theo file)
Em cám ơn!
Nếu nhiều sheet thì phải sử dụng VBA gộp sheet, sau đó dùng 1 sheet lọc từ ngày đến ngày và cuối cùng là PivotTable.
 
Chào các Anh/chị!
Nhờ các Anh/chị chỉ giúp em Code, vì dữ liệu rất nhiều theo từng người nếu dùng công thức thì file rất chậm, em làm file 1 vài người để dữ liệu ít upload lên nhờ Anh/chị chỉ giúp.
Khi em nhập từ ngày… đến ngày… thì kết quả là tổng của những ngày này theo từng người. (Em có đính kèm theo file)
Em cám ơn!
Thử xem coi đúng ý không
 

File đính kèm

Thử xem coi đúng ý không
Anh ơi nhờ anh chỉnh lại giúp em Code với ạ. Em thêm các sheet (Inside, Inside Total, CUS, VCB, DAB, BIDV, TPB, Tien mat, Hoan coc, POS) vào nữa thì mã Code này lại lấy kết quả của các sheet này luôn. Nhờ anh chỉnh lại Code kết quả sẽ không lấy những sheet này mà chỉ lấy những sheet của từng người thôi ạ (Anhdv25, Acc.dungnd,...).
Nhờ anh chỉ lại giúp em. Em cám ơn
Bài đã được tự động gộp:

Bạn không nói chi tiết ai biết code thế nào đây.Mà có ngày đâu mà bạn tìm từ ngày đến ngày nhỉ.
Anh ơi nhờ anh chỉnh lại giúp em Code với ạ. Em thêm các sheet (Inside, Inside Total, CUS, VCB, DAB, BIDV, TPB, Tien mat, Hoan coc, POS) vào nữa thì mã Code này lại lấy kết quả của các sheet này luôn. Nhờ anh chỉnh lại Code kết quả sẽ không lấy những sheet này mà chỉ lấy những sheet của từng người thôi ạ (Anhdv25, Acc.dungnd,...).
Nhờ anh chỉ lại giúp em. Em cám ơn
 

File đính kèm

Anh ơi nhờ anh chỉnh lại giúp em Code với ạ. Em thêm các sheet (Inside, Inside Total, CUS, VCB, DAB, BIDV, TPB, Tien mat, Hoan coc, POS) vào nữa thì mã Code này lại lấy kết quả của các sheet này luôn. Nhờ anh chỉnh lại Code kết quả sẽ không lấy những sheet này mà chỉ lấy những sheet của từng người thôi ạ (Anhdv25, Acc.dungnd,...).
Nhờ anh chỉ lại giúp em. Em cám ơn
Bài đã được tự động gộp:


Anh ơi nhờ anh chỉnh lại giúp em Code với ạ. Em thêm các sheet (Inside, Inside Total, CUS, VCB, DAB, BIDV, TPB, Tien mat, Hoan coc, POS) vào nữa thì mã Code này lại lấy kết quả của các sheet này luôn. Nhờ anh chỉnh lại Code kết quả sẽ không lấy những sheet này mà chỉ lấy những sheet của từng người thôi ạ (Anhdv25, Acc.dungnd,...).
Nhờ anh chỉ lại giúp em. Em cám ơn
Sửa code của anh
quanghai1969
1 ít xem đúng không nhé.Bạn có thể thêm tên sheets cần lấy kết quả.Ở câu lệnh này.
Mã:
dk = "#Anhdv25#Acc.dungnd#"
 

File đính kèm

Sửa code của anh
quanghai1969
1 ít xem đúng không nhé.Bạn có thể thêm tên sheets cần lấy kết quả.Ở câu lệnh này.
Mã:
dk = "#Anhdv25#Acc.dungnd#"
Anh ơi, em thử thêm 1 sheet người nữa sao code không chạy anh à. Có cần phải chạy thêm lệnh gì nữa không anh?
 

File đính kèm

Sửa code của anh
quanghai1969
1 ít xem đúng không nhé.Bạn có thể thêm tên sheets cần lấy kết quả.Ở câu lệnh này.
Mã:
dk = "#Anhdv25#Acc.dungnd#"
Anh ơi em thêm rất nhiều sheet tên người nữa nhưng rất dài trong 1 dòng và bị giới hạn làm sao xuống dòng trong lệnh này để thêm tiếp người vậy anh?
Ví dụ như: dk="#Anhdv25#Anhttv26#Anlt11#Antt21#Bichntn#Cuclt4#Dungnt81#Dungptt16#Hanglt16#Hangptn2#Hanntn3#Hoanhv4#Huongltm9#Huongvt28#Huongvt37#Huongvtt23#Huyenvt12#Huynh14#"
 
Anh ơi em thêm rất nhiều sheet tên người nữa nhưng rất dài trong 1 dòng và bị giới hạn làm sao xuống dòng trong lệnh này để thêm tiếp người vậy anh?
Ví dụ như: dk="#Anhdv25#Anhttv26#Anlt11#Antt21#Bichntn#Cuclt4#Dungnt81#Dungptt16#Hanglt16#Hangptn2#Hanntn3#Hoanhv4#Huongltm9#Huongvt28#Huongvt37#Huongvtt23#Huyenvt12#Huynh14#"
Vậy bạn có thể liệt kê các tên sheets cần vào excel rồi gọi vào sử dụng là được.Nếu muốn xuống dòng thì thêm dấu này nhé _
 
Web KT

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

Back
Top Bottom