返回列表 上一主題 發帖

[發問] INDIRECT如何用自定義

[發問] INDIRECT如何用自定義

請問任何對函數有研究及興趣的高手們
BX4=IF($BY4=0,"",CHOOSE(MATCH(711,INDIRECT("'"&DAY($F$1)-1&"'!DP4:DS4"),0),INDIRECT("'"&DAY($F$1)-1&"'!CY4"),INDIRECT("'"&DAY($F$1)-1&"'!DB4"),INDIRECT("'"&DAY($F$1)-1&"'!DE4"),INDIRECT("'"&DAY($F$1)-1&"'!DH4")))

BX4公式是要帶出前一日符合A1料號的DP4:DS4欄位,只要出現"711"代碼,就把前一日CY欄的日期帶到BX4欄位
因為公式很長,我想用自定義方式,但有些問題無法克服
1. 工作表的命名是1:31的日期
所以我會利用 INDIRECT("'"&DAY($F$1)-1讓每個工作表都可以利用同一活動公式
但,INDIRECT的特性,是要把取出的值包在""中,這樣用自定義會出現錯誤值
2. 想請教有沒有其他公式可以替換目前的公式?但要有同樣的功能
3. 或者原公式可以改成一致性的,例如:MATCH(711,INDIRECT("'"&DAY($F$1)-1&"'!DP4:DS4"),0)有其他的寫法,可以將DP4:DS4改成DP4:DS7(目前的總列數)
庫存表_INDIRECT.rar (28.9 KB)

陣列公式(三鍵完成):
=IF($BY4=0,"",iferror(HLOOKUP(711,VLOOKUP(D4,INDIRECT("'"&DAY($F$1)-1&"'!D:DS"),99+{18,19,20,21;1,1,1,1},),2,),""))

或 一般公式:
=IF($BY4=0,"",IF(OR(VLOOKUP(D4,INDIRECT("'"&DAY($F$1)-1&"'!D:DS"),116+{1,2,3,4},)=711),VLOOKUP(D4,INDIRECT("'"&DAY($F$1)-1&"'!D:CY"),100,),""))


===========================
EXCEL參考資料:
http://blog.xuite.net/smile1000mile/blog

TOP

回復 2# 准提部林

准大 好:

這二種寫法我測試後發現,只有當"711"出現在DP4:DS4 的第一個儲存格DP4時,才會帶出正確資料,不然就會出錯,可能要再研究一下!

TOP

        靜思自在 : 一個人不怕錯,就怕不改過,改過並不難。
返回列表 上一主題