1

很多时候,我需要从多张工作表中获取一个值(对于一些疯狂的工作簿 - 最多可达 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 文件之间切换之前效果很好。该函数开始返回#Value,我的感觉是它试图在其他打开的工作簿上搜索 SheetA、B、C、D @A1。

在此处输入图像描述

4

2 回答 2

2

试试下面的代码

Function GetValue(sheetName As String, cellAddress As String) As Variant
   GetSheetValue = ThisWorkbook.Sheets(sheetName).Range(cellAddress)
End Function
于 2013-10-11T19:14:30.003 回答
1

这可以很容易地在 VBA 中解决。For...Next 循环将遍历所有 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

...这将遍历活动工作簿中的所有工作表,在每张工作表上的myrange中找到值,并将此值存储在 A 列“my_index”行的工作表“worksheet_to_store_values_on”中。您可以适应您的特定情况。

于 2013-10-11T19:09:25.943 回答