1

我试图复制和粘贴A1中单元格更改时的值范围。VBA在特殊单元格更改后复制粘贴范围

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

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

Please_see_the_Photo

在先进的感谢。

External Data is coming from another Sheet

+0

年线是不是太清楚,但如果我理解分辩你为什么不使用这个公式为每个小区(取决于有多少条记录)要= IF($ A3 = $ A $ 1;“年公式”;“”) – Fabrizio

+0

嗨法布里齐奥,感谢您的回复。单元格B3:E4中的公式正在计算来自外部源的数据。外部数据每周更新一次,仅显示当前日历周(A1)的值。我的目标是记录过去的日历周的价值。 – Toli

回答

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 
+0

干得好! (1) –

1

您正在寻找这样的事情?

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 
+0

谢谢娜斯佳。我只是忘了说,如果A1更改为“2016.10”,那么它应该在A2:A14中查找此值(在本例中为A12),然后将其作为值旁边的行范围进行复制和粘贴(在这种情况下B12:E12) – Toli

+0

@Toli首先,请不要那样称呼我。其次,如果您更改A1中的值,它就会像您想要的那样工作。你有没有尝试过我的代码? –

+0

请原谅我。我妻子的名字也是阿纳斯塔西亚,每个人都像纳斯提亚一样呼唤,但我很抱歉。我不明白在这里写什么“在这里设置你想复制的范围”?我把“B2:B14”,但它是复制标题。你有什么提示我应该放哪里? – Toli