[英]INDIRECT inside INDEX function giving #REF error
我有一個Excel工作簿Spreadsheet.xlsx ,其中B2 =MATCH(B1,'\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$1:$A$500,0)
使用字符串(名稱)在B1中,並將其與Workbook.xlsx中的行標題列匹配,以給出行號。
當前, B2返回值8 ,該值用於B3 =INDEX('\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$8:$SD$8), MATCH($A4,'\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$2:$SD$2,0))
。
B3索引一個值范圍$A$8:$SD$8
,該值對應於Workbook.xlsx中Sheet1中B2中來自B2的行號,並返回與日期$A4
匹配的值,范圍$A$2:$SD$2
。
目前,我正在手動輸入行號到B3范圍`$ A $ 8:$ SD $ 8。
如果我嘗試使用B3自動執行此操作=INDEX(INDIRECT("'\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet'!$A$"&B2&":$SD$"&B2), MATCH($A4,'\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$2:$SD$2,0))
,我收到#REF
錯誤。
我在其他地方使用了INDIRECT
例如=MAX(INDIRECT(K&"K1"))
,它工作得很好。 另外,其中的Workbook.xlsx和Sheet1確實存在,並且無需使用INDIRECT
即可從它們獲取數據。
為什么不起作用?
INDEX
和MATCH
函數,這里使用的, 也有封閉工作簿時- INDIRECT
不
...但是您實際上並不需要INDIRECT
您可以將此版本與B2
一起使用,以在第一個范圍內定義行號
=INDEX('\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$1:$SD$500),B2, MATCH($A4,'\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$2:$SD$2,0))
即使源工作簿已關閉,並且在任何情況下都是“更清潔”,更可靠的方法,該方法也應起作用。
請注意,公式中的第一個范圍已更改為與您從B2開始的匹配范圍一樣長
如果您想完全切除B2,只需將B2中的MATCH函數放在該公式中即可代替 B2,即
=INDEX('\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$1:$SD$500),MATCH(B1,'\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$1:$A$500,0), MATCH($A4,'\\\\SERVER\\Path\\To\\File\\[Workbook.xlsx]Sheet1'!$A$2:$SD$2,0))
[注意:正如傑里所說,您的工作表名稱不一致,因此我將第一個更改為Sheet1以匹配其他表名]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.