VBA初学者在这里。我正在尝试根据日期创建VBA代码。这是我的信息:
表1:我有一个从单元格A1开始到G29的表格。单元格B2具有日期,该日期已使用Excel中的TODAY选项进行编码。
现在这个表必须每天更新,但是一天结束后,我想保存此表的内容并在第二天清除Sheet 1。我想将它全部保存在隐藏的工作表中,第2页。
目前,我已设法将所有内容复制并粘贴到工作表2中,然后激活我桌子下方的单元格,以便第二天复制并粘贴。
我遇到的问题是,每次运行我的宏时,它都会将表复制并粘贴到我在Sheet 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根据日期粘贴到特定的单元格上。
答案 0 :(得分:0)
您想要检查源表中的日期是否已存在于目标表中。如果是这样,请将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