【问题标题】:Excel vba import data from another workbook and compareExcel vba 从另一个工作簿导入数据并进行比较
【发布时间】:2016-12-21 10:58:37
【问题描述】:

我有一个 excel 工作簿“源”(带有数据参数),例如:

名称 PARAMS1 PARAMS2 ...
名称 1 参数 1_1 参数 1_2 ...
名称 2 参数 2_1 参数 2_2 ...
名称3 参数3_1 参数3_2 ...

在另一个工作簿“报告”中,我有例如“B”列,其中有我的“名称”,例如: .A.....B.......C
....name1...
....name1...
....name2...
....name3...
....name2...
...
现在我想:
1.从“源”导入数据到“报告”
2.如果我有相同的名字,请在列中检查
3.如果我找到相同的名称,我将相应名称的值(参数)放在列中,例如“C”

我有一个大的请。我需要工作示例而不是建议,比如我应该了解 Vlookup 或集合或数组。
问候
杰克

【问题讨论】:

标签: excel vba


【解决方案1】:

好吧,我自己做到了。

Sub FBA_test_1()

Dim products As Variant
Dim productsWithParams As Variant
LastRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

'products = Array("one", "two", "three")
products =Workbooks("sourceFile.xlsx").Worksheets("Sheet1").Range("A2:A4").Value

'productsWithParams = Array(Array("one", 10, 11), Array("two", 20, 21), Array("three", 30, 31))
productsWithParams = Workbooks("sourceFile.xlsx").Worksheets("Sheet1").Range("A2:C4").Value

For x = LastRow To 1 Step -1

    ' if value not found inside the array using the "MATCH" function
    pos = Application.Match(Range("$A$" & x).Value, products, 0)
    If IsError(pos) Then
        Range("$B$" & x).Value = "ERROR - "
    Else ' successful "MATCH" inside the array
        Range("$B$" & x).Value = pos
        Range("$C$" & x).Value = products(pos, 1) 'name
        Range("$D$" & x).Value = productsWithParams(pos, 2) 'param1
        Range("$E$" & x).Value = productsWithParams(pos, 3) 'param2

   End If
Next
End Sub

我使用两个数组,一个是普通数组,一个是 2d 数组,因为 2d 不适用于 Application.Match
问候

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-23
    • 2014-09-24
    • 2019-12-09
    相关资源
    最近更新 更多