2017-04-02 13 views
2

월별로 한 파일에서 다른 파일로 데이터를 저장하려고하지만 일주일에 한 달이 부분적으로 중단되면 여전히 현재 주 데이터를 저장하려고합니다. . 이 달 절약 잘 작동하는 의미로 여기에 코드입니다 : 수학적으로 사용할 때주를 포함하여 월별 저장

'Copy Data to Workbook Weekly Monthly 

Rows("2:2").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Copy 

Application.DisplayAlerts = True 

FileMonth = Month(Date) 
StrFileMonth = Format(Date, "MMM") 

Filepath = "F:\Customer Services\UK Order File\Monthly Figures\" & StrFileMonth & "\" & "UK_Orders_Monthly.xlsm" 

Workbooks.Open (Filepath), _ 
UpdateLinks:=True 

Worksheets("Data").Activate 
Range("A1").End(xlDown).Offset(1, 0).Select 
Selection.PasteSpecial Paste:=xlPasteValues 
+0

Day (Date) 및 WeekDay (Date)를 사용하여 일부 초등학교 수학을 수행해야하는 것처럼 보입니다. – Jeeped

+0

동의했다. 내가 저장할 정확한 월을 제공하기 위해 찾아 볼 테이블을 만들었지 만 파일 경로에 저장하여 저장하는 방법 –

+0

테이블을 설정하여 올바른 달을 지정하면 'strFileMonth' 대신에 그 값을 사용하십시오. 그렇지 않으면 @Jeeped가 제안한대로'Dateday'에서'Weekday (Date) -1' (또는 주 구성표에 맞는 것이 무엇이든)을 빼고 결과를''MMM "'으로 포맷하십시오. – YowE3K

답변

0

가 VBA에서 진정한-1 간주됩니다 (에 반대 한 것입니다 TRUE 워크 시트의).

평일 (날짜)이 요일 (날짜)보다 큰 경우 그 달은 지난 달이어야합니다. 예 : dateadd ("m", -1, Date). 그것이 달의 날짜와 같거나 그보다 작 으면 그 달은 현재 달입니다. 예 : dateadd ("m", 0, Date).

StrFileMonth = Format(dateadd("m", weekday(date, vbmonday) > day(date), date), "mmm") 

나는 Monday = 1; 여기서 vbMonday를 사용했습니다. WeekDay VBA 함수는 일요일 = 1로 기본 설정됩니다.