Кодирование макроса для организации больших объемов информации - PullRequest
0 голосов
/ 05 июня 2018

Я сейчас пытаюсь превратить долгий утомительный процесс в макрос для работы.Код макроса ниже был сгенерирован из записи вышеупомянутого процесса, однако, когда я запускаю сгенерированные макросы на исходной информации, я не получаю правильный результат.Может кто-нибудь, пожалуйста, помогите мне?

Sub Macro1()
'
' Macro1 Macro

Columns("B:B").Select
Selection.Cut
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
ActiveCell.FormulaR1C1 = "Order No."
Columns("C:C").Select
Selection.Cut
Columns("B:B").Select
Selection.Insert Shift:=xlToRight
Columns("C:C").Select
Sheets("data").Select
Columns("C:C").Select
Selection.Delete Shift:=xlToLeft
Columns("E:E").Select
Selection.Cut
Columns("D:D").Select
Selection.Insert Shift:=xlToRight
Columns("E:E").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Sheets("data").Select
Selection.Delete Shift:=xlToLeft
Sheets("data").Select
Selection.Delete Shift:=xlToLeft
Sheets("data").Select
Selection.Delete Shift:=xlToLeft
Sheets("vybrané sloupce").Select
Range("L5499").Select
Range("L1").Select
Sheets("data").Select
Sheets("data").Select
Columns("F:F").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("G:G").Select
Selection.Delete Shift:=xlToLeft
Columns("H:H").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("I:I").Select
Selection.Delete Shift:=xlToLeft
Columns("K:K").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("L:L").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("M:M").Select
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Selection.Delete Shift:=xlToLeft
Columns("M:AP").Select
Selection.Delete Shift:=xlToLeft
Range("N1").Select
Sheets("vybrané sloupce").Select
Range("M1").Select
Sheets("data").Select
Columns("N:N").Select
Selection.Delete Shift:=xlToLeft
Range("P6").Select
End Sub
Sub Macro2()
'
' Macro2 Macro
'
Range("A1").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$M$12397").AutoFilter Field:=2, Criteria1:=Array( _
    "CONF-@", "CONF-MC", "CONF-PAY"), Operator:=xlFilterValues
Range("A452").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
ActiveWindow.SmallScroll Down:=-12
ActiveSheet.Range("$A$1:$M$12158").AutoFilter Field:=2
ActiveWindow.SmallScroll Down:=-12
ActiveSheet.Range("$A$1:$M$12158").AutoFilter Field:=8, Criteria1:=Array( _
    "icprdv01", "ICPRMJ04", "ICPRPG01", "kowalska", "MONITORI01", "="),         Operator:= _
    xlFilterValues
ActiveWindow.SmallScroll Down:=-9
Range("A2").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=8
Range("B4").Select
End Sub
Sub Macro3()
'
' Macro3 Macro
'

ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=10, Criteria1:= _
    "Cancelled"
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=6, Criteria1:= _
    "Atradius Quick Research"
Range("J2947").Select
ActiveCell.FormulaR1C1 = "OK"
Range("J2947").Select
Selection.FillDown
Range("J4740").Select

End Sub
Sub Macro4()
'
' Macro4 Macro
'
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=10
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=6
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=2, Criteria1:= _
    "Atradius Initial Research"
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=6, Criteria1:= _
    "CREDIT REPORT"
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=10, Criteria1:= _
    "Cancelled"
Range("J3645").Select
ActiveCell.FormulaR1C1 = "OK"
Range("J3645").Select
Selection.FillDown
Range("J4614").Select
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=10
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=6
ActiveSheet.Range("$A$1:$M$6445").AutoFilter Field:=2
End Sub
Sub Macro5()
'
' Macro5 Macro
'
Range("N1").Select
ActiveCell.FormulaR1C1 = "Compare"
Range("N2").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-3]<>RC[-1],""No Match"",""Match"")"
Selection.AutoFill Destination:=Range("N2:N6445"), Type:=xlFillDefault
Range("N2:N6445").Select
Range("N1").Select
Selection.AutoFilter
Selection.AutoFilter
ActiveSheet.Range("$A$1:$N$6445").AutoFilter Field:=14, Criteria1:="Match"
Range("J7").Select
ActiveSheet.Range("$A$1:$N$6445").AutoFilter Field:=10, Criteria1:= _
    "Cancelled"
Range("J432").Select
ActiveCell.FormulaR1C1 = "OK"
Range("J432").Select
Selection.FillDown
Range("J3790").Select
ActiveSheet.Range("$A$1:$N$6445").AutoFilter Field:=10
Range("N1").Select
ActiveSheet.Range("$A$1:$N$6445").AutoFilter Field:=14
ActiveSheet.Range("$A$1:$N$6445").AutoFilter Field:=10, Criteria1:= _
    "Cancelled"
Range("A2718").Select
Range(Selection, Selection.End(xlToRight)).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Select
Selection.EntireRow.Delete
ActiveSheet.Range("$A$1:$N$6398").AutoFilter Field:=10
End Sub

Проблема только в части макросов 3, 4 и 5. В основном код не может создать фильтр «ОК» в столбце состояния, даже если он указываетсделать это в коде.Любые предложения будут с благодарностью!

1 Ответ

0 голосов
/ 05 июня 2018

это довольно расплывчатый вопрос, но если я понимаю, что вы пытаетесь применить фильтр к столбцу для «ОК», тогда я использовал следующее в качестве основы.

ActiveSheet.Range("$A$1:$A$1000").AutoFilter Field:=1, Criteria1:="OK" 
'Change the range based on the column & num of rows in the column, this is set for column A

Надеюсь, этопомогает немного ответить на ваш вопрос.

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