Excel VBA搜索脚本

时间:2014-07-30 08:20:22

标签: vb.net excel excel-vba search basic vba

我试图在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"具有新值的列。

提前致谢!

2 个答案:

答案 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