【问题标题】:VBScript Search Excel Workbook for Value from another WorkbookVBScript 在 Excel 工作簿中搜索另一个工作簿中的值
【发布时间】:2015-09-10 00:08:44
【问题描述】:

我是 VB 脚本的新手,所以请多多包涵!我正在尝试创建一个使用来自两个不同 Excel 工作簿的工作表的脚本。它打开第一个工作表并遍历指定范围。然后我希望它获取该范围内每个单元格的值并搜索第二个工作表(在不同的工作簿中)并搜索在第一个工作表中找到的值,如果找到该值,则返回地址找到它的单元格。例如:

Worksheet1
╔══════╦═════╗
║ Name ║ Age ║
╠══════╬═════╣
║ Matt ║  22 ║
║ Jeff ║  13 ║
╚══════╩═════╝

Worksheet2
╔═══════╦════════════╗
║ Name  ║    DOB     ║
╠═══════╬════════════╣
║ Dave  ║ 09/12/2001 ║
║ Frank ║ 01/25/1992 ║
║ Jeff  ║ 10/10/2013 ║
╚═══════╩════════════╝

所以脚本会输出:A4 因为它在第二个工作表中找到了第一个工作表的指定范围 (A2:A3) 中的一个值,并且正在返回该单元格的位置。

这是我的代码:

Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True

Dim val

Set objWorkbook = objExcel.Workbooks.Open("C:\Users\username\file.xlsx")
Set objWorksheet = objWorkbook.Worksheets("Sheet1")

Set objWorkbook2 = objExcel.Workbooks.Open("C:\Users\username\file2.xlsx")
Set objWorksheet2 = objWorkbook2.Worksheets("Sheet1")


For Each c In objworksheet.Range("A2:A3").Cells
    val = c.value
    Set objRange = objWorksheet2.UsedRange
    Set found = objRange.Find(val)
    Wscript.Echo found.AddressLocal(False,False)
Next

当我运行此代码时,我收到以下错误:

错误:需要对象:“找到”

我确信我在这里遗漏了一些明显的东西,但我已经旋转了很长一段时间,并希望有人可以提供一些反馈。非常感谢任何帮助!

【问题讨论】:

  • 感谢@Bond 的格式编辑!

标签: excel vba vbscript


【解决方案1】:

Find() 函数如果成功则返回 Range 对象,否则返回 Nothing。因此,在尝试访问其属性和方法之前,您需要测试返回值以确保它是 Range 对象。

For Each c In objworksheet.Range("A2:A3").Cells
    val = c.value
    Set objRange = objWorksheet2.UsedRange
    Set found = objRange.Find(val)

    ' Test for success!
    If Not found Is Nothing Then
        Wscript.Echo found.AddressLocal(False,False)
    End If
Next

【讨论】:

  • 啊,这很有意义!谢谢!当我这样做时,它没有在第二个 excel 表中找到值,即使当我硬编码要查找的值时,它也没有发现问题。有什么想法吗?
  • 我会在你的 Find() 语句上设置一个断点,并确保 val 是你所期望的。 Find() 的默认参数将搜索部分匹配 (LookAt:=xlPartxlWhole) 并且不考虑大小写 (MatchCase:=False) 进行搜索,因此默认情况下它非常“开放”。 Worksheet2 中的名称是直接输入的,对吗?它们不是公式驱动的?
  • 谢谢 - 最后在工作表 1 中有一个额外的空白,这就是为什么它无法在工作表 2 中找到它。再次感谢您的所有帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-16
  • 2013-10-23
  • 2015-09-07
相关资源
最近更新 更多