【发布时间】:2020-02-28 17:20:45
【问题描述】:
我正在使用一行代码在 Excel 的单元格中放置一个公式。我有有效的公式,但我想让它动态化,我使用 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"
但这只会在单元格内给出一个真假陈述,而不是我正在寻找的公式。如何使公式动态化?
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
【问题讨论】: