繁体   English   中英

从特定的工作表和单元格复制公式,并将其向下拖动直到特定列的最后一行

[英]Copy formula from a specific sheet and cell and drag it down until specific column last row

到目前为止,我的代码如下; 计算最后一个单元格工作正常,但是将错误的数据复制/粘贴到错误的工作表中。 应该复制数据并使用工作表“解析”单元格B2中的公式,并使用VBA所在的主工作表。 看起来,缺少的是执行复制/选择以“解析”工作表,但是没有做到这一点。

Sub drag_formula_original()

Dim myLastRow As Long
With Worksheets("Parsing")



myLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

.Range("B2").Copy Destination:=.Range("B2:B" & myLastRow)
Application.CutCopyMode = False

End With
End Sub

解决了。 非常感谢。

Range("B2").Copy 

默认情况下,以上内容将从Activesheet中获取

您必须告诉它您要从哪个表中选择该范围/值。

sheets("Parsing").Range("B2").Copy 

编辑:刚注意到您的

要与一起实际使用,您需要使用“。” 例如,您的复制行如下所示

.Range("B2").Copy 

需要注意的另一件事:

Range("B2:B" & myLastRow).Select
ActiveSheet.Paste

是相当低效的,下面会更好。 一般而言,最好选择远离它,这相当慢

 Range("B2:B" & myLastRow).Paste

或与您一起

.Range("B2:B" & myLastRow).Paste

我只是复制并粘贴您的代码并运行它。 除了在您的子代码之前添加“ Option Explicit”外,我没有更改您的代码中的任何内容。 (只是个人习惯)

Option Explicit
Sub drag_formula_original()

Dim myLastRow As Long
With Worksheets("Parsing")

myLastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

Range("B2").Copy
Range("B2:B" & myLastRow).Select
ActiveSheet.Paste
Application.CutCopyMode = False

End With
End Sub

但是,我确实在单元格B2中使用了一个非常简单的公式。 我所做的是将A列从1移至10,将C列从11移至20。单元格B2为= A2 + C2。 运行代码后,我检查了B列中的每个单元格,每个单元格中都有正确的公式,而不是硬编码的值。

当我想执行类似操作但无法弄清楚如何记录我的宏时,我会做一个技巧,将宏单元格公式向下拖动一点,然后停止记录并查看其代码。 由此,您应该能够调整它以执行所需的操作。

当我这样做时,我得到了以下代码:

Sub Macro1()
'
' Macro1 Macro
'

'
    Range("B2").Select
    Selection.AutoFill Destination:=Range("B2:B15"), Type:=xlFillDefault
    Range("B2:B15").Select
End Sub

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM