1. Trang chủ
  2. » Công Nghệ Thông Tin

Giải thích thêm về cách vận dụng các công thức trong File FIFO ppsx

27 435 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 27
Dung lượng 1,49 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Đầu tiên, ta đặt tên cho mảng $B$4:$B$30 là Q, và mảng $C$4:$C$30 là P, cách đặt tên như thế nào hoặc các bạn có thể đặt tên cho vùng dữ liệu động, chúng ta sẽ không bàn tại đây Yêu cầu

Trang 1

Giải thích thêm về cách vận dụng các công thức trong File FIFO

Giả sử ta có bảng dữ liệu sau :

Trang 2

Đầu tiên, ta đặt tên cho mảng $B$4:$B$30 là Q, và mảng $C$4:$C$30 là P, cách đặt tên như thế nào hoặc các bạn có thể đặt tên cho vùng dữ liệu động, chúng ta sẽ không bàn tại đây

Yêu cầu cấu trúc của File này là :

- Số lượng Nhấp và Xuất đặt cùng 1 cột và quy ước SLNhap >0, SLXuat <0

- Dữ liệu được nhập theo thứ tự ngày tháng Hàng trên cùng bao giờ cũng là số >0, tương ứng với số lượng tồn cuối kỳ, hoặc nhập hàng vào rồi mới xuất bán

Để có thể hiểu được bài này, chúng ta cần nói về một số công thức mảng kết hợp bởi các hàm sau :

1/ Hàm ROW(Q) : sẽ trả về giá trị là một mảng gồm các số hạng là vị trí các hàng của các phần tử của mảng Q, tính từ phần tử đầu tiên Công thức mảng ROW(Q)

sẽ cho như hình dưới đây

Trang 3

2/ Hàm TRANSPOSE(ROW(Q)) : Sẽ cho ta một mảng ngang khác bằng kích thước với mảng ROW(Q) như hình vẽ sau :

Trang 4

3/ Lệnh ROW(SL)>=TRANSPOSE(ROW(SL)) sẽ xuất ra mảng gồm những phần

tử trong mảng có giá trị là TRUE :

Trang 5

Ta chuyển giá trị TRUE, False sang giá trị 1, 0 bằng cách thêm vào 2 dấu - - như sau :

{=( (ROW(SL)>=TRANSPOSE(ROW(SL))}, ta sẽ có một mảng gồm giá trị :

Trang 6

Ta gọi mảng trên đây là mảng 1

Bạn hỏi vì sao phải tạo ra mảng này ? Thực ra, phải đi từ mục đích cuối cùng ra

Mục đích chính là tìm thời điểm (dòng số mấy) của cái gọi là “First in” Muốn làm

như thế, bắt buộc phải tạo ra một mảng thể hiện tổng số hàng nhập kho, sau đó, trừ

đi xuất kho, ta sẽ tìm được thằng “First in” mới

Bạn hãy xem mảng (Q>0)*Q sẽ cho ra các phần tử nào nhé :

5

Trang 9

Đây chính là mảng số lượng B4:B30 của bảng dữ liệu, chỉ có điều số lượng xuất <

0, sẽ được Convert thành số 0, chỉ còn các phần tử là số lượng nhập trong kỳ mà thôi Ta gọi mảng này là mảng 2

4) Hàm MMULT : hàm này ít ai xài, nhưng nếu kết hợp với các hàm về mảng khác lại cho ra kết quả khá tốt Đây chính là hàm ma trận, nhân các phần tử trong mảng này với các phần tử trong mảng kia Kết hợp hàm MMULT để nhân mảng 1

và mảng 2 ta có kết quả như sau :

Trang 10

Đây chính là mảng chúng ta cần tìm Mảng này thể hiện tổng số hàng nhập kho, ta chỉ cần tìm mảng thể hiện số xuất kho, lấy mảng này trừ đi, ta sẽ tìm được vị trí First In mới

Bạn sẽ bật cười vì để tạo mảng này, ta có thể chỉ cần hàm SUMIF(B$4:B4,”>0”) rồi kéo xuống, hơi đâu mà phài làm công thức dài loằng ngoằng khó hiểu như vậy

? Nhưng thực tế, nếu dung hàm SUMIF, bạn sẽ phải thêm các cột phụ, do đó, cách giải này vẫn là Best Solution

Bạn thử xem hình sau :

Trang 11

Thoạt nhìn, bạn sẽ thấy 2 công thức :

Trang 12

Kết quả trên của hàm ma trận {= (ROW(Q)>=TRANSPOSE(ROW(Q))),(Q>0)*Q)} thực ra được diễn giải gồm mảng như sau :

Trang 13

