vba代码中的数组公式与应对公式
Posted
技术标签:
【中文标题】vba代码中的数组公式与应对公式【英文标题】:Array Formula in vba code with coping the formula down 【发布时间】:2018-02-25 19:46:08 【问题描述】:我编写的代码将根据 N:N 列中的记录数计算数组公式,该列早于 11 列(偏移量 11)。我想将公式与数组一起使用,该数组将使用 N:N 列中的并行行并向下复制,直到 N:N 列中的最后一条记录存在。但是,目前,公式仅根据第一条记录向下复制,而不是并行获取行:
With ThisWorkbook.Sheets("Sheet1")
TargetRow = 4
.Range("N4", .Cells(Rows.Count, "N").End(xlUp)).Offset(0, 11).FormulaArray = "=IFERROR(Name&INDEX(Names_Area,MATCH(RC[-11],Name&Name_Origin,0),2),"""")"
End With
我听说过填充功能或类似功能,但我不知道如何在此处插入。 我该如何解决它,所以当公式向下复制到行时,它会并行使用该行,而不是所有时间 N4(即第一行记录)。 我将不胜感激。
我还想提一下,任何其他没有数组的公式都可以工作,并根据 N:N 列中并行的行复制公式。
【问题讨论】:
.AutoFill 应该适用于范围 【参考方案1】:尝试使用 .Autofill。类似:
With ThisWorkbook.Sheets("Sheet1")
TargetRow = 4
.Range("N4").FormulaArray = "=IFERROR(Name&INDEX(Names_Area,MATCH(RC[-11],Name&Name_Origin,0),2),"""")"
.Range("N4").AutoFill .Range("N4:N12")
End With
我使用了 N12 的示例终点作为您可以调整的自动填充。
虽然请注意,您实际上将使用以下内容进入 Y 列:
.Range("N4", .Cells(Rows.Count, "N").End(xlUp)).Offset(0, 11)
因此,您可能希望确保在要填充的实际列中自动填充和填充公式。
可能是这样的:
.Range("N4").Offset(0, 11).FormulaArray =
参考:
https://www.mrexcel.com/forum/excel-questions/500971-how-copy-array-formula-down-vba-macro.html
【讨论】:
嗨 QHarr,我已经尝试过使用您的想法:.Range("N4", .Cells(Rows.Count, "N").End(xlUp)).Offset(0, 11)。 FormulaArray = "=IFERROR(RU_Project.ID&INDEX(RU_WBS_Area,MATCH(RC[-11],RU_Project.ID&RU_WBS_Origin,0),2),"""")" .Range("N4").AutoFill .Range("N4 :N12" 但是下一行的公式结果仍然基于第一个 N4 的结果,而不是根据列 N:N 中的并行行 我认为你必须申请一列而不是 N 到 Y (?)。否则,在填写之前,您需要所有相关列的第一行中的公式。它会向下填充而不是向下填充。【参考方案2】:你也可以使用
With ThisWorkbook.Sheets("Sheet1")
With .Range("N4", .Cells(Rows.Count, "N").End(xlUp)).Offset(0, 11)
.Cells(1, 1).FormulaArray = "=IFERROR(Name&INDEX(Names_Area,MATCH(RC[-11],Name&Name_Origin,0),2),"""")"
.Formula = .Cells(1, 1).Formula
End With
End With
【讨论】:
您好,我已经尝试过您的代码,但可能我误解了,因为我没有得到正确的结果。按部分:'.Cells(1,1)' 你只是给出一个放置结果的例子吗?因此,如果我的结果应该从 Y 列开始,目标第 4 行,代码的一部分应该是:'.Cells(4,26)' 吗?还是怎么做? 不。.Cells(1,1) is pointing at the first cell in the _referenced_ range in the
With` 声明。因此,在这种情况下,它指向“Sheet1”工作表的单元格“N4”
@Dozens,请对照您的原始问题数据检查我的代码,如果它按照本网站规则工作,您可以考虑将答案标记为已接受。否则,您可以回来详细说明什么不起作用。如果您必须更改您的原始问题数据,那么您可以发布一个新问题以及您的努力
好的,我会这样做的以上是关于vba代码中的数组公式与应对公式的主要内容,如果未能解决你的问题,请参考以下文章