Trị giá hàng tồn được tính theo
giá bình quân liên hoàn
Với cách tính này, mỗi lần nhập hàng sẽ tính lại đơn giá cho lần xuất kế tiếp
Ta sẽ đi từ việc thiết lập các công thức tính toán từ dễ đến khó.
Giả sử ta có 2 Sheet :
Sheet DMMH có chứa mã MH và các số dư đầu kỳ. Tại Sheet này ta đặt 3 tên :
- TonMaMH cho cột chứa Mã MH,
- TonDauTG cho trị giá tồn đầu kỳ
- TonDauSL cho số lượng tồn đầu kỳ
Sheet thứ 2 là Sheet NhapXuatHH, Sheet này dùng để nhập các dữ liệu về Nhập
Xuất HH phát sinh trong tháng
Tại Sheet này ta có các cột sau : Cột C là Mã MH, cột D là Số Lượng Nhap, cột E
là TGNhap, cột F là SLXuat, cột G là TGXuat, cột H tính đơn giá vốn
Tại Cell đầu tiên tính đơn giá vốn, Cell H5, ta có công thức sau :
=IF(OR($C5="",SUMIF(TonMaMH,$C5,TonDauTG)=0),0,SUM
IF(TonMaMH,$C5,TonDauTG)/SUMIF(TonMaMH,$C5,TonDauSL))
Bắt đầu Cell H6, công thức sẽ trở thành :
=IF(C6="",0,(SUMIF(TonMaMH,C6,TonDauTG)+SUMPRODUCT
(($C$5:C5=C6)*($E$5:E5-
$G$5:G5)))/(SUMIF(TonMaMH,C6,TonDauSL)+SUMPRODUCT(($C$5:C5=C6
)*($D$5:D5-$F$5:F5))))
Một cách khác để rút gọn công thức là đặt tên cho từng đoạn công thức nhu sau :
Bạn đặt con trỏ ngay tại Cell H5 , rồi vào Insert / Name/ Define
Đặt tên cho các công thức sau :
SLDuDau = SUMPRODUCT((TonMaMH=NhapXuatHH!$C5)*TonDauSL)
TGDuDau = SUMPRODUCT((TonMaMH=NhapXuatHH!$C5)*TonDauTG)
Công thức trong Cell H5 sẽ trở thành :
=IF(OR(H5="",SLDuDau=0),0,TGDuDau/SLDuDau)
Bây giờ, ta đặt con trỏ tại Cell H6, và tiếp tục đặt tên cho công thức :
SLDuCuoi =
SLDuDau+SUMPRODUCT((NhapXuatHH!$C$5:$C5=NhapXuatHH ! $C6
)*(NhapXuatHH!$D$5:D5-NhapXuatHH!$F$5:F5))
TGDuCuoi =
TGDuDau+SUMPRODUCT((NhapXuatHH!$C$5:$C5=NhapXuatHH
!$C6)*(NhapXuatHH!$E$5:$E5-NhapXuatHH!$G$5:$G5)))
Công thức tại Cell H6 sẽ được viết thành :
=IF(OR(C6="",SLDuCuoi=0),0,TGDuCuoi/SLDuCuoi)
Ta cũng có thể thiết lập CSDL với các cột sau :
Đặt tên cho các mảng dữ liệu :
- $C$5:$C$20 = MH
- $D$5:$D$20 = SL
- $E$5:$E$20 = DGNhap
- $F$5:$F$20 = DGVon
- $G$5:$G$20 = TG
Với bảng này, cột số lượng được nhập chung cả SL Nhập và SL Xuất với quy ước
SLNhap >0, và SL Xuất < 0
Cột TG cũng vậy với công thức tính là :
G5 = =IF(D5>0,D5*E5,D5*F5) (D5 là cột SL, nếu SL>0, DGNhap*SL và ngược
lại)
Cột DG xuất (Cột F) sẽ có các công thức sau :
F5 = IF(OR($C5="",SUMIF(TonMaMH,$C5,TonDauSL)=0),0,SUMI
F(TonMaMH,$C5,TonDauTG)/SUMIF(TonMaMH,$C5,TonDauSL))
Từ F6 trở xuống, công thức sẽ là :
F6 =IF(C6="",0,(SUMIF(TonMaMH,C6,TonDauTG)+SUMPRODUCT
((C$5:$C5=C6)*($G$5:$G5)))/(SUMIF(TonMaMH,C6,TonDauSL)+SUMPROD
UCT((C$5:$C5=C6 )*(D$5:$D5))))
Ta cũng có thể đặt tên cho các công thức để rút gọn như đã nói ở phần trên
Dùng công thức SUMIF kết hợp với OFFSET :
- SUMPRODUCT(($C$5:$C5=C6)*($G$5:G5)) : Mảng $C$5:$C$20 được đặt tên
là MH, mảng $G$5:$G$20 là TG nên công thức này tương đương với
= SUMIF(OFFSET(MH,0,0,ROW()-5,1),C6,OFFSET(TG,0,0,ROW()-5,1))
Công thức này hơi khó hiểu, nhưng hầu như được sử dụng nhiều trong những hàm
tính FIFO sẽ nói ở phần sau