Chúng ta sẽ xác định tổng số lượng xuất kho bằng công thức sau :

= SUMIF(OFFSET(Q,0,0,ROW()-4,1),”<0”) hay = SUMIF($B$4:B4,”<0”)

Tổng số của MMULT và SUMIF : = (SLNhập - SLXuất)

Kết hợp 2 hàm này :

=MMULT( (ROW(Q)>=TRANSPOSE(ROW(Q))),(Q>0)*Q)+SUMIF(OFFSET( Q,0,0,ROW()-4,1),”<0”)

Ta có mảng sau :

Trang 14

Bạn sẽ thấy mảng này thể hiện số lượng hàng tồn sau mỗi lần nhập và xuất kho

Mảng đầy đủ sẽ là

Trang 15

Mọi việc bắt đầu đơn giản rồi Điều kiện MMULT + SUMIF >0 sẽ cho ra một mảng sau :

Trang 16

Mảng đầy đủ phải được diễn giải như sau :

Trang 17

Trong mảng trên, TRUE sẽ đại diện cho hàng còn tồn kho, và False đại diện cho hàng đã xuất hết kho

5/ Cuối cùng, ta dung hàm MATCH để xác định vị trí “TRUE” đầu tiên của mảng trên Ý nghĩa của nó là dò tìm trong khối Q, đâu là dòng “FIRST In” đầu tiên Công thức này là :

Trang 18

Từ D5 đến D30, ta nhập công thức trên, ta sẽ được kết quả là :

Trang 20

18

Sau khi đã xác định được đâu là vị trí của dòng "First in", ta sang cột E

Tại E4 = B4, số lượng tồn đầu kỳ

E5 = IF(D5=D4,E4+MIN(0,B4),SUMIF(OFFSET(Q,0,0,D5,1),">0 ") +SUMIF(OFFSET(Q,0,0,ROW()-4,1),"<0"))

Công thức này có thể diễn giải như sau :

- Nếu số lượng hàng cũ còn đủ xài : IF(D5=D4,

thì số lượng hàng tồn kho bằng với E4 trừ đi số lượng hàng xuất ra (Lưu ý hàm MIN(0,B4) cho kết quả là số âm, chính là số lượng hàng xuất) : E4+MIN(0,B4)

Trang 21

- còn nếu số lượng hàng cũ không đủ xài, thì lấy hàng mới mà xuất : SUMIF(OFFSET(Q,0,0,D5,1),">0")

- số tồn kho (đợt hàng First in mới) sẽ là tổng số nhập trừ đi tổng số xuất cho đến thời điểm tính toán :

SUMIF(OFFSET(Q,0,0,D5,1),">0") +SUMIF(OFFSET(Q,0,0,ROW()-4,1),"<0")

Kéo công thức xuống các hàng bên dưới của cột E từ E5 đến E30, ta có hình sau :

Trang 22

Như vậy : Cột E chính là số hàng tồn còn lại sau mỗi nghiệp vụ nhập hàng hay xuất hàng

Cột F là cột tính FIFO - trị giá hàng xuất bán

=IF(B5<0,IF(E5+B5>=0,-

B5*INDEX(P,D5),E5*INDEX(P,D5)+(INDEX(Q,D6)-1,1)>0),OFFSET(Q,D5,0,D6-D5-1,1),OFFSET(P,D5,0,D6-D5-1,1)),0)),"")

