【问题标题】:Making a dynamic formula in Excel using two the FirstRow statement使用两个 FirstRow 语句在 Excel 中制作动态公式
【发布时间】: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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    你放错了这个)

    改变这个:

    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 的值。您必须为 FirstRow 分配一些值。
    • 您已添加了一个额外的(。从 ` (P" & FirstRowOffset2 & ",1,0)"` 中删除 (。检查我的答案并使用相同的代码。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多