Board logo

標題: [發問] INDIRECT如何用自定義 [打印本頁]

作者: PJChen    時間: 2019-10-22 18:39     標題: 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(目前的總列數)
[attach]31346[/attach]
作者: 准提部林    時間: 2019-10-26 13:09

陣列公式(三鍵完成):
=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,),""))


===========================
作者: PJChen    時間: 2019-10-30 00:11

回復 2# 准提部林

准大 好:

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




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