2016-09-30 161 views
-1

VBA初學者在這裏。我正在嘗試創建一個依賴於日期的VBA代碼。這裏是我的信息:複製單元格並根據條件覆蓋另一個表格中的單元格進行粘貼

表1:我有一個表格開始在單元格A1和G29。單元格B2具有使用Excel中的TODAY選項編碼的日期。

現在這個表格必須每天更新,但是一旦一天結束,我想保存這張表格的內容並在第二天清除表格1。我想將它全部保存在一張隱藏的工作表中,第2張。

目前,我已設法將所有內容複製並粘貼到Sheet 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根據日期粘貼到特定的單元格上。

+2

你能告訴我們的宏代碼? –

+0

F字!它沒有保存我的宏:'(我會很快重新創建它,然後如何保存它?我認爲保存我的Excel表會保存它? – Kaish

回答

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 
相關問題