Excel VBA - 比较两个工作簿中的两个数组

时间:2018-06-08 15:43:19

标签: excel vba excel-vba

我在两个不同的工作簿中使用了两个不同的工作表。我正在使用第一个工作表中的数据来填写第二个工作表。

我在Workbook A中有两个列表(称为x和y),在Workbook B中有两个列表。我正在比较Workbook A和B中的列表x。如果WorkbookA-ListX中的任何单元格与任何列表匹配在WorkbookB-ListX中的单元格中,我将WorkbookA-ListY中的单元格值复制到WorkbookB-ListY中的单元格。

我在比较原来的两个列表时遇到了麻烦。我正在考虑使用WorkbookA-ListX中的第一个值并将其与数组WorkbookB-ListX进行比较以查看是否存在任何匹配,然后只增加WorkbookA-ListX。

列表基本上是同一列中的一系列值,因此B3:B53例如是列表的大小。我使用这个link来帮助我,但是当我到达第一个“For iRow ...”时,我一直收到错误代码,说“运行时错误13,类型不匹配”。我该怎么办?< / p>

page?.Controls.Add(new DnnCssInclude
        {
            ...
        });

1 个答案:

答案 0 :(得分:0)

你实际上是在使用范围,而不是数组。你声明了     Dim varSheet0,varSheet1 As Variant 代替     Dim varSheet0()as Variant,varSheet1()As Variant

那就是说,你真的不需要数组。

但我不认为您将WALX中的每个值与整个 WBLX进行比较。

这会有用吗?

For iRow = 1 To varSheet0.Rows.Count
    iRowResult = ""
    On Error Resume Next
        'Where is varSheet0 value in varSheet1?
        iRowResult = WorksheetFunction.Match(varSheet0.Cells(iRow).Value, varSheet1, 0)
    On Error GoTo 0
    If iRowResult = "" Then
        'There's no match in varSheet1. Do what you need.
    End If
Next iRow