VBscript来比较给定行的两个excel工作表中某些列的内容

VBscript来比较给定行的两个excel工作表中某些列的内容,excel,vbscript,Excel,Vbscript,我是新来的,所以请容忍我。我有两张表,分别代表一个旧数据库和一个新数据库,其结构如下 A B(key) C D E F 837 | 15287RI0300002 |个人|选择|直接|新计划 A B(key) C D E F G H 837 | 15287RI0300002 |个人|评级1 |评级2 |选择RI |直接|新计划 A B(

我是新来的,所以请容忍我。我有两张表,分别代表一个旧数据库和一个新数据库,其结构如下

A          B(key)      C       D      E       F
837 | 15287RI0300002 |个人|选择|直接|新计划

A          B(key)      C      D      E       F      G      H
837 | 15287RI0300002 |个人|评级1 |评级2 |选择RI |直接|新计划

A          B(key)      C      D      E       F      G      H
我必须根据键比较一行的内容,并突出显示差异。现在的问题是列没有排序。因此,我需要从一张图纸到另一张图纸的映射

有人能帮我用vbscript吗?请尝试给出一个通用的解决方案,因为我的工作簿中有多个工作表

附言

  • 行未排序
  • 这些工作表在单独的工作簿中
  • 旧工作表中的键不必总是存在于新工作表中

  • 由于新旧数据库中的列不相同,因此需要编写映射。一种可能是在单独的工作表中创建一个表,在其中指定哪一列对应于另一列。有点难以维护,一直在换床单和检查

    另一种可能是在新数据库的工作表顶部插入一行,并将旧数据库的列标题的名称写入其中。然后,您可以执行类似的操作(而下面的代码假定您已经覆盖了标题,而不是在上面插入一行,因此您可能必须对此进行调整)

    子比较()
    “很多瓦特。。。
    将SHT设置为工作表,SHT设置为工作表
    调暗键旧为范围,键新为范围
    Dim rOld As范围,rNew As范围
    变暗colOld作为范围,colNew作为范围
    Dim NUMCOLSALL为整数,numColsNew为整数,i为整数,k为整数
    “设定
    Set SHTELL=ThisWorkbook.Sheets(1)
    Set shtNew=ThisWorkbook.Sheets(2)
    numcolsell=shtell.UsedRange.Columns.Count
    numColsNew=shtNew.UsedRange.Columns.Count
    '旧数据库的循环列B
    对于k=1到shtell.UsedRange.Rows.Count-1
    Set keyOld=SHTELL.Range(“B”和k+1)
    '在其他工作表中查找键(假设键始终在B中,
    '否则也在此处进行列搜索,请参见下文)
    设置keyNew=shtNew.Range(“B:B”).Find(keyOld.Value,LookIn:=xlValues)
    如果不是新的,那就什么都不是了
    Debug.Print“在以下位置找到密钥:”&keyNew.Address
    "圈马"
    对于i=1到numcolsell
    将colOld=shtell.Cells(1,i)设置为“从A开始,从第一个向左”
    '在新文件中查找列标题
    设置colNew=shtNew.Range(“A1:”&单元格(1,numColsNew.Address).Find(colOld.Value,LookIn:=xlValues)
    如果不是新的,那就什么都不是了
    Debug.Print“在以下位置找到列:”&colNew.Column
    Set rOld=shtell.Cells(keyOld.Row,colOld.Column)
    设置rNew=shtNew.Cells(keyNew.Row,colNew.Column)
    如果rOld rNew,则rNew.Interior.ColorIndex=24
    如果结束
    设置newcol=Nothing
    接下来我
    如果结束
    设置newkey=Nothing
    下一个k
    "清理",
    设置rOld=无
    设置rNew=无
    设为零
    设置shtNew=Nothing
    端接头
    
    工作表中的列标题是否与您显示的相同?您需要代码迭代所有行还是只对特定行调用?并非所有列标题都相同,我需要迭代第一个工作表中的所有行。是否可以将此vba模块转换为VBscript。我对这一切有一个非常悲观的想法。对不起,错过了剧本部分。为什么不能从Excel中执行此操作?我得到了我的指导:)谢谢Ronald,关于如何执行除数组之外的映射有什么想法吗?正如我所写的:插入行并在那里执行名称映射。否则,请使用Excel表格,并在其中查找