用两个FirstRow语句在Excel中生成动态公式

用两个FirstRow语句在Excel中生成动态公式,excel,vba,Excel,Vba,我正在使用一行代码将公式放入Excel中的单元格中。我有一个有效的公式,但我想让它成为动态的,我使用FirstRow函数来确定数组。公式如下: Range("Q" & FirstRow).Offset(1).Formula = "=IF(P43<>P44,1,0)" 范围(“Q”和第一行)。偏移量(1)。公式=“=IF(P43P44,1,0)” 我尝试将第一行语句放在公式中: FirstRowOffset1 = Worksheets("WIP extract").Cell

我正在使用一行代码将公式放入Excel中的单元格中。我有一个有效的公式,但我想让它成为动态的,我使用FirstRow函数来确定数组。公式如下:

Range("Q" & FirstRow).Offset(1).Formula = "=IF(P43<>P44,1,0)"
范围(“Q”和第一行)。偏移量(1)。公式=“=IF(P43P44,1,0)”
我尝试将第一行语句放在公式中:

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"
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"
FirstRowOffset1=工作表(“WIP提取”)。单元格(Rows.Count,1)。结束(xlUp)。结束(xlUp)。偏移(1)。行
FirstRowOffset2=工作表(“在制品提取”)。单元格(Rows.Count,1)。结束(xlUp)。结束(xlUp)。偏移(2)。行
范围(“Q”和FirstRow).Offset(1).Formula=“=IF(P“&FirstRowOffset1&”)(P“&FirstRowOffset2&”),1,0”
我试着用一个集合函数来放置在公式中:

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"
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"
FirstRowOffset1=工作表(“WIP提取”)。单元格(Rows.Count,1)。结束(xlUp)。结束(xlUp)。偏移(1)。行
FirstRowOffset2=工作表(“在制品提取”)。单元格(Rows.Count,1)。结束(xlUp)。结束(xlUp)。偏移(2)。行
设置fro1=工作表(“符合性”)。范围(“P”和FirstRowOffset1)
设置fro2=工作表(“符合性”)。范围(“P”和FirstRowOffset2)
范围(“Q”和第一行)。偏移量(1)。公式=“=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
LastRowInput=工作表(“输入”).Cells(Rows.Count,1).End(xlUp).Offset().Row
LastRowMatchC=工作表(“符合性”)。单元格(Rows.Count,1)。结束(xlUp)。行
LastRowSumC=工作表(“符合性”)。单元格(Rows.Count,1)。结束(xlUp)。偏移量(0)。行偏移量(-1,0)
FirstRow=工作表(“WIP提取”)。单元格(Rows.Count,1)。结束(xlUp)。结束(xlUp)。行
FirstRowFill=工作表(“WIP提取”)。单元格(Rows.Count,1)。结束(xlUp)。结束(xlUp)。偏移量(1)。行
FirstRowOffset1=工作表(“在制品提取”)。单元格(Rows.Count,1)。结束(xlUp)。结束(xlUp)。偏移(1)。行
FirstRowOffset2=工作表(“在制品提取”)。单元格(Rows.Count,1)。结束(xlUp)。结束(xlUp)。偏移(2)。行
“~~>自动填充公式
范围(“P”和第一行)=“检查”
范围(“Q”和第一行)=“ID”
设置frCP=工作表(“符合性”)。范围(“P”和FirstRowFill&“:P”和LastRowMatchC)
Range(“P”和FirstRow).Offset(1).FormulaArray=“=IFERROR(索引(输入!$A$2:A$”&LastRowInput&“),匹配(1,搜索(转置(输入!$A$2:A$”&LastRowInput&“),O43),0),0),“ZZ”)
范围(“P”和第一行)。偏移量(1)。选择
Selection.AutoFill目标:=frCP
设置frCQ=工作表(“合规性”)。范围(“Q”和FirstRowFill&“:Q”和LastRowMatchC)
范围(“Q”和FirstRow).Offset(1).Formula=“=IF(P)”和FirstRowOffset1&“(P”和FirstRowOffset2&“,1,0)”
范围(“Q”和第一行)。偏移量(1)。选择
Selection.AutoFill目的地:=frCQ
你把这个
放错地方了)

更改此项:

Range("Q" & FirstRow).Offset(1).Formula = "=IF(P" & FirstRowOffset1 & ") <> (P" & FirstRowOffset2 & "),1,0"
Range(“Q”和FirstRow).Offset(1).Formula=“=IF(P“&FirstRowOffset1&”)(P“&FirstRowOffset2&”),1,0”
为此:

Range("Q" & FirstRow).Offset(1).Formula = "=IF(P" & FirstRowOffset1 & " <> P" & FirstRowOffset2 & ",1,0)"
Range(“Q”和FirstRow).Offset(1).Formula=“=IF(P”&FirstRowOffset1&“P”&FirstRowOffset2&”,1,0)”

我遇到以下错误:应用程序定义的错误或对象定义的错误,这可能是由于其他原因造成的。你能编辑你的问题并添加你正在尝试的全部代码吗?我想你还没有初始化第一行的值。您必须为FirstRow分配一些值。您已经添加了一个额外的
。从以下位置删除
:`(P“&FirstRowOffset2&“,1,0)”`。请检查我的答案并使用相同的代码。