luan151288
Thành viên mới
- Tham gia
- 1/6/20
- Bài viết
- 2
- Được thích
- 0
Lấy file làm tay mà gửi đi bạn. Cái của bạn có dùng addin mà người khác không dùng nên không đọc được.Tình hình là em làm file excel như thế, nhưng khi làm báo cáo tổng xuất nhập tồn thì file trở nên quá nặng. tất cả trong báo cáo e đều phải dùng sumifs thì bộ file phình to không kiểm soát đc.
file E đã loại bỏ hết các add in, vấn đề của e là bảng báo cáo xuất nhập tồn lại quá nặng, nảy sinh vấn đề về tốc độ nhập liệu mới. đây chỉ mới là dữ liệu 1 ngày, nhưng e phải giải quyết vấn đề cho 1 tháng, sheet QL_KHO của e trong 1 tháng tầm 20.000 dòngLấy file làm tay mà gửi đi bạn. Cái của bạn có dùng addin mà người khác không dùng nên không đọc được.
---
Có lẽ sửa tiêu đề "thay sumifs bằng code" phù hợp hơn
Bạn nên sửa lại tiêu đề cho phù hợp, không thì sẽ bị xóa bài đấy.file E đã loại bỏ hết các add in, vấn đề của e là bảng báo cáo xuất nhập tồn lại quá nặng, nảy sinh vấn đề về tốc độ nhập liệu mới. đây chỉ mới là dữ liệu 1 ngày, nhưng e phải giải quyết vấn đề cho 1 tháng, sheet QL_KHO của e trong 1 tháng tầm 20.000 dòng
Bạn thử code nàyfile E đã loại bỏ hết các add in, vấn đề của e là bảng báo cáo xuất nhập tồn lại quá nặng, nảy sinh vấn đề về tốc độ nhập liệu mới. đây chỉ mới là dữ liệu 1 ngày, nhưng e phải giải quyết vấn đề cho 1 tháng, sheet QL_KHO của e trong 1 tháng tầm 20.000 dòng
Sub baocao_Xuat_Nhap_Ton()
Dim Kho, Mh, Nv
Dim tam
Dim GtNhap, SlNhap, SlXuat, SlHuy
Dim dau, cuoi, tenkho
Dim rws, i, j, k
With Sheet3
rws = .Range("B" & Rows.Count).End(xlUp).Row
Kho = .Range("B4:L" & rws)
rws = UBound(Kho)
End With
With Sheet6
dau = .Range("D3")
cuoi = .Range("F3")
tenkho = .Range("D4")
Mh = .Range("A7", Sheet6.Range("A7").End(xlDown))
End With
Nv = Array("Nh" & ChrW(7853) & "p", "Xu" & ChrW(7845) & "t", "H" & ChrW(7911) & "y")
With CreateObject("Scripting.Dictionary")
For i = 1 To rws
If Kho(i, 1) >= dau And Kho(i, 1) <= cuoi And Kho(i, 6) = tenkho Then
If .exists(Kho(i, 2)) = 0 Then
ReDim tam(5)
For j = 0 To 2
If Kho(i, 8) = Nv(j) Then
tam(j) = Kho(i, 9)
tam(j + 3) = Kho(i, 11)
.Add Kho(i, 2), tam
Exit For
End If
Next j
Else
tam = .Item(Kho(i, 2))
For j = 0 To 2
If Kho(i, 8) = Nv(j) Then
tam(j) = tam(j) + Kho(i, 9)
tam(j + 3) = tam(j + 3) + Kho(i, 11)
.Item(Kho(i, 2)) = tam
Exit For
End If
Next j
End If
End If
Next i
rws = UBound(Mh)
ReDim GtNhap(1 To rws, 1 To 1)
ReDim SlNhap(1 To rws, 1 To 1)
ReDim SlXuat(1 To rws, 1 To 1)
ReDim SlHuy(1 To rws, 1 To 1)
For i = 1 To rws
If .exists(Mh(i, 1)) Then
tam = .Item(Mh(i, 1))
GtNhap(i, 1) = tam(3)
SlNhap(i, 1) = tam(0)
SlXuat(i, 1) = tam(1)
SlHuy(i, 1) = tam(2)
End If
Next i
End With
With Sheet6
.Range("C7").Resize(rws, 1) = GtNhap
.Range("F7").Resize(rws, 1) = SlNhap
.Range("G7").Resize(rws, 1) = SlXuat
.Range("H7").Resize(rws, 1) = SlHuy
End With
End Sub