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表格,并在其中查找