我需要编写一个宏来比较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
答案 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