Я использую строку кода, чтобы поместить формулу в ячейку в Excel. У меня есть формула, которая работает, но я хочу сделать ее динамической c, я использую функцию FirstRow для определения массива. Формула выглядит следующим образом:
Range("Q" & FirstRow).Offset(1).Formula = "=IF(P43<>P44,1,0)"
Я попытался поместить оператор FirstRow внутри формулы:
FirstRowOffset1 = Worksheets("WIP extract").Cells(Rows.Count, 1).End(xlUp).End(xlUp).Offset(1).Row
FirstRowOffset2 = Worksheets("WIP extract").Cells(Rows.Count, 1).End(xlUp).End(xlUp).Offset(2).Row
Range("Q" & FirstRow).Offset(1).Formula = "=IF(P" & FirstRowOffset1 & ") <> (P" & FirstRowOffset2 & "),1,0"
И я попытался использовать функцию Set для помещения в формулу :
FirstRowOffset1 = Worksheets("WIP extract").Cells(Rows.Count, 1).End(xlUp).End(xlUp).Offset(1).Row
FirstRowOffset2 = Worksheets("WIP extract").Cells(Rows.Count, 1).End(xlUp).End(xlUp).Offset(2).Row
Set fro1 = Worksheets("Compliance").Range("P" & FirstRowOffset1)
Set fro2 = Worksheets("Compliance").Range("P" & FirstRowOffset2)
Range("Q" & FirstRow).Offset(1).Formula = "=IF( & fro1 & " <> " & fro2 & ),1,0"
Но это только дает истинное ложное утверждение внутри ячейки, а не формула, которую я ищу. Как сделать формулу динамической c?
LastRowInput = Worksheets("Input").Cells(Rows.Count, 1).End(xlUp).Offset().Row
LastRowMatchC = Worksheets("Compliance").Cells(Rows.Count, 1).End(xlUp).Row
LastRowSumC = Worksheets("Compliance").Cells(Rows.Count, 1).End(xlUp).Offset(0).Row 'Offset(-1,0)
FirstRow = Worksheets("WIP extract").Cells(Rows.Count, 1).End(xlUp).End(xlUp).Row
FirstRowFill = Worksheets("WIP extract").Cells(Rows.Count, 1).End(xlUp).End(xlUp).Offset(1).Row
FirstRowOffset1 = Worksheets("WIP extract").Cells(Rows.Count, 1).End(xlUp).End(xlUp).Offset(1).Row
FirstRowOffset2 = Worksheets("WIP extract").Cells(Rows.Count, 1).End(xlUp).End(xlUp).Offset(2).Row
'~~> Autofill formules
Range("P" & FirstRow) = "Check"
Range("Q" & FirstRow) = "ID"
Set frCP = Worksheets("Compliance").Range("P" & FirstRowFill & ":P" & LastRowMatchC)
Range("P" & FirstRow).Offset(1).FormulaArray = "=IFERROR(INDEX(Input!$A$2:A$" & LastRowInput & ",MATCH(1,SEARCH(TRANSPOSE(Input!$A$2:A$" & LastRowInput & "),O43),0),0),""ZZ"")"
Range("P" & FirstRow).Offset(1).Select
Selection.AutoFill Destination:=frCP
Set frCQ = Worksheets("Compliance").Range("Q" & FirstRowFill & ":Q" & LastRowMatchC)
Range("Q" & FirstRow).Offset(1).Formula = "=IF(P" & FirstRowOffset1 & " <> (P" & FirstRowOffset2 & ",1,0)"
Range("Q" & FirstRow).Offset(1).Select
Selection.AutoFill Destination:=frCQ