Excel 动态mnacro比较两个表,如果在一个表上找不到行,则添加行;如果找到行但某些信息不同,则更新信息
我一直在写这个Excel宏,希望能得到一些帮助。我正在尝试创建一个动态宏,它将比较两个不同工作表中的两个表,如果不同,则更新一行的信息,如果不存在,则将新行复制到新表中。两个表都包含相同的信息列,并且每个数据行都有唯一的产品代码。按下按钮后,如果在新表中未找到表1中该行的产品代码,则该行将被复制。如果在新表中找到产品代码,但列中的其他信息不同,则其他信息将在新表中更新。如果找到产品代码且其他信息相同,则不会复制该行。在表1中,我需要尽可能多的行 注意:我认为VLOOKUP可能是成功编写这个宏的途径……下面是我迄今为止的尝试Excel 动态mnacro比较两个表,如果在一个表上找不到行,则添加行;如果找到行但某些信息不同,则更新信息,excel,copy,paste,vba,Excel,Copy,Paste,Vba,我一直在写这个Excel宏,希望能得到一些帮助。我正在尝试创建一个动态宏,它将比较两个不同工作表中的两个表,如果不同,则更新一行的信息,如果不存在,则将新行复制到新表中。两个表都包含相同的信息列,并且每个数据行都有唯一的产品代码。按下按钮后,如果在新表中未找到表1中该行的产品代码,则该行将被复制。如果在新表中找到产品代码,但列中的其他信息不同,则其他信息将在新表中更新。如果找到产品代码且其他信息相同,则不会复制该行。在表1中,我需要尽可能多的行 注意:我认为VLOOKUP可能是成功编写这个宏的途
Sub Copy_Attempt()
Application.ScreenUpdating = False
Dim s1 As Worksheet, s2 As Worksheet
Set s1 = Sheets("Raw Data")
Set s2 = Sheets("BAS Linkage Master")
Dim i As Integer
Dim j As Integer
Dim Proj_ID As String
Dim Lookup_Range As Range
Dim Linkage_Lookup_Range As Range
Dim Raw_Percent_Complete As String
Dim Linkage_Percent_Complete As String
Set Lookup_Range = s1.Range("A1:O1000")
Set Linkage_Lookup_Range = s2.Range("A6:N1000")
For i = 2 To 1000
Proj_ID = s1.Range("F" & i).Value
Raw_Percent_Complete = Application.WorksheetFunction.VLookup(Proj_ID, Lookup_Range, 10, False)
Next
For j = 7 To 1000
Linkage_Percent_Complete = s2.Range("I" & j).Value
Next
If Raw_Percent_Complete = Linkage_Percent_Complete Then
' DO NOT COPY THAT ROW OVER
Else
Percent_Complete = Range("I" & j).Value
'UPDATE PERCENT COMPLETE FOR THAT SPECIFIC PRODUCT CODE
End If
Sheets("Raw Data").Activate
Columns("H").EntireColumn.Delete
Range("A2:P1000").Select
Selection.Copy
Sheets("BAS Linkage Master").Activate
Range("A" & Rows.Count).End(xlUp).Offset(1).Select
Selection.PasteSpecial
' Sheets("Welcome").Activate
' Range("A11:O11").ClearContents
Sheets("Raw Data").Activate
Range("A2:N10000").ClearContents
Application.CutCopyMode = False
Application.ScreenUpdating = True
Sheets("BAS Linkage Master").Activate
End Sub
这是一个很好的小脚本,可以查找差异并突出显示差异
Public Sub CompareSheets()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim cell As Range, rng As Range
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set rng = ws1.Range("A1:B20")
For Each cell In rng
Celladdress = cell.Address
If cell <> ws2.Range(Celladdress) Then
cell.Interior.Color = vbYellow
ws2.Range(Celladdress).Interior.Color = vbYellow
End If
Next cell
End Sub
公共子比较表()
将ws1标注为工作表,将ws2标注为工作表
变暗单元格作为范围,rng作为范围
设置ws1=工作表(“表1”)
设置ws2=工作表(“表2”)
设置rng=ws1.范围(“A1:B20”)
对于rng中的每个单元
Celladdress=单元格地址
如果单元格ws2.Range(单元格地址),则
cell.Interior.Color=vbYellow
ws2.Range(Celladdress).Interior.Color=vbYellow
如果结束
下一个细胞
端接头
可以使用相同的概念将值从一个表复制到另一个表
Public Sub CompareSheets()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim cell As Range, rng As Range
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set rng = ws1.Range("A1:B20")
For Each cell In rng
Celladdress = cell.Address
If cell <> ws2.Range(Celladdress) Then
ws2.Range(Celladdress).Value = ws1.Range(Celladdress).Value
End If
Next cell
End Sub
公共子比较表()
将ws1标注为工作表,将ws2标注为工作表
变暗单元格作为范围,rng作为范围
设置ws1=工作表(“表1”)
设置ws2=工作表(“表2”)
设置rng=ws1.范围(“A1:B20”)
对于rng中的每个单元
Celladdress=单元格地址
如果单元格ws2.Range(单元格地址),则
ws2.Range(Celladdress).Value=ws1.Range(Celladdress).Value
如果结束
下一个细胞
端接头
这是一个很好的小脚本,可以查找差异并突出显示差异
Public Sub CompareSheets()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim cell As Range, rng As Range
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set rng = ws1.Range("A1:B20")
For Each cell In rng
Celladdress = cell.Address
If cell <> ws2.Range(Celladdress) Then
cell.Interior.Color = vbYellow
ws2.Range(Celladdress).Interior.Color = vbYellow
End If
Next cell
End Sub
公共子比较表()
将ws1标注为工作表,将ws2标注为工作表
变暗单元格作为范围,rng作为范围
设置ws1=工作表(“表1”)
设置ws2=工作表(“表2”)
设置rng=ws1.范围(“A1:B20”)
对于rng中的每个单元
Celladdress=单元格地址
如果单元格ws2.Range(单元格地址),则
cell.Interior.Color=vbYellow
ws2.Range(Celladdress).Interior.Color=vbYellow
如果结束
下一个细胞
端接头
可以使用相同的概念将值从一个表复制到另一个表
Public Sub CompareSheets()
Dim ws1 As Worksheet, ws2 As Worksheet
Dim cell As Range, rng As Range
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
Set rng = ws1.Range("A1:B20")
For Each cell In rng
Celladdress = cell.Address
If cell <> ws2.Range(Celladdress) Then
ws2.Range(Celladdress).Value = ws1.Range(Celladdress).Value
End If
Next cell
End Sub
公共子比较表()
将ws1标注为工作表,将ws2标注为工作表
变暗单元格作为范围,rng作为范围
设置ws1=工作表(“表1”)
设置ws2=工作表(“表2”)
设置rng=ws1.范围(“A1:B20”)
对于rng中的每个单元
Celladdress=单元格地址
如果单元格ws2.Range(单元格地址),则
ws2.Range(Celladdress).Value=ws1.Range(Celladdress).Value
如果结束
下一个细胞
端接头
RYGY7272非常感谢您!信不信由你,我仍然没有完全弄明白这一点,并且意识到我的问题没有得到很好的解释。我用图表制作了一个word文档,完美地解释了它,如果你能弄明白的话,我会付钱给你的!非常感谢你!信不信由你,我仍然没有完全弄明白这一点,并且意识到我的问题没有得到很好的解释。我用图表制作了一个word文档,完美地解释了它,如果你能弄明白的话,我会付钱给你的!