【问题标题】:Get a value from the sheet name and cell address从工作表名称和单元格地址中获取值
【发布时间】:2013-12-04 03:07:23
【问题描述】:

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

【问题讨论】:

  • 如果你想合并所有工作表并制作一个主文件,那么值得看看RDB Merge Addin
  • 谢谢,但不是真正的整合。我只需要从每张纸上获得一个特定的值(1 个单元格,只有 1 个单元格)。

标签: excel vba


【解决方案1】:

试试下面的代码

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

【讨论】:

  • 非常感谢 - 是的 - 这就是我需要的
  • @user2103670 欢迎:)
【解决方案2】:

这可以在 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”行中的列A. 你可以适应你的特殊情况。

【讨论】:

  • 感谢您的帮助。你的代码真的很有帮助,我会在不同的应用程序中使用它。
猜你喜欢
  • 1970-01-01
  • 2016-06-29
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2012-03-13
  • 1970-01-01
  • 2020-09-18
  • 1970-01-01
相关资源
最近更新 更多