2014-09-26 23 views
2

我試圖用vba替換上週的日期與本週的更新數字。我已經嘗試了下面的內容,但我不認爲我理解VBA中的替換函數是如何工作的。取代上週的日期與本週的

Dim lastweek As String 
lastweek = Format(Now - 7, "yyyymmdd") 
Dim thisweek As String 
thisweek = Format(Now, "yyyymmdd") 
Replace (lastweek,lastweek,thisweek) 

另外,我是否在上個星期使用了正確的公式,我想要在7天前提取日期?

+0

你在上面幹什麼等同於'過去一週= thisweek'?目前還不清楚你在問什麼,請用實例詳細說明! – EvenPrime 2014-09-26 13:16:24

+0

我有從每張表格中保存下來的數據的公式,所以每個星期五我都需要通過用今天替換上週的日期來更新日期。所以今天我試圖用'20140926'代替'20140919',但是我已經在工作表上運行了一個宏,所以我想替換函數也是它的一部分 – DannyBland 2014-09-26 13:24:12

+0

我想你可能會誤解'Replace'函數。如果我運行了'Replace(「這是一隻貓」,「貓」,「狗」)',結果將會是''這是一隻狗。 Replace對String進行操作並返回一個String。如果你想把它應用到單元格範圍,整個工作表或者整個工作簿,你需要做一些不同的事情。事實上,您可能想使用Excel的內置查找/替換功能。 – Blackhawk 2014-09-26 13:26:18

回答

2

上週轉換爲日期,並添加7天吧,讓下週值

Function MyWeek(lastweek As String) As String 
lw = DateSerial(CInt(Left(lastweek, 4)), CInt(Mid(lastweek, 5, 2)), CInt(Right(lastweek, 2))) 
MyWeek = Format(lw + 7, "yyyymmdd") 
End Function 

然後使用,

=REPLACE(A1,SEARCH("2*]",A1,1),8,Myweek(MID(A1,SEARCH("2*]",A1,1),8))) 

更換新日期的日期,假設你的字符串被替換的是單元格A1

1

您也可以在VBA中使用自動篩選器選項。只需粘貼下面的代碼模塊中的如下:

Sub date_change() 
Dim filter_column As Range 
Dim start_date As Date 
Dim end_date As Date 

With ActiveSheet 
    .AutoFilterMode = False 
    Set filter_column = .Range("j1") 'give the column which has the date that needs to be changed 
    end_date = Now - Weekday(Now, vbSunday) 
    end_date = DateSerial(Year(end_date), Month(end_date), Day(end_date)) 
    start_date = end_date - 6 
    start_date = DateSerial(Year(start_date), Month(start_date), Day(start_date)) 
    .Rows(1).AutoFilter Field:=filter_column.Column, Criteria1:=">=" & start_date, Operator:=xlAnd, Criteria2:="<=" & end_date 
    .Range(.Cells(2, filter_column.Column), .Cells(.Rows.Count, filter_column.Column).End(xlUp)).Select 

     If WorksheetFunction.Subtotal(3, Selection) <> 1 Then 
      Selection.ClearContents 
      Selection = Now 
     End If 

End With 

末次