我试图在Visual Basic中编写一个脚本,它可以这样做: 我有2个Excel工作表,我想从#2 excel表中的#1 excel表中搜索所有行,如果它相似,我想替换该行中的特定列(在#2 excel表中) 。
问题是,我不知道如何在VB中搜索Excel文档,然后使用搜索结果。
一个例子:
#1 Excel sheet
A B C
Ferrari|1997|5.0|
Porsche|1998|7.0|
#2 Excel Sheet
A B C
Audi |1993|4.0|
Ferrari|1997|2.0|
Porsche|1998|3.0|
Opel |1999|1.4|
因此,在这种情况下,我想用#2 Excel表格替换#2 Excel表格中的法拉利和保时捷行并替换" C"具有新值的列。
提前致谢!
答案 0 :(得分:0)
好像你想在两个表上留下外连接。我通常使用Excel中的SQL来执行此操作。 安装我的Excel Excel加载项:http://www.analystcave.com/excel-sql-add-in-run-sql-in-excel-with-ease/
假设您有一个工作表,其中Sheet1中有一个
A B C
Ferrari 1 2
Porsche 2 3
Opel 3 10
Audi 4 11
并在另一个工作表Sheet2中
A B C
Ferrari 1 20
Porsche 2 21
从“加载项” - >“运行SQL”打开“运行SQL”命令。在“输出范围”中选择任何单元格。在SQL类型中:
SELECT T1.A, T1.B, Iif(T2.C IS NULL,T1.C,T2.C) As C FROM [Sheet1$] As T1 LEFT OUTER JOIN [Sheet2$] AS T2 ON T1.A = T2.A
点击“运行SQL”,就是这样!
答案 1 :(得分:0)
这段代码既不好也不漂亮,但它会起作用
Sub test()
Dim car As String
Dim car_year As String
Dim i As Integer
'read the first document and store it in an array(list)
i = 1
car = Range("A" & i).Value
car_year = Range("B" & i).Value
While car <> ""
MsgBox car & "-" & car_year
'check if the combination car+car_year exist the the first document and replace cell C(i)
i = i + 1
car_year = Range("B" & i).Value
car = Range("A" & i).Value
Wend
End Sub