从工作表名称和单元格地址获取值

时间:2013-10-11 18:57:26

标签: excel-vba vba excel

很多时候我需要从多张表中获取一个值(对于一些疯狂的工作簿 - 最多可以达到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。

enter image description here

2 个答案:

答案 0 :(得分:2)

尝试以下代码

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

答案 1 :(得分: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 中的值,并将此值存储在工作表“worksheet_to_store_values_on”列的“my_index”行中答:您可以适应您的特定情况。