我有一个工作簿,我想在其中引用第一个工作表 (B1) 中的范围,以便在第二个工作表 (B3) 的单元格中输入公式。我的问题是第一个工作表的名称总是会改变,所以我想解决这个问题,我将根据公式可以使用的单元格引用创建一个变量。这是我到目前为止所拥有的:
Sub GetCellAddress()
Dim Cell As Range
Dim CellAddress As String
Set Cell = ActiveWorkbook.Worksheets(1).Cells(1, 2)
CellAddress = Cell.Parent.Name & "!" & Cell.Address(External:=False)
With ActiveSheet
Range("B3").Select
ActiveCell.Formula = _
"=CONCATENATE(""Balance Sheet"","" - "",MID(CellAddress,FIND("" "",CellAddress,FIND("","",CellAddress)+2)+1,256))"
End With
'MsgBox CellAddress
End Sub
虽然 MsgBox 会确认我拥有的 CellAddress 是 Sheet1!$B1$1 我似乎无法通过仅使用 CellAddress 在公式中传递此引用,因为我得到了#NAME?当我使用它时出错。 如果我使用 Sheet1!R[-2]C 作为 ActiveCell.FormulaR1C1 语法,它工作正常,但正如我之前所解释的,我希望代码解析工作表名称。要么我的语法错误,要么我的方法引用另一张工作表中的范围的方式不正确。谁能告诉我哪里出错了。
最佳答案
尝试上述解决方案后,我使用了以下语法:
Sheets(2).Range("B3").Formula = "=CONCATENATE(""Balance Sheet"","" - "",
MID(" & Sheets(1).Name & "!B1,FIND("" "", " & Sheets(1).Name & "!B1,
FIND("","", " & Sheets(1).Name & "!B1)+2)+1,256))"
这似乎解决了我在引用该表时遇到的问题。因此,只需在使用 @asleedawg 的 Index 方法时将引号放在正确的位置即可。
如果工作表名称中包含空格,则必须小心。如果是,则在引用工作表名称的双引号周围添加单引号。
关于excel - 引用在公式中使用的工作表和单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50557967/