数式はセル定義名を返します

数式はセル定義名を返します

セルアドレスを使用してセル定義名を返す数式が必要です。

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

ADDRESS(ROW(),COLUMN()現在のセル定義名
、つまり「sales」を参照するためにこれが必要です。$A$1

答え1

簡単な回避策を思いつきましたが、確かに少し制限がありました。

  1. シートの空き領域に、定義されたすべての名前のリストを貼り付けます。
  2. 次の数式は、探している完全修飾セル アドレスに似た文字列を作成し、リスト内で一致させて、隣接する列からセル名を返します =INDEX(NameList,MATCH("='"&SUBSTITUTE(CELL("filename"),"fully_qualified_filename","")&"'!"&CELL("address"),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 関数はないと思います。ユーザー定義関数を使用してセル名を返すことができます。

以下の 2 つの関数はセルの名前を返します。1 つはセル参照を受け取り、もう 1 つは行と列を受け取ります。どちらも現在はローカル シートでのみ動作するように設定されていますが、必要に応じてワークシート名を受け取るオプションの変数を追加できます。

最初の関数は次のように呼び出されます=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

2番目の関数は指定された行と列のセル名を返します

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

最初の関数をアクティブセルで動作するように編集しました。

関連情報