2016-08-05 72 views
1

在Excel中,我定義了兩個名稱。兩者具有相同的名稱,但範圍和價值不同。一個是工作簿的範圍,另一個是工作簿。如何獲取工作簿範圍的名稱?

enter image description here

我無法檢索書範圍的名稱,可以在一個單元格公式或VBA。在細胞 ThisWorkbook.names("myName") enter image description here

,當我輸入以下內容:

在VBA

,下面的返回表範圍的名稱 =book.xlsb!myName 的Excel重寫它: Sheet1!myName

如何在單元格公式和/或VBA中檢索工作簿範圍名稱?

+0

看到我的回答在 –

+1

以下每一個可能的答案會更多的工作,然後只是讓你的名字獨特...是不是有一個選項來改變他們的名字?通常,這個「名稱」應該是「唯一的」,以避免這些問題...... –

+0

IMO,範圍界定應足以隔離名稱。例如,範圍爲sheet1和sheet2的名稱不會發生衝突。在這種情況下,存在範圍重疊,因此本地範圍優先。但是,如果我們明確限定書名或圖書對象的引用,那麼邏輯上和直觀上應該可以工作。如果不是一個實際的錯誤,這是一個不合邏輯的Excel設計折中。 –

回答

0

只有在新工作簿中的默認第一張紙發生此衝突。衝突確實不是發生與任何其他工作表上定義的名稱。

如果您重命名默認的第一張工作表,您仍然會在該工作表上發生名稱衝突 - 它不是關於工作表名稱的

您可以刪除默認的第1張,以及新-1表使用的將要-第2頁,將有這個問題。它特定於新書中的默認第一張。

如果您永遠不刪除默認的第一張紙張,然後永遠刪除那張紙張,,那麼表格範圍的定義的名稱將覆蓋書籍範圍的同名。

爲此,要答案的OP,獲得了一本書範圍的名稱時,有一個相同的表範圍的名字最簡單,最簡單的方法,就是不會嘗試這樣的默認第1張。

不需要VBA。

只在Excel 2010中

註釋和Microsoft link上面的測試使我的答案。感謝那位評論員。

0

使用這種 ThisWorkbook.Worksheets(「工作表Sheet1」)。範圍(「MYNAME」)。值

+0

他希望工作簿範圍中的名稱,而不是工作表範圍中的名稱。 –

2

如果粘貼我的一個新的模塊代碼,您可以在VBA和公式中使用此功能,在工作簿-範圍獲得名稱:

Public Function §(ra As String) 
Application.Volatile 
Dim tName As Name 
For Each tName In ThisWorkbook.Names 
    If tName.Name = ra Then 
     § = tName.RefersToRange.Value 
     Exit Function 
    End If 
Next tName 
End Function 

與VBA 「=§(」 myRange 「)」 中的公式或§( 「myRange」)只要使用它。 使用§(「Sheet1!myRange」)也獲得了工作表範圍名稱。

+0

@DirkReichel每天都會學到新的東西,感謝評論。 –

+0

歡迎您:) –

+0

@JulianKuchlbauer,非常酷的使用非alpha函數名!你爲什麼用「t」前綴名字? Thx –

相關問題