Я относительно новичок в VBA и создал макрос для копирования некоторых данных с помощью vlookup. Затем проверка по исходным данным. Я использовал al oop для проверки (что было очень медленно), поэтому я пробую новый метод. Я хочу запустить марко на 30 разных листах. Но как сделать ссылку на лист относительной?
Это часть, которую я сейчас пытаюсь отредактировать:
Sub IFMACRO()IFMACRO Macro
ActiveCell.FormulaR1C1 = _
"=IF(LEFT(RC[-6],4)=LEFT(Advocacy!R9C[-4],4),IF(ISNA(VLOOKUP('Q1 Actuals CJ'!RC[-6],Advocacy!C[-4]:C[12],11,FALSE))=TRUE,""TO BE ADDED"",""""),"""")"
Range("H3").Select
Selection.AutoFill Destination:=Range("H3:H437")
Range("H3:H437").Select
Range("I5").Select
End Sub
Как мне изменить Advocacy! лист к относительной ссылке?
для справки вот как выглядит весь макрос:
Sub actdatacompare()
ActiveCell.FormulaR1C1 = "=IFNA(VLOOKUP(RC4,'Q1 Actuals CJ'!C2:C5,2,FALSE),0)"
ActiveCell.Select
Selection.Copy
ActiveCell.Offset(0, 1).Range("A1:B1").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveCell.Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=IFNA(VLOOKUP(RC4,'Q1 Actuals CJ'!C2:C5,3,FALSE),0)"
ActiveCell.Offset(0, 1).Range("A1").Select
ActiveCell.FormulaR1C1 = "=IFNA(VLOOKUP(RC4,'Q1 Actuals CJ'!C2:C5,4,FALSE),0)"
ActiveCell.Offset(1, 0).Range("A1").Select
ActiveCell.Offset(-1, -2).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(1, 0).Range("A1:A335").Select
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-33
ActiveCell.Offset(-1, 0).Range("A1:C1").Select
Range(Selection, Selection.End(xlDown)).Select
ActiveCell.Range("A1:C336").Select
Application.CutCopyMode = False
ActiveCell.Offset(336, 3).Range("A1").Select
ActiveWindow.SmallScroll Down:=-42
ActiveCell.Offset(-336, -3).Range("A1:C336").Select
Selection.Copy
ActiveWindow.SmallScroll Down:=-39
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveCell.Select
Application.CutCopyMode = False
If Application.WorksheetFunction.Round(Application.WorksheetFunction.SumIf(Worksheets("Q1 Actuals CJ").Range("G:G"), Left(Cells(9, 4), 4), Worksheets("Q1 Actuals CJ").Range("F:F")), 2) = Cells(345, 19) Then MsgBox "Data updated and matched"
Else
Worksheets("Q1 Actuals CJ").Range("H3:H1300").Formula = "=IF(LEFT(RC[-6],4)=LEFT("Activesheet.Name & "!R9C[-4],4),IF(ISNA(VLOOKUP('Q1 Actuals CJ'!RC[-6],'"Activesheet.Name &"'!C[-4]:C[12],11,FALSE))=TRUE,""TO BE ADDED"",""""),"""")"
Sheets("Q1 Actuals CJ").Select
ActiveSheet.Range("A2:z2").AutoFilter Field:=8, Criteria1:="<>"
ActiveCell.Offset(2, 0).Range("A1").Select
MsgBox "There are new codes not included on this data sheet. Refer to data tab"
End If
End Sub