首页 文章

尝试使用excel公式或VBA

提问于
浏览
1

我有两个不同的工作簿 . 第1册和第2册都有相同的A到M列数 .

我想匹配两个工作簿之间的记录,例如:我在工作表1和2中有一个名称生日,列B城市,列C护照号........

我想匹配范围A中的工作表1单元格A1:工作表2,如果列A单元格13中的记录与其不匹配,则显示在N13工作簿2中出生日期不匹配,如果它与范围中的工作表1单元格13不匹配B:B工作表2它表示工作簿2中的N 13列中的城市不匹配,依此类推到M列 .

我使用下面的公式,但它不能正常工作,我不知道我缺少什么,我应该添加什么公式 . 我不知道VBA . 但我想看看使用excel公式或vba更容易吗?

IF(COUNTIF(Target!$A$2:$A$5964,Source!A8)=0,"Birthday",IF(COUNTIF(Target!$B$2:$B$5964,Source!B8)=0,"City",IF(COUNTIF(Target!$C$2:$C$5964,Source!C8)=0,"Country",IF(COUNTIF(Target!$E$2:$E$5964,Source!D8)=0,"Passport Number Mismatch in Target",IF(COUNTIF(Target!$F$2:$F$5964,Source!E8)=0," Travel Date Mismatch in Target",IF(COUNTIF(Target!$G$2:$G$5964,Source!F8)=0,"First Name Mistmatch in Target",IF(COUNTIF(Target!$H$2:$H$5964,Source!G8)=0,"Full Name Mismatch in Target","Match in Target")))))))

提前致谢 .

1 回答

  • 1

    VBA可以访问这些相同的工作表公式函数(例如COUNTIF):实际上没有VBA具有公式所没有的列或矩阵函数 .

    但是,VBA允许您编写循环(例如while,for),它允许if语句,过程调用和许多代码行,因此您的计算可以有更多步骤,因此更复杂 . VBA还允许您以数组的形式(以及字符串和对象)拥有临时空间(因此您不一定需要使用列作为临时空间,就像使用公式一样) . VBA还允许递归,这使得一些计算更容易(对于某些定义) .

    VBA提供了命令式编程模型 . VBA程序可以读写电子表格的任何单元格 . 另一方面,命令式编程需要以某种方式触发,例如使用按钮 .

    相比之下,带有公式的数据流编程模型会在输入源发生变化时自动重新计算,这很好 . 但是在某些情况下它不能自然处理(例如递归) .

    另一种选择是通过编写随后在VBA中实现的新公式,将VBA与公式结合起来 . 如果您这样做,VBA只能通过函数返回值返回信息;它不能以其他方式修改电子表格 .

    所以,如果你能想到如何更容易地使用循环(和数组)或递归,并且可能使用按钮来触发计算(或通过使用自定义公式),那么VBA可能会很有趣 .

相关问题