在 Excel 公式中读取名称

在 Excel 公式中读取名称

我目前在使用 excel 时遇到了数据输入问题。我有一个包含大量工作表的 exel 文件。这些工作表包含大量数据,并且它们都有不同的名称。幸运的是,我需要的数据始终位于同一位置(比如说 D5)。因此,我想执行以下操作:

工作表包括:Data1、Data2、Data3、Data4 和 Data5。

分析工作表显示:

 =Data1!$D$5
 =Data2!$D$5
.... and so on

但到目前为止我手动输入了数据名称,因为有数百个数据名称,所以我想问是否有更好的方法,例如:

      A    B    C
1   data1      =A1!$D$5
2   data2      =A2!$D$5
3   data3
4   data4
5   data5

有没有办法来解决这个问题?

非常感谢!

答案1

您可以使用INDIRECT函数例如

=INDIRECT(A1&"!D5")

或者如果您的工作表名称包含空格:

=INDIRECT("'"&A1&"'!D5")  

在这两种情况下,您都可以使用以下替代方案:

=INDIRECT(ADDRESS(5,4,,,A1))  

在这个公式中不需要添加'

答案2

您可以在 VBA 中定义用户定义函数(记住将您的 Excel 表保存为带有宏的工作簿,.XLSM)。

Public Function sheetNameList() As String()
    Dim returnArray() As String
    ReDim returnArray(1 To Worksheets.Count, 1 To 2)
    For Each ws In Worksheets
        returnArray(ws.Index, 1) = ws.Name
        If ws.Name <> "Analysis" Then
            returnArray(ws.Index, 2) = ws.Range("D5")
        End If
    Next
    sheetNameList = returnArray
End Function

现在添加一个名为“Analysis”的工作表,并在第一个单元格中输入=sheetNameList()。这将生成工作表列表,以及除名为“Analysis”的工作表之外的每个工作表的 D5 中的值。

相关内容