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

但是,问题是,我可能会偶然发现具有相同序列号的不同 euipment 类型,因此我需要在比较中包含 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

最新更新