E6)*INDEX(P,D6)+IF(D6-D5>1,SUMPRODUCT( (OFFSET(Q,D5,0,D6-D5-Công thức này có vẻ dài, nhưng không đến nỗi khó hiểu, chúng ta từ từ xem từng đoạn một như sau :

- Nếu B5 < 0 : số lượng hàng xuất bán (< 0), và nếu số tồn kho (E5) > = số lượng xuất bán (B5) : E5 + B5 >=0, trị giá xuất sẽ là đơn giá (mảng P), tại vị trí “First in” (D5) : INDEX(P,D5), nhân số lượng xuất (B5) Vì số lượng xuất của chúng ta

quy định là < 0, nên ta phải đặt thêm dấu - để cho kết quả là số +

=IF(B5<0,IF(E5+B5>=0,-B5*INDEX(P,D5), ……

Xét tại công thức FIFO tại F6, số lượng xuất bán B6 = 3 nhỏ hơn số lượng hàng tồn E6 = 5, đợt hàng này là đợt 1(D6 = 1) có đơn giá : (INDEX(P,1) = 1) nên trị giá hàng xuất là : 3*1 = 3

Trang 23

- Ngược lại, nếu số lượng hàng tồn tại vị trí (First in) < số lượng xuất bán, thì lấy hết số lượng tồn (E5) ra để bán, trị giá xuất của số lượng tồn này là :

E5*INDEX(P,D5), số lượng còn thiếu sẽ được lấy từ vị trí kế tiếp của đợt nhập

hàng

Số lượng hàng nhập của đợt hàng tiếp theo INDEX(Q,D6) – E6 (số lượng hàng

tồn sau khi xuất bán nốt phần còn thiếu) = Số lượng hàng xuất bán còn thiếu

Tương tự, đơn giá đợt hàng tiếp theo là INDEX(P,E6)

E5*INDEX(P,D5)+(INDEX(Q,D6)-E6)*INDEX(P,D6)

Trang 24

Xét công thức tính FIFO tại F11, số lượng xuất bán B11 = 3, số lượng tồn cũ là E11 = 1 của đợt hàng nhập thứ 2 (D11 = 2), có đơn giá là INDEX(P,D11) = 1.1 Xuất hết số lượng E11, trị giá xuất của số hàng này là : = E11*INDEX(P,D11) = 1*1.1 = 1.1 (hàng màu xanh)

Số lượng còn phải xuất bán thêm là :

- Số lượng đợt nhập hàng kế tiếp : INDEX(Q,D12) = 4 có vị trí thứ 6 (D12=6) của mảng $B$4 :$B$30 đặt tên là Q, đơn giá của đợt hàng này là INDEX(P,D12) = 1.3

- Số lượng hàng tồn của đợt hàng này sau khi đã xuất bán nốt phần còn thiếu là : E12 = 2

- Vậy số lượng hàng xuất bán thêm trong đợt hàng sau là : (hàng màu vàng)

= INDEX(Q,D12)-E12 = 4 – 2 = 2

Trang 25

- Trị giá hàng xuất trong đợt hàng sau là : E12)*INDEX(P,D12) = 2*1.3 = 2.6

=(INDEX(Q,D12,2) Trị giá hàng xuất được tính tại :

F11 = E11*INDEX(P,D11) + (INDEX(Q,D12,2)-E12)*INDEX(P,D12) = 1*1.1 + 2*1.3 = 3.7

Nếu D6 – D5 > 1, và nếu số lượng hàng xuất lớn hơn số lượng hàng tồn, nghĩa là

sẽ có nhiều đợt hàng tiếp theo đợt hàng “First in”, do đó :

- Xuất hết số lượng tồn của đợt First in : = E5*INDEX(P,D5)

- Xuất nốt số lượng hàng còn thiếu ở đợt hàng nhập cuối : = E6)*INDEX(P,D6)

(INDEX(Q,D6) Số lượng xuất tại các đợt hàng trung gian giữa 2 giá trị D5 và D6 được xác định bằng công thức :

= D5-1,1),OFFSET(P,D5,0,D6-D5-1,1))

SUMPRODUCT( (OFFSET(Q,D5,0,D6-D5-1,1)>0),OFFSET(Q,D5,0,D6-Hàm OFFSET(Q,D5,0,D6-D5-1,1) cho ta 1 mảng con của mảng Q, bắt đầu từ vị

trí đầu tiên của mảng Q, dời xuống D5 hàng, có D6-D5-1 hàng và 1 cột

Trang 26

Mảng OFFSET(Q,D5,0,D6-D5-1,1)>0, sẽ cho ta giá trị Logic, do đó ta đặt 2 dấu trừ để convert giá trị True, False thành giá trị số 1, 0

Bây giờ, ta nhìn hình vẽ sau để hiểu rõ hơn về công thức trên, xét công thức FIFO tại hàng 20 và 21 D21 = 13, còn D20 = 10

- Mảng OFFSET(Q,D20,0,D21-D20-1,1) là mảng $B$14:$B$15 có màu xanh,

chữ đỏ, bắt đầu từ hàng 14, dời xuống 10 hàng tính từ hàng thứ 4 là vị trí đầu tiên của mảng Q Mảng này gồm 2 hàng, và có giá trị dương tại B15 là số 1

Trang 27

- Mảng OFFSET(P,D20,0,D21-D20-1,1) là mảng $C$14:$C$15 có màu xanh,

chữ xanh, bắt đầu từ hàng 14, dời xuống 10 hàng tính từ hàng thứ 4 là vị trí đầu tiên của mảng P

Hàm SUMPRODUCT sau sẽ trả kết quả là : 1*1.2 = 1.2

= 1,1)>0),OFFSET(Q,D20,0,D21-D20-1,1),OFFSET(P,D20,0,D21-D20-1,1))

SUMPRODUCT( (OFFSET(Q,D20,0,D21-D20 Các hàm còn lại đã giải thích ở trên

Ngày đăng: 07/08/2014, 17:21

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w