我试图根据日期创建VBA代码。这是我的信息:
表格1:我有一张表格,该表格从A1单元格开始,一直到G29。单元格B2具有日期,该日期已使用Excel中的TODAY选项进行了编码。
现在该表必须每天进行更新,但是一天结束后,我要保存该表的内容并在第二天清除工作表1。我想将所有内容保存在一个隐藏的工作表Sheet 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根据日期粘贴到特定的单元格上。
我希望这是有道理的。如果有人有任何疑问,请告诉我!
您要检查源表中的日期是否已存在于目标表中。如果是这样,请将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
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句