Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 拖动不带“的公式”;拖拽;_Excel_Vba_Optimization - Fatal编程技术网

Excel 拖动不带“的公式”;拖拽;

Excel 拖动不带“的公式”;拖拽;,excel,vba,optimization,Excel,Vba,Optimization,我一行有几个公式,我想把它们拖下来。公式很复杂,我没有R1C1格式的公式,我不想将它们转换为R1C1,但我想做一些类似的事情: 范围(A2:B10)。公式=范围(A1:B1)。公式 我知道这会在整个范围内使用相同的公式,我需要一个“拖动效果”-因此它相对于每一行进行更改,但是没有复制粘贴 另外,我不想复制粘贴,因为它会占用更多的CPU,我想有点小技巧 Sub KopyFormulas() Range("A1:B1").Copy Range("A2:B10") End Sub 将向下复制

我一行有几个公式,我想把它们拖下来。公式很复杂,我没有R1C1格式的公式,我不想将它们转换为R1C1,但我想做一些类似的事情:

范围(A2:B10)。公式=范围(A1:B1)。公式

我知道这会在整个范围内使用相同的公式,我需要一个“拖动效果”-因此它相对于每一行进行更改,但是没有复制粘贴

另外,我不想复制粘贴,因为它会占用更多的CPU,我想有点小技巧

Sub KopyFormulas()
    Range("A1:B1").Copy Range("A2:B10")
End Sub
将向下复制公式并调整它们

一个小把戏!:

Sub KopyFormulas()
    Range("A1:B1").Copy Range("A2:B10")
End Sub

将向下复制公式并调整它们

对于单个单元格,不需要显式地将公式转换为R1C1格式即可使用
公式R1C1

即使使用标准的
A1
引用样式,也可以使用

Range("B2:B10").FormulaR1C1 = Range("B1").FormulaR1C1
这将产生在
B1
中复制公式的效果。它不会更改默认格式——它们仍将以
A1
格式显示

用两个或多个单元格块进行此操作似乎存在问题。您可以逐列执行(如果需要,可以在循环中执行):

这是否值得麻烦(与简单的
.FillDown
相比)是另一个问题。你可以计时


顺便说一下,我不认为
.FillDown
效率特别低。您是否进行了关闭屏幕更新、将计算设置为手动等常规优化?

对于单个单元格,您不需要显式地将公式转换为R1C1格式即可使用
FormulaR1C1

即使使用标准的
A1
引用样式,也可以使用

Range("B2:B10").FormulaR1C1 = Range("B1").FormulaR1C1
这将产生在
B1
中复制公式的效果。它不会更改默认格式——它们仍将以
A1
格式显示

用两个或多个单元格块进行此操作似乎存在问题。您可以逐列执行(如果需要,可以在循环中执行):

这是否值得麻烦(与简单的
.FillDown
相比)是另一个问题。你可以计时


顺便说一下,我不认为
.FillDown
效率特别低。您是否进行了关闭屏幕更新、将计算设置为手动等常规优化?

定义要用公式填充的范围,并使用
范围。填充

Range("A1:B10").FillDown

注意:范围的第一行必须包含原始公式

定义要用公式填充的范围,并使用
range.FillDown

Range("A1:B10").FillDown

注意:范围的第一行必须包含原始公式

谢谢,但很抱歉不清楚。我知道如何复制粘贴,但我不想使用这种方法,因为它会消耗CPU。@SergeyRyabov是的……我理解……遗憾的是,正是复制粘贴支持调整活动。谢谢,但很抱歉不清楚。我知道如何复制粘贴,但我不想使用这种方法,因为它会消耗CPU。@SergeyRyabov是的……我理解……遗憾的是,正是复制粘贴支持调整活动。
FillDown
方法呢?@ShaiRado谢谢!您知道它的CPU消耗量是否与复制粘贴相同吗?我需要更快的东西…永远不要把这两个做基准比较with@ShaiRado,无论如何,谢谢,如果没有其他解决方案,我将使用此解决方案。
FillDown
方法如何?@ShaiRado谢谢!您知道它的CPU消耗量是否与复制粘贴相同吗?我需要更快的东西…永远不要把这两个做基准比较with@ShaiRado,无论如何,谢谢,如果没有其他解决方案,我将使用此解决方案。我已经尝试了您的第一个答案中的方法,是的,正如您所注意到的,多列公式传输存在某种问题。但我也不明白为什么它不起作用。我做了通常的优化,
.FillDown
工作得很好。在多列方法中,
formula1c1
是一个数组,而不是一个简单的字符串。然而,
Range(“A2:B10”)。FormulaR1C1=Range(“A1:B1”)。FormulaR1C1
似乎以一种违反直觉的方式扩展了该数组。它并不是简单地重复第一行9次,而是在启动一些自动填充逻辑之前重复一次,这可能会导致一些意想不到的结果。为什么,我不知道。我从你的第一个答案开始尝试了这种方法,是的,正如你所注意到的,多列公式传输存在某种问题。但我也不明白为什么它不起作用。我做了通常的优化,
.FillDown
工作得很好。在多列方法中,
formula1c1
是一个数组,而不是一个简单的字符串。然而,
Range(“A2:B10”)。FormulaR1C1=Range(“A1:B1”)。FormulaR1C1
似乎以一种违反直觉的方式扩展了该数组。它并不是简单地重复第一行9次,而是在启动一些自动填充逻辑之前重复一次,这可能会导致一些意想不到的结果。只是为什么,我不知道。