比较VBA中2个excel文件中的列

时间:2013-11-25 07:15:53

标签: vba excel-vba excel

我有2张excel表,几乎有相同的信息。

第一张表格如下:

ID Name empnumber
1  abc  123
2  xyz  234

第二张看起来像:

ID Name empnumber
1  abc  234
2  xyz  345

我的第一张包含临时员工编号,第二张包含最终员工编号。

我正在尝试创建一个宏,它将更新我的第一个sheet-empnumber列  取决于我的第二张表,通过计算名称或ID值。

我将把第一和第二个excel文件作为用户输入。还比较输入框中的列(名称/ ID),以便用户决定匹配什么。

的伪代码:

if abc from 1st sheet==abc from 2nd sheet
then 
 emp number of abc in 1st sheet = empnumber of abc from 2nd sheet.

如何在VBA中执行此操作?

这是我的代码:

Dim FileNameA As String
Dim FileNameB As String
Dim varSheetA As Variant
Dim varSheetB As Variant
Dim strRangeToCheck As String
Dim iRow As Long
Dim iCol As Long

strRangeToCheck = "A1:B5"

iRet = MsgBox("Select forecast file", vbYes, "Forecast file")
FileNameA = Application.GetOpenFilename()
If FileNameA = "False" Then Exit Sub
Set wbkA = Workbooks.Open(Filename:=FileNameA)
Set sh1 = wbkA.Sheets("Sheet1")
varSheetA = wbkA.Worksheets("Sheet1").Range(strRangeToCheck)

iRet = MsgBox("Select Actual file", vbYes, "Actual file")
FileNameB = Application.GetOpenFilename()
If FileNameB = "False" Then Exit Sub
Set wbkB = Workbooks.Open(Filename:=FileNameB)
Set sh2 = wbkB.Sheets("Sheet1")
varSheetB = wbkB.Worksheets("Sheet1").Range(strRangeToCheck)

strcompareColumn = InputBox("Please enter column name to compare", "Data Entry")
strUpdateColumn = InputBox("Please enter column name to update", "Data Entry")

End Sub

现在我需要从第一张纸找到确切的行/列,从第二张纸中获取值并更新第一张纸。

1 个答案:

答案 0 :(得分:1)

这是一个不使用宏的选项,只有在文件是静态的情况下才有效。你有2个文件,你在同一个Excel实例中打开它们(最简单的方法来引用它们)。在主文件中,将此公式添加到您的一个单元格中。

=IF(ISERROR(VLOOKUP(A2;[Book2]Sheet1!$A$2:$C$4;3;0));IF(ISERROR(VLOOKUP(B2;[Book2]Sheet1!$B$2:$C$4;2;0));"";VLOOKUP(B2;[Book2]Sheet1!$B$2:$C$4;2;0));VLOOKUP(A2;[Book2]Sheet1!$A$2:$C$4;3;0))