2015-06-20 6 views
-1

Я новичок в макросах Excel и нуждаюсь в помощи в создании макроса, который поможет мне много работать.Сравнение ячеек в одном листе с столбцами в другом и печать строк на третьем листе

У меня есть список двух частей, в отдельных листах, оба предназначены для одного и того же приложения, но один из них - это старый список деталей, а другой - новая версия. Время от времени может быть тысяча частей в списке деталей.

Мне нужно сравнить их, чтобы узнать, были ли какие-либо дополнения к новому списку деталей, и если они были удалены из старого списка. Затем скопируйте ряд добавленных частей на отдельный рабочий лист под названием «Дополнения» и удаленные части на один «Удалено».

Также удалите дубликаты из списка перед сопоставлением, так как иногда есть повторяющиеся номера деталей. Необходимо удалить всю строку.

Так что в основном я хочу знать, есть ли способ взять ячейку в новом списке, начиная с B1, и сравнить ее один за другим с столбцом B в старом списке деталей, начиная с B1.

Если в новом списке указано совпадение следующего номера партии.

Если нет, например, если он достигнет пустой ячейки, скопируйте строку номера детали в новый лист «Дополнения».

И наоборот, сравнивая старый список деталей с новым и, если нет совпадения, скопируйте строку на лист «Удалено».

ответ

1

Как отмечают в комментариях, его трудно помочь вам, не видя того, что вы уже пробовали. Чтобы начать работу, я рекомендую использовать макрорекордер, чтобы изучить некоторые основы, например, перемещение между ячейками, переключение листов, копирование значений и т. Д.

Два компонента, о которых я могу думать, что макрорекордер не будет уметь обучать вас циклу for и выражению if.

Цикл for позволяет вам «зацикливать» на диапазон значений и делать что-то один раз для каждой ячейки, а оператор if позволяет вам что-то делать (например, копировать ячейку) только в том случае, если выполнено условие (например, если две ячейки равны).

Простая версия может выглядеть примерно так:

For i = 1 To 10 
    If Sheets(2).Range("A" & i).Value <> Sheets(1).Range("A" & i).Value Then 
     Sheets(3).Range("A" & i).Value = Sheets(2).Range("A" & i).Value 
    End If 
Next i 

Я знаю, что это более чем упрощение, но, надеюсь, это поможет вам начать работу. Удачи!

Смежные вопросы