Excel VBA-比较由两列数据组成的值,两列在不同的工作表上

时间:2018-09-28 08:13:04

标签: excel vba duplicates compare

我已经为基于序列号的清单创建了一个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

但是,问题是,我可能会偶然发现具有相同序列号的不同euupment类型,因此我需要在比较中包括E列。简单的伪代码:如果主表中的E和F列=存储表中的E和F列,则删除整个行。

非常感谢您提供有关如何解决此问题的帮助!

1 个答案:

答案 0 :(得分:0)

尝试一下。保留原始脚本,但仅更改此部分

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