Board logo

標題: [發問] 有層次的銷售金額及退貨金額之公式,要如何設定 [打印本頁]

作者: julieh96590    時間: 2013-2-24 23:11     標題: 有層次的銷售金額及退貨金額之公式,要如何設定

條件1:如果買進1至12個,1個1080元
條件2:如果再買進第13至40個,1個970元
條件3:如果再買進41個以上,1個700元
條件4:如果有退貨時,用後進先出法,計算退貨金額。

例如1:A客戶總共買進43個(A1),付出12*1080+(40-12)*970+(43-40)*700=42220元(B1)
例如2:A客戶後來退了5個(A2),退貨金額3*700+2*970=4040元(B2)
請問如何下銷售金額(B1)及退貨金額(B2)之公式
作者: julieh96590    時間: 2013-2-24 23:52

以下是我對銷售金額所下的公式,請問有更簡潔的公式嗎?
銷售金額(B1)=IF(A1>40,(A1-40)*700+40120,IF(AND(41>A1,A1>12),(A1-12)*970+12960,IF(A1<13,A1*1080,0)))
但退貨金額(B2)之公式,仍未想出,請先進幫幫忙
作者: Hsieh    時間: 2013-2-25 00:27

回復 1# julieh96590

B1=SUMPRODUCT({1080,970,700},TRANSPOSE(FREQUENCY(ROW(INDIRECT("A1:A"&A1)),{12,40})))
B2=SUM(MIN(A2,(A1-40))*700,MIN(28,(A2-MIN(A2,(A1-40))))*970,MAX(0,12-(A1-A2))*1080)
作者: julieh96590    時間: 2013-2-25 09:42

感謝樓上版主解答,但是如果銷售數量低於40,答案就不適用了,可否再麻煩您。
作者: julieh96590    時間: 2013-2-25 09:59

補充說明:銷售數量低於40,只有退貨金額答案不適用了,銷售金額答案是ok
作者: Hsieh    時間: 2013-2-25 10:17

回復 5# julieh96590
B2=SUM(MAX(0,MIN(A2,(A1-40)))*700,MIN(28,(A2-MAX(0,MIN(A2,(A1-40)))))*970,MAX(0,12-(A1-A2))*1080)
作者: julieh96590    時間: 2013-2-25 14:41

再感謝樓上版主解答,但是如果銷售數量低於16、退貨金額為5個(4個*970+1個*1080=4960)時,答案就不適用了,可否再麻煩您。
作者: Hsieh    時間: 2013-2-25 17:46

B2陣列公式
=SUM(SMALL(IF(ROW(INDIRECT("A1:A"&A1))<13,1080,IF((ROW(INDIRECT("A1:A"&A1))>12)*(ROW(INDIRECT("A1:A"&A1))<41),970,700)),ROW(INDIRECT("A1:A"&A2))))
作者: julieh96590    時間: 2013-2-25 21:22

謝謝版主,ok了,但函數我可能還要消化一下,才會懂,
作者: Bodhidharma    時間: 2013-2-25 22:42

回復 9# julieh96590

銷貨金額(a1)=銷貨金額(a1-a2)+退貨金額
所以
退貨金額=銷貨金額(a1)-銷貨金額(a1-a2)=
SUMPRODUCT({1080,970,700},TRANSPOSE(FREQUENCY(ROW(INDIRECT("A1:A"&A1)),{12,40})))-SUMPRODUCT({1080,970,700},TRANSPOSE(FREQUENCY(ROW(INDIRECT("A1:A"&(A1-A2))),{12,40})))
作者: Bodhidharma    時間: 2013-2-25 23:02

本帖最後由 Bodhidharma 於 2013-2-25 23:04 編輯

回復 2# julieh96590

依你的邏輯,可以用choose配match來寫
=CHOOSE(MATCH(A1,{0,13,41}),A1*1080,(A1-12)*970+12960,(A1-40)*700+40120)
作者: handmuch    時間: 2013-2-26 11:44

回復 1# julieh96590


   跟綜所稅的累進課稅有點像!  只是要另作參考表格!
[attach]14251[/attach]
作者: Hsieh    時間: 2013-2-26 16:24

本帖最後由 Hsieh 於 2013-2-26 16:30 編輯

回復 12# handmuch
級距表的方式來寫公式,本例售出總價可使用LOOKUP函數或許更容易理解
B1=IF(A1>0,SUMPRODUCT(LOOKUP(ROW(INDIRECT("A1:A"&A1)),{0,13,41},{1080,970,700})*1),"")
B2陣列公式
=IF((A2>0)*(A2<=A1),SUM(SMALL(LOOKUP(ROW(INDIRECT("A1:A"&A1)),{0,13,41},{1080,970,700}),ROW(INDIRECT("A1:A"&A2)))),"")




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)