【问题标题】:Copy cells and paste by overwriting cells in another sheet based on a criteria通过根据条件覆盖另一张工作表中的单元格来复制单元格并粘贴
【发布时间】:2017-02-08 13:43:36
【问题描述】:

我正在尝试根据日期创建 VBA 代码。这是我的信息:

表 1:我有一个表格,从单元格 A1 开始,一直到 G29。单元格 B2 包含日期,该日期已使用 Excel 中的 TODAY 选项进行编码。

现在这张表必须每天更新,但是一天结束后,我想保存这张表的内容并清除第二天的 Sheet 1。我想把它全部保存在一个隐藏的工作表,工作表 2 中。

目前,我已设法将所有内容复制并粘贴到工作表 2 中,然后激活表格下方的单元格,以便第二天复制和粘贴。

我遇到的问题是,每次运行宏时,它都会将表格复制并粘贴到表格 2 中已获得的单元格下方的选定单元格中。因此,对于任何特定日期,我都可能有 3,4 ,5,无论同一张桌子的任何变化,都在彼此下方。

因此,我想要做的是告诉我的 VBA 代码,如果单元格 B2(表 1)中的值为 x,并且表 2 中相应日期单元格中的值相同,则复制并粘贴到这些相同的单元格中.

我知道如何做最后一点,我想帮助弄清楚(现在)我如何告诉它在两张纸上进行我的特定搜索和激活单元格,记住它需要保留一般来说,在一个日期之后,工作表 2 中的下一个日期单元格将在 B2 下方大约 31 个单元格,然后在该日期下方 31 个单元格,等等。

这是我当前的宏:

Sub Macro1()
'
' Macro1 Macro
'
' Acceso directo: CTRL+h
'
    Range("A1:G29").Select
    Selection.Copy
    Sheets("Hoja2").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    ActiveCell.Offset(31, 0).Select

End Sub

这会复制和粘贴并选择下面的单元格。但是,我正在努力让 Excel 根据日期粘贴到特定的单元格上。

我希望这是有道理的。如果人们有任何问题,请告诉我!

【问题讨论】:

  • 可以给我们看一下宏代码吗?
  • F字!!它没有保存我的宏 :'( 我会快速重新创建它,然后如何保存它?我以为保存我的 excel 工作表会保存它??

标签: vba excel


【解决方案1】:

您想检查源表中的日期是否已存在于目标表中。如果是这样,请将 29 行表粘贴到相应的范围内,否则将其粘贴到底部。 以下应该有效:

Sub Macro1()

target = Cells("B2")
Range("A1:G29").Copy
end = Sheets("Hoja2").Cells(1048576, 2).End(xlUp).row 'check the last filled in row
tables = end / 29 'counts how many tables are already pasted in the sheet
for i = 1 to tables
    index = (i-1)*29 + 2 'row index where the date is written
    if Sheets("Hoja2").Cells("B" & index) = target then 'check if the date corresponds
        Sheets("Hoja2").Range("A" & index - 1).Paste
        Range("A" & index).Select
        ActiveCell.Offset(31, 0).Select
        exit sub
    end if
next i
'the following lines are skipped if the for loop pastes the table
Sheets("Hoja2").Range("A" & end + 1).Paste     
Range("A" & index).Select
ActiveCell.Offset(31, 0).Select

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-17
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-10
    • 1970-01-01
    • 2017-01-18
    相关资源
    最近更新 更多