excel - 当前 VBA 代码根据条件复制,但每次运行时都会复制以前的数据
问题描述
基本上我不熟悉任何类型的编码,我可以输入书面代码并找出我需要更改的内容,但我不擅长编写任何新内容。
我有一个 Excel 电子表格,我们可以跟踪程序的接受和拒绝情况。我需要在第二张纸上跟踪拒绝,以便它们都在一个区域中。
我找到了一个 Excel 的 VBA 代码,它成功地将我想要的信息从一张基于值的工作表复制到第二张工作表。因此,当我选择“拒绝”并运行代码时,它会将所有数据复制到第二张工作表中。需要注意的是,每次运行代码时,它都会提取新数据和以前复制的数据。
我想添加到 VBA 代码以不复制以前复制的数据或找到自动删除重复项的代码。
所以我确实环顾四周,看看是否能找到一些重复数据删除的 VBA 代码,我尝试了一些,但原始代码无法正常运行,并且出现了一些错误。我有一个看起来非常好,但它似乎不能很好地与原始副本代码配合使用。
以下是正在复制被拒绝的当前代码。
Private Sub CommandButton1_Click()
a = Worksheets("ARD2019").Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To a
If Worksheets("ARD2019").Cells(i, 2).Value = "Rejected" Then
Worksheets("ARD2019").Rows(i).Copy
Worksheets("Rejected").Activate
b = Worksheets("Rejected").Cells(Rows.Count, 1).End(xlUp).Row
Worksheets("Rejected").Cells(b + 1, 1).Select
ActiveSheet.Paste
Worksheets("ARD2019").Activate
End If
Next
Application.CutCopyMode = False
我的希望是,我不必告诉使用该程序的人只需手动运行 Excel 的重复数据删除功能,但如果在上面的代码之上编写代码不现实,我认为他们不会抱怨,因为这仍然比他们以前手动处理行的方法要好。
解决方案
让我们假设 A 列在两个工作表中都有唯一的键。下面是一个简单的入门方法:
Option Explicit
Private Sub CommandButton1_Click()
Dim LastRowSour As Long, LastRowDest As Long, Row As Long
Dim wsSou As Worksheet, wsDes As Worksheet
'Set worksheets
With ThisWorkbook
Set wsSou = .Worksheets("ARD2019")
Set wsDes = .Worksheets("Rejected")
End With
'Find the last row of column A of wsSou
LastRowSour = wsSou.Cells(wsSou.Rows.Count, "A").End(xlUp).Row
'Loop start from row 2 to LastRowSour
For Row = 2 To LastRowSour
'Find the last row of column A of wsDes
LastRowDest = wsDes.Cells(wsDes.Rows.Count, "A").End(xlUp).Row
'Chek if .Cells(Row, 2).Value is reject & wsSou.Cells(Row, 1).Value is not appear in the first column of wsDes
If wsSou.Cells(Row, 2).Value = "Rejected" And Application.CountIf(wsDes.Range(wsDes.Cells(1, 1), wsDes.Cells(LastRowDest, 1)), wsSou.Cells(Row, 1).Value) = 0 Then
wsSou.Rows(Row).Copy
wsDes.Range("A" & LastRowDest + 1).PasteSpecial xlPasteValues
End If
Next
Application.CutCopyMode = False
End Sub
推荐阅读
- c# - 统一解析xlsx文件
- z3 - 为什么引入这个存在量词会导致不终止?
- android - Android Studio 如何使 WebView 支持阿拉伯语,即 RTL 文本方向?
- amazon-web-services - AWS 100 TB 静态数据转换 S3
- java - 在带有 CDT 的 eclipse 插件中使用自己的 CodeFormatter
- database - 无法让我的 docker-compose 文件与根的基岩一起使用
- javascript - 获取任意给定数量的包含字符串的数组的交集元素的函数
- android - 将 mix-blend-mode 设置为“正常”以外的任何内容都会在 Android 9 上的 Chrome 中隐藏元素
- java - Crashlytic 不显示确切的代码行和错误
- sql - 对 Access 中的链接表运行 VBA 请求时出现错误 3021