→ JieJuen:常常用 但好像沒解釋過 以前也不知下了什麼標題.. 07/26 20:37
http://2y.drivehq.com/q/VlookupInequality.xls
前情提要,就是說有個庫存量D1,要在一系列數量(B欄)中,
找到第一個(B欄)大於等於D1的那一列。
這麼說是因為原舉例中,
庫存(D1)如果250,A產品數量(B2)200,那麼A產品不夠用無法完工
如果A產品數量(B3)1200就夠用了能完工
那麼假如A產品數量(B某)是等於250,"應該"也是夠用
A B C D
1 數量 日期 D1=現有庫存
2 A產品 200 7/8
3 A產品 1200 7/19
4 A產品 1700 7/21
好,現在要找第一個符合 B欄>=D1 之列 (就是 D1<=B欄)
然而用VLOOKUP系列函數是找到 D1>=B欄 之列
當庫存D1是:
0 ┐
├ 所求的第1組
┌ 200 ┘
VLOOKUP的第1組 ┤ ┐
└ ├ 所求的第2組
┌1200 ┘
VLOOKUP的第2組 ┤
└
1700
我沒辦法表示的更簡單了,總而言之,這裡的關係想了就頭痛,
又等於又不等於的,
因此,有一個簡單而偷懶的方法,就是把D1減一個很小的數,
比如本來的1200在第2組,就會跑到第1組去,本來的200就到"第0組"去了
就與所求的"不等式關係"相同,只要再平移組別即可。
因為要平移組別,用了INDEX(MATCH)而非VLOOKUP。
所以最後的式子用減去微小量來處理不等式,且VLOOKUP也沒出現..
而式中出現的"<="見以下第3.
關於menth的式子 有幾個想法
1. IFERROR(...,FALSE) 這就是 NOT(ISERROR)的意思,NOT還不需用 改IF參數位置即可
2. 式子前面部分應是D1而非D2
3. 庫存(D1)輸入199以下應該會錯誤,我的"<="主要是處理這部分,也就是所謂的"第0組"
※ 引述《menth (曼秀)》之銘言:
: ※ 引述《t6370345 (貓咪阿甘)》之銘言:
: : 軟體:EXCEL
: : 版本:2007
: : 請問EXCEL怎麼判斷時間(日)
: A B C
: 1 數量 日期
: 2 A產品 200 7/8
: 3 A產品 1200 7/19
: 4 A產品 1700 7/21
: : 現有庫存 250 前置期2天
: : 怎麼讓他讀出 完工日7/19 開工日7/17
: : 我現在是用 IF 去做假設庫存<數量 ....但是超過6筆就卡關了
: : 有人能幫忙嗎?
: 假設 數量在B欄,日期在C欄,現有庫存置於D1,完工日置於E1,開工日置於F1
: 如上你所編輯的表格。
: E1=IF(IFERROR(D2=VLOOKUP(D1,B:B,1,FALSE),FALSE),
^^ D1
: VLOOKUP(D1,B:C,2,FALSE),
: LOOKUP(D1,OFFSET(B2,,,COUNTA(B:B),1),OFFSET(C2,1,,COUNTA(C:C),1)))
: counta用於動態範圍
: if的假設用於當現有庫存等於你設定的庫存時,可以直接利用vlookup得到日期資訊,
: 反之,則利用lookup做另一種參照。
: 當然,開工日公式就是完工日-2,也就是F1=E1-2。
: 如果你在編輯絕對不可能會有現有庫存等於設定的數量,
: 那E1公式可以簡化為
: E1=LOOKUP(D1,OFFSET(B2,,,COUNTA(B:B),1),OFFSET(C2,1,,COUNTA(C:C),1))
: 如果有誤還請指教。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.1.223
其實這標題我不知道怎麼下
因為最後的答案不含VLOOKUP,也不是真的什麼不等式
以menth的座標為準,最後答案(E1)為
=IF(D1<=$B$2,$C$2,INDEX($C$2:$C$4,MATCH(D1-10^-5,$B$2:$B$4)+1))