excel - Excel VBA - 比较由两列数据组成的值,两列在不同的工作表上
问题描述
我为基于序列号的库存创建了一个 Excel 文档。该文档由四张纸组成,主要、存储、传入历史和传出历史。在主工作表上,我有五列:“日期”、“旅行证件”、“设备类型”、“序列号”和“注释”。
我创建了一个 VBA 宏,用于将数据(带有序列号的多行)从主工作表传输到“存储”和传入/传出的相应列。到目前为止,一切都很好。
当我尝试对 VBA 进行编码以从存储表中删除行时,就会出现问题。我想要做的是将主表中带有设备类型和序列号的列与存储表上的相应两列进行比较。我已经设法,在查看此论坛上的其他代码的帮助下,制作了一个比较两张纸上的序列号列的 vba,然后删除相等的行。使用此代码:
Sub Utmeld()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
Dim CalcMode As Long
Dim ViewMode As Long
With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
With Sheets("storage")
.Select
ViewMode = ActiveWindow.View
ActiveWindow.View = xlNormalView
.DisplayPageBreaks = False
Firstrow = .UsedRange.Cells(1).Row
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
For Lrow = Lastrow To Firstrow Step -1
With .Cells(Lrow, "F")
If Not IsError(Application.Match(.Value, Sheets("Main").Range("F1:F200"), 0)) Then .EntireRow.Delete
End With
Next Lrow
End With
ActiveWindow.View = ViewMode
With Application
.ScreenUpdating = True
.Calculation = CalcMode
End With
End Sub
但是,问题是,我可能会偶然发现具有相同序列号的不同设备类型,因此我需要在比较中包含 E 列。简单伪代码:如果主工作表上的 E 和 F 列 = 存储工作表上的 E 和 F 列,则删除整行。
非常感谢任何有关如何解决此问题的帮助!
解决方案
尝试这个。保留您的原始脚本,但仅更改此部分
Lrow = Lastrow To Firstrow Step -1
If Worksheets("main").Cells(Lrow, 1) = Worksheets("storage").Cells(Lrow, 1) Then
Worksheets("storage").activate
Cells(Lrow, 1).EntireRow.Delete
Worksheets("main").activate
End If
Next i
推荐阅读
- javascript - 从用逗号分隔的对象中收集数据并将自己作为单独的对象 - Javascript
- javascript - 重构passport.js认证代码
- java - 如何获取当前活动的实时流列表并按描述和位置过滤它们
- sql - 如何务实地查找 SQL WHERE 子句的条件
- sql-server - 对象“执行”、数据库“SSISDB”、架构“内部”的 SELECT 权限被拒绝
- css - 如何克服 CSS calc() 函数无效的属性值,但在检查器中输入相同的代码时是否有效?
- java - 从 Volley 请求中获取返回值
- mysql - 在 MYSQL 中保存具有不同数据类型的测验答案的最佳做法是什么?
- java - 带有 H2 DB 的 JPA EntityManager.lock - java.sql.SQLException:当多个事务对同一实体使用锁定时,连接已关闭
- node.js - $merge 只保存一个文档而不是所有获取的文档:mongodb