Vba 将公式复制到一个范围

Vba 将公式复制到一个范围,vba,Vba,要使用变量将公式从单元格复制到范围。它适用于XLPaste公式,但希望避免它。此公式使用了错误的引用,因此endresult是错误的: With ActiveSheet .Range(.Cells(rowStarWs1, colAct), .Cells(rowLast, colAct)).Formula = .Cells(rowSuch2Ws1, colAct).Formula End With 例如: 公式保存在单元格C3中(例如A3*B3) 要将公式粘贴到范围C10:C13。范围

要使用变量将公式从单元格复制到范围。它适用于XLPaste公式,但希望避免它。此公式使用了错误的引用,因此endresult是错误的:

With ActiveSheet
    .Range(.Cells(rowStarWs1, colAct), .Cells(rowLast, colAct)).Formula = .Cells(rowSuch2Ws1, colAct).Formula 
End With
例如: 公式保存在单元格C3中(例如A3*B3)

要将公式粘贴到范围C10:C13。范围由我的变量给出

结果应如下所示(黄色单元格)


我发现在移动公式时,使用
R1C1
符号非常有用,特别是在像您所示的简单情况下。更复杂的情况需要更多的考虑

Sub f()

    Dim f As String
    f = Range("C3").FormulaR1C1
    
    Range("C10:C13").FormulaR1C1 = f
    
End Sub


我发现在移动公式时,使用
R1C1
表示法非常有用,特别是在您所示的简单情况下。更复杂的情况需要更多的考虑

Sub f()

    Dim f As String
    f = Range("C3").FormulaR1C1
    
    Range("C10:C13").FormulaR1C1 = f
    
End Sub


为此,您可以使用
FillDown

Cells(10, 3).Formula = Cells(3, 3).FormulaR1C1
Range("C10:C14").FillDown

FillDown
将公式从定义范围的第一个单元格复制到其所有单元格。因此,第一行代码填充第一个单元格。将R1C1格式指定给
公式
属性会更改公式中引用的单元格,而不会在输出中使用R1C1格式。

为此,您可以使用
填充

Cells(10, 3).Formula = Cells(3, 3).FormulaR1C1
Range("C10:C14").FillDown

FillDown
将公式从定义范围的第一个单元格复制到其所有单元格。因此,第一行代码填充第一个单元格。将R1C1格式指定给
公式
属性会更改公式中引用的单元格,而不会在输出中使用R1C1格式。

不起作用。确实有要粘贴的范围:范围(单元格(7,4),单元格(100,4))正确:范围(单元格(7,4),单元格(100,4))语法错误。请尝试
range(单元格(7,4),单元格(100,4))。在
单元格(7,4)之后填充
。公式=单元格(3,3)。公式1c1
假定原始公式位于单元格(3,3)(=C3)它起作用了,但问题与上面描述的相同。对简单公式有效,但对其他公式无效。不幸的是,我仍然必须使用。复制/粘贴:=xlPasteFormulas,速度慢,但效果很好。不起作用。确实有一个要粘贴的范围:范围(单元格(单元格(7,4),单元格(100,4))是正确的:范围(单元格(单元格(7,4),单元格(100,4))语法错误。请尝试
范围(单元格(7,4),单元格(100,4))。在
单元格(7,4)之后填写
。公式=单元格(3,3)。公式1c1
假定原始公式位于单元格(3,3)(=C3)中它起作用了,但与上面描述的问题相同。对简单公式有效,但对其他公式无效。不幸的是,我仍然必须使用。复制/粘贴:=xlPasteFormulas,速度慢,但效果很好。谢谢,但正如我所说,我想使用变量,而不是硬编码:“C10:C13”我把硬编码的范围放在里面只是为了演示。你可以很容易地用variablesOk替换,我真的不明白。如果用一个简单的公式,比如我的例子A3*B3或A3&B3,效果很好,但不适合下面这样的公式。它指的是其他范围:WENNFEHLER(WENN(C2“;WENN(order)(LINKS(C2)=Tab!$H$5:$H$37);C2;WENNFEHLER(GLÄTTEN(RECHTS(C2;LÄNGE(C2)-MIN(SUCHEN({“;”,“;”;:“;”/());RECHTS(C2;LÄNGE(C2)-SUCHEN(““C2”);”);)“ELI3-你必须调整这些范围以匹配<代码> R1C1符号。这将是棘手的,因为有很多引用,但是它可以被解决。我过去已经做了。考虑到两个人已经回答了你的问题如最初发布的,也许你可以考虑标记一个回答,因为你已经声明了B。如所贴,你的问题还可以解决。Think可以绕过使用任何R1C1引用,因为公式在单元格中。谢谢,但正如我所说,我想使用变量,而不是硬编码:“C10:C13”我把硬编码的范围放在里面只是为了演示。你可以很容易地用variablesOk替换,我真的不明白。如果用一个简单的公式,比如我的例子A3*B3或A3&B3,效果很好,但不适合下面这样的公式。它指的是其他范围:WENNFEHLER(WENN(C2“;WENN(order)(LINKS(C2)=Tab!$H$5:$H$37);C2;WENNFEHLER(GLÄTTEN(RECHTS(C2;LÄNGE(C2)-MIN(SUCHEN({“;”,“;”;:“;”/());RECHTS(C2;LÄNGE(C2)-SUCHEN(““C2”);”);)“ELI3-你必须调整这些范围以匹配<代码> R1C1符号。这将是棘手的,因为有很多引用,但是它可以被解决。我过去已经做了。考虑到两个人已经回答了你的问题如最初发布的,也许你可以考虑标记一个回答,因为你已经声明了B。你的问题如贴出的一样可以用其他方法解决。思想可以绕过使用任何R1C1引用,因为公式在单元格中。