Страницы: 1
RSS
Макрос для поячеечной проверки данных из двух таблиц
 
Уважаемые форумчане, добрый день!

Только начинаю знакомиться с макросами, поэтому не могу домучать один из них.
 

Необходимо осуществлять сверку данных из "Формы заказа" и данных из автоматически выгружаемого отчета на вкладке "550". С формой будет работать последовательно 2 человека: первый заполняет страницу с Формой и защищает ее от изменений, затем второй должен скопировать свой отчет на вторую страницу, преобразовать его и выполнить проверку поячеечно на странице "Проверка".

Отчет на второй странице для сопоставления с формой на первой трансформируется следующим образом:

-автозамена точки на запятую в столбце Unit Price

-двойная сортировка сначала по Global code (от а до я), а затем по Unit price (от наим к наиб)

-фильтр по столбцу Next status, нужны только со статусом 522

Полученный результат копируем на страницу проверка в поле E5

Текущий макрос такой
Код
Sub Макрос3()

Range("A1").Select
    ActiveWorkbook.Worksheets("550").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("550").Sort.SortFields.Add Key:=Range("J2:J300"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("550").Sort.SortFields.Add Key:=Range("M2:M300"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("550").Sort
        .SetRange Range("A1:S300")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    Columns("M:M").Select
    Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    Columns("E:E").Select
    Selection.AutoFilter
    ActiveSheet.Range("E:E").AutoFilter Field:=1, Criteria1:="522"
    Selection.CurrentRegion.Select
    Selection.Copy
    Sheets("проверка").Select
    Range("E5").Select
    ActiveSheet.Paste
End Sub

При запуске ругается на все,что можно( Прошу помочь ибо я блондинка( Файлик вложением.

Спасибо!

Изменено: lost05 - 21.03.2017 05:20:15
 
lost05, код следует оформлять соответствующим тегом. Ищите такую кнопку <...> и исправьте своё сообщение.
 
Юрий М,  исправила, спасибо!
 
lost05,Добрый день, не особо вдаваясь в подробности, вариант для запуска этого макроса кнопкой с листа "проверка"
Код
Sub Макрос2()
Range("A1").Select
    ActiveWorkbook.Worksheets("550").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("550").Sort.SortFields.Add Key:=Range("J2:J300"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("550").Sort.SortFields.Add Key:=Range("M2:M300"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("550")
        .Sort.SetRange Range("A1:S300")
        .Sort.Header = xlYes
        .Sort.MatchCase = False
        .Sort.Orientation = xlTopToBottom
        .Sort.SortMethod = xlPinYin
        .Sort.Apply
    
    .Columns("M:M").Replace What:=".", Replacement:=",", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    .Columns("E:E").AutoFilter
    .Range("E:E").AutoFilter Field:=1, Criteria1:="522"
    .Range("A1").CurrentRegion.Copy Sheets("проверка").Range("E5")
End With
End Sub
Правда при чем тут сравнение не понятно )
Изменено: Александр - 21.03.2017 06:58:31
 
Александр, добрый вечер!
Спасибо!
При тесте возникла также неоходимость выполнить след. дейтсвие:
Перед сортировкой нужно выполнить следующие замены
Код
.Columns("J:J").Replace What:="5450024", Replacement:="0005450024", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
               .Columns("J:J").Replace What:="5690079", Replacement:="0005690079", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
               .Columns("J:J").Replace What:="4520082", Replacement:="0004520082", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
               .Columns("J:J").Replace What:="605050029", Replacement:="0605050029", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
               .Columns("J:J").Replace What:="7950181", Replacement:="0007950181", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
               .Columns("J:J").Replace What:="7950189", Replacement:="0007950189", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
               .Columns("J:J").Replace What:="8000079", Replacement:="0008000079", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

ставлю код перед сотрировкой - ругается(

 
Цитата
lost05 написал:
Перед сортировкой нужно выполнить следующие замены
Вопрос конечно не мне. Но пока все молчат выскажу своё мнение.
Макрос подставляет нули перед числом, результат это уже не число, а текст. И как потом сортировать текст? Лучше было бы увидеть это в файле, что  куда вставлено и что получилось, а так, только предположения.
 
Цитата
gling написал:
И как потом сортировать текст? Лучше было бы увидеть это в файле, что  куда вставлено и что получилось, а так, только предположения
Нам и нужно, чтоб сортировалось как текст от A до Z, так как в столбике есть и текстовые значения помимо чисел. Файлик прилагаю.
 
Цитата
lost05 написал:
ставлю код перед сотрировкой - ругается(
У Вас в коде куда то пропало начало это With ActiveWorkbook.Worksheets("550"), в другом коде пропало With в начале кода, вот они и ругаются.
Страницы: 1
Наверх