2015-01-25 2 views
0

я записал это тогда добавил LR = LastRow, чтобы сделать его динамичным, но я не могу понять, как удалить все варианты, которые идут наУдалить все «Подборки» из записанного макроса

Также они оба делают samething, но один из способов написания массива better, то другой т.е. faster больше stable ...

Благодаря

Selection.FormulaArray = "=ISNUMBER(MATCH(RC[-5]&RC[-6],R1C1:R" & LR & "C1 & R1C2:R" & LR & "C2,0))" 

Selection.FormulaArray = "=ISNUMBER(MATCH(B1&A1,$A$1:$A$" & LR & " & $B$1:$B$" & LR & ",0))" 

Записанный макрос

Sub Winding() 
Dim ws As Worksheet 
Dim Rng As Range 
Dim LR As Long 

Set ws = Sheets("Unpivot_RegistrationData") 
    LR = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row 
Set Rng = ws.Range("G1").Resize(LR, 1) 

Range("G1").Select 
     Selection.FormulaArray = "=ISNUMBER(MATCH(B1&A1,$A$1:$A$" & LR & " & $B$1:$B$" & LR & ",0))" 
     Selection.AutoFill Destination:=Rng, Type:=xlFillDefault 
End Sub 

ответ

1

Во-первых, предпочтение отдается A1 или R1C1 стилям, которые легко управляются строкой формулы. Там нет разностное производительности или стабильности

Чтобы удалить Selection попробовать этот
Обратите внимание, что я удалил AutoFill, и применяется к формуле для всего диапазона в одном шаге.

Sub Winding() 
    Dim Rng As Range 
    Dim LR As Long 

    With Worksheets("Unpivot_RegistrationData") 
     LR = .Cells(.Rows.Count, 1).End(xlUp).Row 
     Set Rng = .Range("G1:G" & LR) 
    End With 

    Rng.Cells(1, 1).FormulaArray = _ 
     "=ISNUMBER(MATCH(B1&A1,$A$1:$A$" & LR & " & $B$1:$B$" & LR & ",0))" 
    Rng.Cells(1, 1).AutoFill Destination:=Rng, Type:=xlFillDefault 
End Sub 
+0

Привет Крис и спасибо, когда я запустить суб все ячейки в столбце '' G' являются false', которые не должны быть случай – xyz

+0

Что вы на самом деле пытаетесь достичь с помощью формулы? Являются ли каждая ячейка независимой формулой массива или формулой всего массива? (пожалуйста, обновите эту информацию на ваш вопрос) –

+0

Спасибо, Крис, который работал – xyz

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