excel - 引用在公式中使用的工作表和单元格

标签 excel excel-formula vba

我有一个工作簿,我想在其中引用第一个工作表 (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/

相关文章:

VBA 打印 .SelectedItem 与 MsgBox

vba - 在 Excel 中自动添加加载项的单个菜单项

excel - 日期范围之间两个不同的营业时间范围(如轮类)

excel - 无法理解 Excel 公式

python - 将 Excel 文件从 Python 读取到内存中并将工作表传递给 Pandas

Excel 多行条件色阶

vba - 在Word中使用VBA,如何找到特定的文本并在大纲中继续编号

vba - 清理条件格式 (Excel VBA)

QueryTables 循环中的 VBA 错误处理

python - 如何将 Google Sheets 数据写入 Microsoft Excel?