2012-06-21 33 views
7

這非常複雜,但我會盡我所能對其進行儘可能清晰的解釋。請讓我知道,如果它沒有意義。Excel中嵌套的INDIRECT函數 - 在一臺計算機上工作,但在另一臺計算機上返回#REF

我有兩個工作簿 - 輸入和輸出。由於系統的工作方式,它們必須是分開的,即「提名者」將所有輸入輸入到簡單的輸入工作簿,輸出工作簿將其格式化爲可供使用的格式。爲了使其工作,輸出工作簿必須引用輸入工作簿來檢索值。

我一直在測試這兩個工作簿正在打開。

爲了實現這一點,我使用嵌套INDIRECT函數;第一個創建文件路徑,調用命名範圍,第二個告訴Excel解釋該文件路徑並檢索值。

我開始用INDIRECT建立一個文件路徑:

=INDIRECT("input_sheet_location")&"Wk 25 2012'!$B$11" 

這將返回類似:

\\My Documents\Subfolder\[input_sheet.xlsx]Wk 25 2012'!$B$11 

然後窩它在另一個爲了得到Excel中讀取路徑:

=INDIRECT("'"&INDIRECT("input_sheet_location")&"Wk 25 2012'!$B$12") 

這成功返回單元B12從input_s值heet_location - 一個命名範圍,它是一個文件目錄。爲了論點的緣故,我們可以說它會回報:

Captain America's underpants 

所以上面的工作非常好。爲了我。但是,在其他用戶的機器上,它不起作用。我試圖挖,並制定了以下內容:

  1. 文件之間的連接出現在他們的系統太 - 探索數據>編輯鏈接顯示它們具有相同的,工作接口和我一樣。
  2. 生成的文件路徑是相同的;我構建了一個宏,向用戶展示它,在3臺機器上,每次都是一樣的。
  3. 最關鍵的(也是令人困惑的),非嵌套INDIRECT公式確實工作。這是只有在我的電腦上才能使用的嵌套公式。在其他用戶的計算機上,它會返回#REF錯誤。

有沒有人有任何想法,爲什麼這可能是這種情況?我很茫然。

感謝您閱讀這個遊戲。

+2

這只是一種鏡頭,但我不知道它是否會有所幫助,而是在其他用戶的機器上打開的輸入工作簿,因爲它必須是用於間接功能的。你不能(至少不是VBA,我知道)從鏈接的公式更新數據而不打開工作簿。 Excel在關閉鏈接的工作簿時存儲該鏈接,但由於您使用的是間接鏈接,因此它不會存儲鏈接,因爲實際上,您尚未創建鏈接。如果在那裏的鏈接,你會得到提示更新它,一切都會好起來的。如果這不起作用,我們可以研究其他的東西。 –

+0

相關:http://stackoverflow.com/questions/9259862/executeexcel4macro-to-get-value-from-closed-workbook和http://stackoverflow.com/questions/9033656/copying-from-closed-workbook-excel -vba – JMax

+0

謝謝Scott,好點。答案是肯定的,它是開放的。我編輯了這個問題來反映這個細節。 – seegoon

回答

2

你說的第一個間接式+ Concatination返回的值等:

\\My Documents\Subfolder\[input_sheet.xlsx]Wk 25 2012'!$B$11 

不應在表名稱在每側有一個單引號和返回的值等:

\\My Documents\Subfolder\[input_sheet.xlsx]'Wk 25 2012'!$B$11 

我注意到你的第二個公式在文件路徑之前有一個單引號。

而是嘗試下面兩個公式:

=INDIRECT("input_sheet_location")&"'Wk 25 2012'!$B$11" 

和/或

=INDIRECT(INDIRECT("input_sheet_location")&"'Wk 25 2012'!$B$12") 

讓我知道,如果他們爲你工作。

0

可能是一個愚蠢的問題,但這實際上工作?

= INDIRECT( 「input_sheet_location」)&「WK 25 2012' !$ B $ 11"

完全不_Location結束括號關閉間接作用?它不應該是

= INDIRECT(「input_sheet_location」 &「WK 25 2012' !$ B $ 11" )

至少,這是它的工作對我來說是有間接內部的整個路徑的唯一途徑函數括號。

相關問題