Excel VBA - Сравнение значений, состоящих из данных из двух столбцов, с двумя столбцами на разных листах - PullRequest
0 голосов
/ 28 сентября 2018

Я создал документ Excel для инвентаризации на основе серийного номера.Документ состоит из четырех листов: Основной, Хранение, Входящая история и Исходящая история.На главном листе у меня есть пять столбцов: «Дата», «Проездной документ», «Тип оборудования», «Серийный номер» и «Комментарии».

Я создал макрос VBA для передачи данных (несколько строк с порядковыми номерами) от основного листа, до соответствующих столбцов на «Хранилище» и Входящие / исходящие.Пока все хорошо.

Проблема возникает, когда я пытаюсь закодировать VBA для удаления строк из листа хранения.Я хочу сравнить столбцы с типом оборудования и серийным номером на основном листе с соответствующими двумя столбцами на листе хранения.С некоторой помощью, просмотрев другие коды на этом форуме, мне удалось создать vba, которая сравнивает столбец с серийным номером на обоих листах, а затем удалил строки Equal.Используя этот код:

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 на листе хранения, то удалите всю строку.

Любая помощь в том, как решить эту проблему, очень ценится!

1 Ответ

0 голосов
/ 28 сентября 2018

Попробуй это.Сохраните свой оригинальный скрипт, но измените только эту часть

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...