Excel 2007宏来复制基于单元格值的粘贴值

时间:2014-08-14 01:58:36

标签: excel excel-vba copy-paste vba

我需要编写一个宏来比较B1中的日期和列D1.DB1中的日期。如果匹配,则需要复制匹配的列并粘贴值。这就是我到目前为止所做的。但它没有用。

Sub MyCopyPasteValues()
' CopyPasteValus Macro
' Macro to hard code last weeks data.

Dim i As Integer

Sheets("data").Range("B1").Select

For i = 4 To 56

If Worksheets("Data").Cells(1, i).Value = "B1" Then
Range(1, i).Select
ActiveCell.EntireColumn.Select
Selection.Copy
ActiveSheet.PasteSpecial xlPasteValues

End If
Next i

End Sub

2 个答案:

答案 0 :(得分:0)

好的,首先:避免使用.Select方法,风险很大,可能会损害您的数据。

如果您想对其进行操作,则无需选择单元格。此外,如果您想将一个单元格值与另一个单元格值进行比较,则应使用Range()Cells()。您使用"B1"表示您检查的值B1不是Cell B1的值。

修改

不确定这是否是您想要的,所以让我们试一试。 y代表行号,i代表列号。对于每个y,将检查列i中的所有单元格。将使用B列中的行y中的日期检查它们。

Sub MyCopyPasteValues()
' CopyPasteValus Macro
' Macro to hard code last weeks data.

Dim i As Byte, ws As Worksheet

Set ws = Worksheets("Data")

For y = 3 To 73

    For i = 4 To 56

        If ws.Cells(y, i).Value = ws.Range("B" & y).Value Then

            ws.Cells(y, i).Value = ws.Cells(y, i).Value

        End If

    Next i

Next y

End Sub

答案 1 :(得分:0)

Sub MyCopyPasteValues()
' CopyPasteValus Macro
' Macro to hard code last weeks data.

Dim i As Byte, ws As Worksheet

Set ws = Worksheets("Data")

For y = 3 To 73

    For i = 4 To 56

        If ws.Cells(1, i).Value = ws.Range("B" & 1).Value Then

            ws.Cells(y, i).Value = ws.Cells(y, i).Value

        End If

    Next i

Next y

End Sub