使用if函数复制/粘贴值

时间:2015-02-13 18:58:20

标签: excel vba excel-vba

我正在尝试在VBA中编写一个代码,只要主工作表是某一天,就会将其他工作表中的值复制到主工作表中。我的数据设置如下:

在主工作表的A栏中,我有特定月份的日期(mm / dd / yy)。 B列和C列的数据与计算无关,但需要存在。列D到G是我要粘贴源工作表中的值的位置。例如,如果A19是02/13/15,我希望宏将源工作表中的数据拉入单元格D19:G19。

这是我到目前为止使用的代码。我将不胜感激任何帮助。谢谢!

Sub newline()

strdate = InputBox("Date")
D = CStr(strdate)
's4 is the master worksheet
Set s4 = Sheets(4)
's5 is the source worksheet that updates every day with different data
Set s5 = Sheets(5)

n = s4.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count

i = 0

For j = 1 To n
    If s4.Cells(j, 1).Value = D Then
    i = i + 4
    'name of the cells in the source worksheet
    Set r = s5.Range("AccrualPayments")
    r.Copy
    s4.Cells(j, i).PasteSpecial (xlPasteValues)
    End If
Next j

End Sub

1 个答案:

答案 0 :(得分:1)

你在某处遇到错误吗?或者有什么特别是这不是吗?

编辑:

Sub newline()
Dim strdate as String
Dim s4, s5 as Worksheet
Dim i, j, n as Integer

strdate = InputBox("Date")

's4 is the master worksheet
Set s4 = Sheets(4)
's5 is the source worksheet that updates every day with different data
Set s5 = Sheets(5)

n = s4.Range("A:A").Cells.SpecialCells(xlCellTypeConstants).Count

i = 0

For j = 1 To n
    If s4.Cells(j, 1) = strdate Then
    i = i + 4
    'name of the cells in the source worksheet
    s5.Range("AccrualPayments").copy
    s4.Cells(j, i).PasteSpecial Paste:=xlPasteValues
    End If
Next j

End Sub

确保输入的日期和主表上的日期采用相同的格式。例如,2015年2月2日可以写成“2015年2月2日”,“2015年2月2日”或“2015年2月2日”。否则,似乎这段代码应该可行。

每个日期只会在您的工作表“s4”中出现一次吗?如果不是,第一个实例将在D列中粘贴范围“AccrualPayments”,在H列中粘贴第二个L,等等。如果它们仅显示一次,则这不是问题。