我已经为基于序列号的清单创建了一个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列,则删除整个行。
非常感谢您提供有关如何解决此问题的帮助!
答案 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