命名範圍的名稱可以是動態的嗎?

命名範圍的名稱可以是動態的嗎?

我希望 Excel 中命名範圍的名稱是動態的(而不是範圍本身!)。我想知道是否/如何使用公式或引用單元格定義範圍名稱,以便當引用單元格的內容更改時名稱也會更改。

例如如果我在列中寫一個列表,並在列的頂部寫下列表的標題,如下所示:

     A
1 *Colours*
2  Red
3  Yellow
4  Blue

然後在清單標題 (A1) 之後命名清單的儲存格區域 (A2:A4),然後,如果清單標題更改,我希望範圍名稱自動更改(即範圍名稱 = A1 且如果A1 的內容發生變化,名稱也會發生變化)。

額外資訊關於我的具體案例:我正在使用命名範圍在 Excel 電子表格中建立幾個依賴的動態下拉列表,供其他人使用。這一切都經過設置,以便如果使用者想要將項目新增至現有清單(在支援清單工作表中),則下拉清單(在主表工作表中)會自動變更。然而,我的下一個挑戰是讓用戶輕鬆新增清單。我的計劃是提供已設定的備用清單列(在支援清單工作表中),以便在填寫時,它將自動變成下拉清單(在主表工作表中)。所有資料驗證公式(使用命名範圍)均設定為在主表工作表中建立下拉列表,缺少的步驟是使用者輸入新列表標題後自動命名列表範圍。我的資料驗證公式需要使用命名範圍,因為主表中顯示的下拉清單取決於使用者先前的選擇。

我將非常感謝任何提示!

答案1

這假設 A1 中的值將被輸入而不是透過公式設定。在工作表程式碼區域中輸入以下事件巨集:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim str As String
    str = Range("A1").Text
    If Intersect(Range("A1"), Target) Is Nothing Then Exit Sub
    Dim n As Name
    For Each n In ActiveWorkbook.Names
        If n.RefersTo = "=Sheet1!$A$2:$A$4" Then
            n.Delete
        End If
    Next n
    ActiveWorkbook.Names.Add Name:=str, RefersTo:="=Sheet1!$A$2:$A$4"
End Sub

因為它是工作表程式碼,所以非常容易安裝並自動使用:

  1. 右鍵單擊 Excel 視窗底部附近的選項卡名稱
  2. 選擇查看代碼 - 這將打開一個 VBE 窗口
  3. 將內容貼進去並關閉 VBE 窗口

如果您有任何疑慮,請先在試用工作表上嘗試。

如果儲存工作簿,巨集將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案另存為 .xlsm 而不是 .xlsx

若要刪除巨集:

  1. 如上所示調出 VBE 窗口
  2. 清除程式碼
  3. 關閉VBE視窗

要了解有關巨集的更多信息,請參閱:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解有關事件巨集(工作表程式碼)的更多信息,請參閱:

http://www.mvps.org/dmcritchie/excel/event.htm

必須啟用巨集才能使其工作

編輯#1:

要使用 A1 和 B1 作為名稱,只需替換:

str = Range("A1").Text

和:

str = Range("A1").Text & Range("B1").Text

相關內容