公式傳回儲存格定義的名稱

公式傳回儲存格定義的名稱

我需要一個公式來使用單元格位址並返回單元格定義的名稱,即

=INDIRECT(ADDRESS(ROW(),COLUMN(),1,,"SHEET 001"))

我需要它ADDRESS(ROW(),COLUMN()來引用當前單元格定義的名稱
,即“銷售”,而不是$A$1

答案1

我想出了一個快速的解決方法,儘管不可否認,它有點有限。

  1. 在工作表的空白區域中貼上所有已定義名稱的清單。
  2. 以下公式將建立一個類似於您要尋找的完全限定單元格位址的字串,將其在列表中進行匹配,並從相鄰列返回單元格名稱=INDEX(NameList,MATCH("='"&SUBSTITUTE( CELL("檔名"),"完全限定檔名","")&"'!"&CELL("地址"),NameReferences,0))

它顯然僅限於指向單一單元格的名稱,但它可以擴展到搜尋單元格範圍。

它對我有用,因為顯示資料的單元格的名稱是資料欄位的名稱,所以無論我把它放在哪裡,引用總是正確的。

當我從事該專案時,我在經常運行的巨集中添加了一條語句,該語句刷新名稱列表以使其保持最新狀態。

答案2

我不能因為編寫這段程式碼而獲得榮譽,但它正是您所需要的。幾年前我需要相同的功能,並在網路空間的某個地方偶然發現了這段程式碼,也許對其進行了一些修改,但我不記得任何一種方式。這對我來說非常有效。

它的工作原理如下:

  1. 將下列程式碼貼到啟用巨集的 Excel 工作簿 (*.xlsm) 的 VBA 模組中。
  2. 然後,在 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

編輯第一個函數以在活動單元格上工作。

相關內容