
我需要一個公式來使用單元格位址並返回單元格定義的名稱,即
=INDIRECT(ADDRESS(ROW(),COLUMN(),1,,"SHEET 001"))
我需要它ADDRESS(ROW(),COLUMN()
來引用當前單元格定義的名稱
,即“銷售”,而不是$A$1
答案1
我想出了一個快速的解決方法,儘管不可否認,它有點有限。
- 在工作表的空白區域中貼上所有已定義名稱的清單。
- 以下公式將建立一個類似於您要尋找的完全限定單元格位址的字串,將其在列表中進行匹配,並從相鄰列返回單元格名稱=INDEX(NameList,MATCH("='"&SUBSTITUTE( CELL("檔名"),"完全限定檔名","")&"'!"&CELL("地址"),NameReferences,0))
它顯然僅限於指向單一單元格的名稱,但它可以擴展到搜尋單元格範圍。
它對我有用,因為顯示資料的單元格的名稱是資料欄位的名稱,所以無論我把它放在哪裡,引用總是正確的。
當我從事該專案時,我在經常運行的巨集中添加了一條語句,該語句刷新名稱列表以使其保持最新狀態。
答案2
我不能因為編寫這段程式碼而獲得榮譽,但它正是您所需要的。幾年前我需要相同的功能,並在網路空間的某個地方偶然發現了這段程式碼,也許對其進行了一些修改,但我不記得任何一種方式。這對我來說非常有效。
它的工作原理如下:
- 將下列程式碼貼到啟用巨集的 Excel 工作簿 (*.xlsm) 的 VBA 模組中。
- 然後,在 Excel 工作表儲存格中鍵入類似「=CellName(F19)」的內容,它將傳回類似「rngSomeNamedCell」的內容。
這是代碼:
Public Function CellName(cel As Range) As Variant
Dim nm As Name
For Each nm In Names
If nm.RefersTo = "=" & cel.Parent.Name & "!" & cel.Address Then
CellName = nm.Name
Exit Function
End If
Next
CellName = CVErr(xlErrNA)
End Function
答案3
我不相信有內建的 Excel 函數可以做到這一點。您可以使用使用者定義的函數來傳回儲存格名稱。
下面的兩個函數將會傳回單元格的名稱。一個採用儲存格引用,另一個採用行和列。兩者目前都僅設定為在本機工作表上工作,但如果需要,您可以新增一個可選變數來取得工作表名稱。
第一個函數將被調用=cell_name()
戈登
Function cell_name() As String
dim rng as Range
On Error Resume Next
set rng = activeCell
If Len(rng.Name.Name) < 0 Then
cell_name = "No named Range"
Exit Function
End If
cell_name = rng.Name.Name
if instr("cell_name","!")>0 then
cell_name = Right(cell_name, Len(cell_name) - InStr(cell_name, "!"))
end if
End Function
第二個函數傳回給定行和列的儲存格名稱
Function cell_name2(r As Long, c As Long) As String
Dim rng As Range
Set rng = Cells(r, c)
On Error Resume Next
If Len(rng.Name.Name) < 0 Then
cell_name = "No named Range"
Exit Function
End If
cell_name2 = rng.Name.Name
End Function
編輯第一個函數以在活動單元格上工作。