Excel 从图纸名称和单元格地址中获取值

Excel 从图纸名称和单元格地址中获取值,excel,vba,Excel,Vba,很多时候,我需要从多张工作表中获取一个值(对于一些疯狂的工作簿,它最多可以有200张工作表)。问题是所有这200张纸都有相同的结构,甚至它们的名字,我疯狂地一张接一张地链接这200张纸。有没有办法创建一个用户定义的函数,比如 =getValue(sheetName,cell address) 我试过了 Function GetValue(sheetName As String, cellAddress As String) As Variant GetSheetValue = Range

很多时候,我需要从多张工作表中获取一个值(对于一些疯狂的工作簿,它最多可以有200张工作表)。问题是所有这200张纸都有相同的结构,甚至它们的名字,我疯狂地一张接一张地链接这200张纸。有没有办法创建一个用户定义的函数,比如

=getValue(sheetName,cell address)
我试过了

Function GetValue(sheetName As String, cellAddress As String) As Variant
   GetSheetValue = Range(sheetName & "!" & cellAddress).Value
End Function
在我在Excel文件之间切换之前,它工作得很好。函数开始返回#值,我感觉它试图在其他打开的工作簿上搜索SheetA、B、C、D@A1


这可以在VBA中很容易地解决。下一个循环将遍历所有200个工作表,返回值。例如:

my_index = 1
For Each ws In Worksheets
  If ws.Name <> worksheet_to_store_values_on Then
    worksheet_to_store_values_on.Cells(my_index, 1).Value = _
    ws.Range(myrange).Value
    my_index = my_index + 1
  End If
Next
my_index=1
对于工作表中的每个ws
如果ws.Name工作表要存储值,那么
工作表\u将\u值存储在.Cells上(我的索引,1)。值=_
ws.Range(myrange.Value)
我的指数=我的指数+1
如果结束
下一个
。。。这将循环浏览活动工作簿中的所有工作表,在每张工作表上找到myrange中的值,并将该值存储在A列“我的索引”行中的工作表“工作表到存储值”。您可以根据自己的具体情况进行调整。

尝试下面的代码

Function GetValue(sheetName As String, cellAddress As String) As Variant
   GetSheetValue = ThisWorkbook.Sheets(sheetName).Range(cellAddress)
End Function

如果您想合并所有工作表并生成主文件,那么值得一看,谢谢,但实际上不是合并。我只需要有一个特定的值(1个单元格,只有1个单元格)从每一张纸。非常感谢你-是的-这是我想要的need@user2103670欢迎:)谢谢你的帮助。您的代码非常有用,我将在不同的应用程序中使用它。