首页 文章

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

提问于
浏览
0

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

第一张看起来像:

ID Name empnumber
1  abc  123
2  xyz  234

第二张看起来像:

ID Name empnumber
1  abc  234
2  xyz  345

我的第一张包含 temporary 员工编号,第二张包含 final 员工编号 .

我正在尝试创建一个宏,它将根据我的第二张表更新我的第一个sheet-empnumber列,方法是使用Name或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")

结束子

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

1 回答

  • 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))
    

相关问题