从范围循环中的每个单元格复制数据并将其粘贴到另一张纸上
Posted
技术标签:
【中文标题】从范围循环中的每个单元格复制数据并将其粘贴到另一张纸上【英文标题】:copy data from each cell in range loop and paste it on another sheet 【发布时间】:2015-02-08 20:10:46 【问题描述】:我有以下 vba 代码 子宏1()
Dim FLrange As Range
Set FLrange = Range("C3:E3")
For Each cell In FLrange
If cell.Value = 0 Then cell.FormulaR1C1 = "=SUMIFS(raw!C4,raw!C1,R[0]C1,raw!C3,R2C[0])"
Next cell
End Sub
现在,在执行上述代码中的公式之前,我想在此添加另一个函数。我需要将当前单元格值复制到完全相同单元格上的另一张纸上。即,必须将 sheet1 单元格 C3
中的值粘贴到 sheet2 单元格 C3
我试过了
Sub Macro1()
Dim FLrange As Range
Set FLrange = Range("C3:E3")
For Each cell In FLrange
Selection.Copy
Sheets("sheet2").Paste
If cell.Value = 0 Then cell.FormulaR1C1 = "=SUMIFS(raw!C4,raw!C1,R[0]C1,raw!C3,R2C[0])"
Next cell
End Sub
但是这个不是在sheet2中粘贴值对应的单元格,而是看到它正在将公式粘贴到随机单元格。
如何将当前工作表 (sheet1) 范围内每个单元格的值粘贴到另一工作表 shet2
的相应单元格中
【问题讨论】:
【参考方案1】:首先,您在代码中使用了Selection
,但您永远不会更改您的ActiveCell
。无论如何,使用ActiveCell
是不好的做法,除非完全必要,否则您应该始终使用对象引用而不是您的选择来复制。
其次,你从来没有给它一个实际的粘贴范围,你只是给它工作表,所以我很惊讶当你尝试运行它时这并没有引发某种错误。
我的代码做了什么设置了你想要迭代的范围(要使用Me
,你需要把它放在Sheet1的工作表模块中,否则你需要明确地说它在Sheet1上),迭代它然后将其复制到第二张明确定义的工作表上的相同 Col/Row 索引。
当谈到最佳实践时,您应该始终明确地定义事物,尤其是在您谈论 VBA 时。
Option Explicit
Sub Test()
Dim rng As Range
Dim c As Range
Dim dest As Worksheet
Set rng = Me.Range("A1:A10")
Set dest = ThisWorkbook.Worksheets("Sheet2") '' rename this to whatever sheet you want this to copy to
For Each c In rng
c.Copy dest.Cells(c.Row, c.Column)
If c.Value = 0 Then
c.FormulaR1C1 = "=SUMIFS(raw!C4,raw!C1,R[0]C1,raw!C3,R2C[0])"
End If
Next c
End Sub
【讨论】:
告诉 O.P. 使用对象引用,在他的回答中使用ThisWorkbook
的相对引用... :-P以上是关于从范围循环中的每个单元格复制数据并将其粘贴到另一张纸上的主要内容,如果未能解决你的问题,请参考以下文章
如何把一个excel表中的公式粘贴到另一张表上?我用的2007版本的。