簡體   English   中英

INDEX函數內部的INDIRECT給出#REF錯誤

[英]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.xlsxSheet1B2中來自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.xlsxSheet1確實存在,並且無需使用INDIRECT即可從它們獲取數據。

為什么不起作用?

INDEXMATCH函數,這里使用的, 有封閉工作簿時- 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM