- 帖子
- 4901
- 主題
- 44
- 精華
- 24
- 積分
- 4916
- 點名
- 102
- 作業系統
- Windows 7
- 軟體版本
- Office 20xx
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台北
- 註冊時間
- 2010-4-30
- 最後登錄
- 2025-4-28
               
|
14#
發表於 2011-1-27 19:45
| 只看該作者
回復 13# jumky
{=INDIRECT("進貨型號!A"&SMALL(IF((COUNTIF(特別型號!A:A,進貨型號!$A$2:$A$7)=0)*(COUNTIF(出貨型號!A:A,進貨型號!$A$2:$A$7)=0),ROW($A$2:$A$7),""),ROW(A1)))}
IF((COUNTIF(特別型號!A:A,進貨型號!$A$2:$A$7)=0)*(COUNTIF(出貨型號!A:A,進貨型號!$A$2:$A$7)=0),ROW($A$2:$A$7),"")
這段是如果進貨型號!$A$2:$A$7沒出現在特別型號!A欄而且進貨型號!$A$2:$A$7也沒在出貨型號!A欄就傳回$A$2:$A$7的列號,否則傳回空白
這會產生一個2~7的數字與空字串的陣列
利用SMALL函數取出由小到大的數字,SMALL會忽略文字
ROW(A1)若向下複製會從A1變為A2,A3,A4......
這就是SMALL的第2個參數
ROW(A1)傳回1就是取2~7的數字與空字串的陣列中的最小值
ROW(A2)傳回2就是取2~7的數字與空字串的陣列中的第二小值
以此類推
最後使用INDIRECT函數指到儲存格
"進貨型號!A"是說要指到進貨型號!A欄
SMALL取得的值就是列號
例如
2~7的數字與空字串的陣列中最小值是3
那麼
SMALL(IF((COUNTIF(特別型號!A:A,進貨型號!$A$2:$A$7)=0)*(COUNTIF(出貨型號!A:A,進貨型號!$A$2:$A$7)=0),ROW($A$2:$A$7),""),ROW(A1))
就傳回3
配合 "進貨型號!A"&
就得到字串"進貨型號!A3"
所以該儲存格就會得到進貨型號!A3的值 |
|