簡體   English   中英

根據命名范圍/單元格分配值

[英]Assign value based on named range/cell

我想根據當前單元格名稱分配當前單元格值。

例如,(參見工作表圖像)單元格 B3 分配了名稱“ABC”,B4 分配了名稱“EFG”,B5 分配了名稱“XYZ”,我希望單元格 B3:B5 自動從 D:E 列中的表中獲取相應的值.

樣本

所以我想出的是:

步驟 1. 使用 UDF 識別當前單元格的名稱

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

**我沒有想出上面的 VBA 代碼,歸功於這篇文章: https://superuser.com/questions/683825/formula-return-cell-defined-name

步驟 2. 使用上述步驟 1 中的 cell_name 進行 Vlookup

B3 到 B5 中的單元格公式 =VLOOKUP(cell_name(),$D$3:$E$8,2,FALSE)

通過應用上述兩個步驟,單個單元格確實按預期返回值,但是,只要工作表中的任何值發生更改,例如將單元格 E7 中的值從 500 更改為 5000,或插入新行,計算就會中斷並產生 #N/As在 B3:B5

我試過 Application.Volatile,但沒有用。

我還嘗試使用宏強制重新計算單元格,但也沒有按預期工作。

Sub Force_Recalc()
    Cells.Replace What:="=", Replacement:="=", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End Sub

有什么建議嗎? 要么改進我現有的功能以按預期工作,要么以更智能的方式實現我想做的事情。

謝謝!

cell_name()中,使用Application.Caller而不是ActiveCell

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM