Xin chỉ cách lập công thức tính cho bài tập.

Liên hệ QC
Status
Không mở trả lời sau này.

thanhtrungpsa

Thành viên mới
Tham gia
10/5/10
Bài viết
13
Được thích
0
Chào các bạn, mình đang lập một báo cáo kho theo kỳ (có thể theo tuần, hoặc bất cứ khoảng thời gian nào sếp muốn) nhưng loay hoay mãi mà không được. Mình xin mạn phép đưa file lên nhờ các bác giúp đỡ.
Xin chân thành cảm ơn!
 

File đính kèm

Chào các bạn, mình đang lập một báo cáo kho theo kỳ (có thể theo tuần, hoặc bất cứ khoảng thời gian nào sếp muốn) nhưng loay hoay mãi mà không được. Mình xin mạn phép đưa file lên nhờ các bác giúp đỡ.
Xin chân thành cảm ơn!
Dữ liệu của bạn ngộ thiệt.
1/ Thường thì người ta tổng theo Mã hàng, đàng này mã hàng lại có số 0 cho nhiều tên hàng.
2/ Tính tổng theo tên hàng thì có bảo đảm tên hàng nhập hoàn toàn chính xác như nhau không? khác nhau 1 khoảng cách coi như khác nhau rồi.
3/ Yêu cầu nói theo vùng tô màu mà chẳng thấy ô nào có màu.
4/ Làm bằng công thức cũng được nhưng oải lắm, làm bằng VBA được không?
Nếu được thì xem file này, Enable Macros khi mở file, Nhập từ ngày đến ngày trong B3 và B4, Bấm nút <GPE> sẽ có số liệu trong cột E,F
5/ Số liệu trong các cột khác (Tồn đầu kỳ, Cuối kỳ) code không đụng tới.
[GPECODE=vb]Public Sub QuaiChieu()
Dim Dic As Object, sArr(), dArr(), Ngay(), I As Long, K As Long, Tem As String, Ngay1 As Long, Ngay2 As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheet1
sArr = .Range(.[B7], .[B65536].End(xlUp)).Value2
Ngay1 = .[B3].Value2
Ngay2 = .[B4].Value2
End With
ReDim dArr(1 To UBound(sArr, 1), 1 To 2)
For I = 1 To UBound(sArr, 1)
K = K + 1
Tem = UCase(sArr(I, 1))
If Not Dic.Exists(Tem) Then Dic.Add Tem, K
Next I
With Sheet2
Ngay = .Range(.[A4], .[A65536].End(xlUp)).Value2
sArr = .Range(.[F4], .[F65536].End(xlUp)).Resize(, 3).Value2
End With
For I = 1 To UBound(sArr, 1)
If Ngay(I, 1) >= Ngay1 And Ngay(I, 1) <= Ngay2 Then
Tem = UCase(sArr(I, 1))
If Dic.Exists(Tem) Then
dArr(Dic.Item(Tem), 1) = dArr(Dic.Item(Tem), 1) + sArr(I, 2)
dArr(Dic.Item(Tem), 2) = dArr(Dic.Item(Tem), 2) + sArr(I, 3)
End If
End If
Next I
Sheet1.[E7:F7].Resize(K) = dArr
Set Dic = Nothing
End Sub[/GPECODE]
 

File đính kèm

Bạn thử công thức sau nhé:
Ô E7: =SUMIFS(Sheet2!$G$4:$G$1000,Sheet2!$F$4:$F$1000,$B7,Sheet2!$A$4:$A$1000,">="&$B$3,Sheet2!$A$4:$A$1000,"<="&$B$4)
Ô F7: =SUMIFS(Sheet2!$H$4:$H$1000,Sheet2!$F$4:$F$1000,$B7,Sheet2!$A$4:$A$1000,">="&$B$3,Sheet2!$A$4:$A$1000,"<="&$B$4)
Mình chọn tham chiếu tới "1000" để sau này có nhập thêm thì không phải sửa công thức. Bạn có thể chỉnh lại nếu thấy không cần thiết.
Bạn copy xuống dưới nhé.
Theo mình bạn nên tạo hết mã hàng và dò theo mã hàng vì dò theo tên hàng rất dễ sai sót.
 
Sao bạn không đặt mã cho tất cả các mặt hàng nhỉ?
 

File đính kèm

Bạn thử công thức sau nhé:
Ô E7: =SUMIFS(Sheet2!$G$4:$G$1000,Sheet2!$F$4:$F$1000,$B7,Sheet2!$A$4:$A$1000,">="&$B$3,Sheet2!$A$4:$A$1000,"<="&$B$4)
Ô F7: =SUMIFS(Sheet2!$H$4:$H$1000,Sheet2!$F$4:$F$1000,$B7,Sheet2!$A$4:$A$1000,">="&$B$3,Sheet2!$A$4:$A$1000,"<="&$B$4)
Mình chọn tham chiếu tới "1000" để sau này có nhập thêm thì không phải sửa công thức. Bạn có thể chỉnh lại nếu thấy không cần thiết.
Bạn copy xuống dưới nhé.
Theo mình bạn nên tạo hết mã hàng và dò theo mã hàng vì dò theo tên hàng rất dễ sai sót.
File của "khổ chủ" là .xls, bạn xài SUMIFS của 2007 về sau coi chừng người ta bị "tẩu hỏa nhập hồ bơi" đó.
 
Status
Không mở trả lời sau này.
Web KT

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

Back
Top Bottom