我目前在使用 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 中的值。