首页 > 解决方案 > 如何通过表格运行列范围并使用 VBA 将其粘贴到另一列中?

问题描述

所以我正在尝试使用 VBA 在 Excel 中的表格中运行一列。然后我想复制结果并粘贴到另一列中。我已经让它适用于一个单元格,但是,当我尝试循环代码时,它只是在我希望它粘贴的范围内的每个单元格中粘贴相同的内容。我如何使它在循环时,它只粘贴在单个单元格中而不是整个范围?我的代码如下。

Sub Test1()
'
' Test1 Macro
'

'
Dim rng As Range, cell As Range
Set rng = Range("C16:C20")
For Each cell In rng
Dim rng2 As Range, cell2 As Range
Set rng2 = Range("G16:G20")
For Each cell2 In rng2

    cell.Select
    Selection.Copy
    Range("B4").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("D12").Select
    Application.CutCopyMode = False
    Selection.Copy
    rng2.Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Tranpose:=False
      'ActiveCell.Offset(1, 0).Select

Next cell2
Next cell

End Sub              

谢谢!

标签: excelvba

解决方案


猜你想要这样的东西:

Sub Test1()

    Dim rng As Range, cell As Range, ws As Worksheet
    Set ws = ActiveSheet
    Set rng = ws.Range("C16:C20")

    For Each cell In rng.Cells
        ws.Range("B4").value = cell.Value
        cell.offset(0, 4).value = ws.Range("D12").Value  'populate in Col G
    Next cell

End Sub  

请注意,通常不需要在 excel 中选择/激活任何内容(尽管宏记录器做了很多)。值得回顾:如何避免在 Excel VBA 中使用 Select

同样,如果您需要在单元格之间传输值,您可以直接执行此操作而无需复制/粘贴。


推荐阅读