【问题标题】:VBA Copy paste a range after a special cell changes特殊单元格更改后的VBA复制粘贴范围
【发布时间】:2016-12-25 04:28:42
【问题描述】:

每当 A1 中的单元格发生更改时,我都会尝试复制和粘贴范围的值。

例如,如果 A1 中的单元格(来自公式)更改为“2016.10”,它会在 A2:A14 中查找相同的值,找到它并复制范围 B12:E12(也来自公式)并将它们粘贴为值。或者,如果 A1 更改为“2016.11”,则复制粘贴 B13:E13 的值。

有没有办法用 VBA 做到这一点?

提前致谢。

External Data is coming from another Sheet

【问题讨论】:

  • yr 线程不太清楚,但如果我理解你为什么不对每个单元格使用这个公式(取决于有多少记录)Be=IF($A3=$A$1;"yr公式";"")
  • 您好 Fabrizio,感谢您的回复。单元格 B3:E4 中的公式正在计算来自外部源的数据。外部数据每周更新一次,仅显示当前日历周 (A1) 的值。我的目标是记录过去几周的价值。

标签: excel vba copy-paste


【解决方案1】:

最后,我找到了解决这个问题的方法。这是我用来帮助我的代码:

Sub PasteValues()

Dim RowData As Long, i As Long

Set Data = Range("A2:A108")

RowData = Data.Rows.Count

For i = 1 To RowData

    If Data(i, 1) = Cells(1, 1) Then

    Range(Cells(i + 1, 2), Cells(i + 1, 16)).Copy
    Range(Cells(i + 1, 2), Cells(i + 1, 16)).PasteSpecial xlPasteValues, 

Operation:=xlNone, SkipBlanks:=False, Transpose:=False

    End If
Next i
Application.CutCopyMode = False

End Sub

【讨论】:

    【解决方案2】:

    你看起来像这样吗?

    Sub SelectiveCopyPaste()
    Dim WB As Workbook, Data1 As Range, Data2 As Range, RowData As Long, i As Long, FilePath As String
    
    FilePath = "C:\Program Files\Microsoft Office\Office\RS.xlsb"       'Add your own file path
    Set WB = Workbooks.Add(FilePath)
    Set Data1 = Range("A2:A14")                                         'Change this accordingly
    'Change this accordingly
    Set Data2 = WB.Worksheets("RS_Summary").Range("Set the range you want to copy here")            
    
    RowData = Data1.Rows.Count
    
    For i = 1 To RowData
        If Data(i, 1) = Cells(1, 1) Then
            Data2(i, 1).Copy Data1(i, 2)                               'Change this too
            Exit For
        End If
    Next
    End Sub
    

    【讨论】:

    • 谢谢娜斯佳。我只是忘了说,如果 A1 更改为“2016.10”,那么它应该在 A2:A14 中查找这个值(在本例中它在 A12 中),然后将其旁边的行范围复制并粘贴为值(在这种情况下 B12:E12)
    • @Toli 首先,请不要这样称呼我。其次,如果您更改 A1 中的值,它确实可以按您的意愿工作。你试过我的代码了吗?
    • 请见谅。我妻子的名字也叫阿纳斯塔西娅,每个人都像娜斯佳一样称呼这里,但我很抱歉。我不明白在这里写什么“设置你想要复制的范围”?我放了“B2:B14”,但它正在复制标题。你有什么提示我应该放什么吗?
    • @Toli 值 113507、234、474、9065 所在的范围。顺便说一句,你要复制什么范围?
    • 如果 A1 等于“2016.10”,则 B12:E12。如果 A1 等于“2016.11”,那么 B13:E13 以此类推。如果 A1 发生变化,它应该在 A2:A14 中查找它的值,然后复制粘贴它右侧的单元格。
    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 1970-01-01
    • 2021-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多