Board logo

標題: [發問] 如何利用Vlookup查詢符合資料的前一個儲存格 [打印本頁]

作者: adam2010    時間: 2015-3-7 10:55     標題: 如何利用Vlookup查詢符合資料的前一個儲存格

本帖最後由 adam2010 於 2015-3-7 10:57 編輯

請教各位先進,想要從流程站點[attach]20394[/attach]
查詢各料號共通站點#2950的(來源)前1~2站,還有查詢有無某一站(xe:有無1200站)[attach]20395[/attach]
[attach]20396[/attach]
請問要如何設定B2~D4的公式,謝謝~
作者: aer    時間: 2015-3-7 19:57

回復 1# adam2010
B2與C2請輸入陣列公式(同時按下Ctrl+Shift+Enter三個鍵輸入公式)
B2=INDEX(流程站點!$A$1:$C$16,MATCH(1,(流程站點!$A$1:$A$16=分析!A2)*(流程站點!$C$1:$C$16=2950),0)-1,3)
C2=INDEX(流程站點!$A$1:$C$16,MATCH(1,(流程站點!$A$1:$A$16=分析!A2)*(流程站點!$C$1:$C$16=2950),0)-2,3)
D2=IF(C2=1200,"Y","N")

向下複製
請參考!
作者: JBY    時間: 2015-3-7 20:11

1] B2, "2950前1站" 的公式, 向下複製 :

=INDEX(流程站點!$C$2:$C$16,MATCH(1,INDEX((流程站點!$A$1:$A$16=分析!$A2)*(流程站點!$C$2:$C$16=2950),),)-1)

2] C2, "2950前2站" 的公式, 向下複製 :

=INDEX(流程站點!$C$2:$C$16,MATCH(1,INDEX((流程站點!$A$1:$A$16=分析!$A2)*(流程站點!$C$2:$C$16=2950),),)-2)

3] D2, "有無1200站" 的公式, 向下複製 :

=IF(ISNUMBER(MATCH(1,INDEX((流程站點!$A$1:$A$16=分析!$A2)*(流程站點!$C$2:$C$16=1200),),)),"Y","N")
作者: adam2010    時間: 2015-3-7 20:29

原來我整個方向錯了,感謝兩位出手相助,兩位提供的函數均符合需求,謝謝!
作者: samwang    時間: 2015-3-7 21:23

回復 1# adam2010

B2=INDEX(流程站點!$C:$C,SMALL(IF((流程站點!$A$2:$A$16=$A2)*(流程站點!$C$2:$C$16=2950),ROW($G$2:$G$16),""),1)-COLUMN(A$1),)
陣列公式往右下拉
D2=IF(SUMPRODUCT((流程站點!$A$2:$A$16=$A2)*(流程站點!$C$2:$C$16=1200)),"Y","N")
作者: JBY    時間: 2015-3-7 23:12

B2 : =LOOKUP(2,1/((流程站點!$A$2:$A$16=分析!$A2)*(流程站點!$C$2:$C$16=2950)),流程站點!$C$1:$C$15)

C2 : =LOOKUP(2,1/((流程站點!$A$3:$A$16=分析!$A2)*(流程站點!$C$3:$C$16=2950)),流程站點!$C$1:$C$15)

D2 : =IF(ISNA(LOOKUP(2,1/((流程站點!$A$1:$A$16=分析!$A2)*(流程站點!$C$1:$C$16=1200)))),"N","Y")

公式向下複製
作者: adam2010    時間: 2015-3-8 11:17

回復 5# samwang
感謝samwang大提供的公式OK
但是不明白 B2=INDEX(流程站點!$C:$C,SMALL(IF((流程站點!$A$2:$A$16=$A2)*(流程站點!$C$2:$C$16=2950),ROW($G$2:$G$16),""),1)-COLUMN(A$1),)
中使用SMALL & 取 ROW($G$2:$G$16)的用意
作者: adam2010    時間: 2015-3-8 11:21

回復 2# aer
感謝aer大的協助
可能是我描述讓您誤解,D2並不是針對前2站是否為1200站去判定
而是要看該料號是否整個製程站點有無包含到1200站
不過有其他大大已提供適用之公式,還是謝謝aer大的相助~
作者: adam2010    時間: 2015-3-8 12:06

回復 6# JBY
感謝JBY大再次提供解決的方案~恕在下才疏學淺,看不太懂
B2 : =LOOKUP(2,1/((流程站點!$A$2:$A$16=分析!$A2)*(流程站點!$C$2:$C$16=2950)),流程站點!$C$1:$C$15)
C2 : =LOOKUP(2,1/((流程站點!$A$3:$A$16=分析!$A2)*(流程站點!$C$3:$C$16=2950)),流程站點!$C$1:$C$15)
請問一些很粗淺的問題~
lookup_value用2的意思是...
lookup_vector開頭用1/的意思是...之前有看過0/的
B2跟C2的差異在於lookup_vector範圍下移一列,所以資料量大時是不是就不能用整欄來當範圍了
而您之前提供的=INDEX(流程站點!$C$2:$C$16,MATCH(1,INDEX((流程站點!$A$1:$A$16=分析!$A2)*(流程站點!$C$2:$C$16=2950),),)-1)中
資料量大時可以用整欄來當搜尋範圍=INDEX(流程站點!$C:$C,MATCH(1,INDEX((流程站點!$A:$A=分析!$A2)*(流程站點!$C:$C=2950),),)-1)
作者: JBY    時間: 2015-3-8 12:52

lookup_value用2的意思是...
lookup_vector開頭用1/的意思是...之前有看過0/的


你也可以使用 :

=LOOKUP(1,0/(……
=LOOKUP(2,1/(……
=LOOKUP(3,1/(……
=LOOKUP(4,1/(……
=LOOKUP(5,1/(……
………………
作者: xmi    時間: 2015-3-20 20:45

回復 1# adam2010

請問是否放於不同工作表(一個是流程站點, 另一個是工作表2)? 因我想試看但沒有權限download文件...
作者: adam2010    時間: 2015-3-24 20:43

回復 11# xmi

分兩個工作表~
[attach]20501[/attach]
[attach]20502[/attach]
作者: xmi    時間: 2015-3-25 19:40

回復 12# adam2010


    謝謝你的回答, 我成功了, :D




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