2012-10-25 7 views
3

날짜가있는 특정 열을 자동으로 채워야합니다. 날짜가 토요일에서 화요일 사이에 발생하면 이전 열 금요일과 함께 날짜 열을 자동 채워야합니다. 수요일과 금요일 사이에 날짜가 발생하면 자동 완성을 위해 다음 금요일 날짜를 입력해야합니다.은 현재 날짜를 기준으로 자동 입력 날짜를 비교합니다.

예 : 화요일 10/23에 스프레드 시트를 실행하면 자동 완성 날짜가 금요일 10/19이어야합니다. 수요일 10/24에 스프레드 시트를 실행하면 자동 완성 날짜가 금요일 10/26이어야합니다.

여기는 내가 지금까지 가지고있는 수식이므로 스프레드 시트를 저장할 때 또는 사용자 지정 단추를 클릭 할 때 매크로를 통해이 수식을 호출해야합니다. 어떤 도움이라도 대단히 감사하겠습니다.

=IF(ISBLANK($A2),"",IF(WEEKDAY(TODAY())<4,(TODAY()+(-1-WEEKDAY(TODAY()))),(TODAY()+(6-WEEKDAY(TODAY()))))) 

답변

0

내가 당신이 원하는 무엇을 VBA를 사용하는 것이 좋습니다 거라고는 통합 문서 저장하기 전에에서 ThisWorkbook 모듈에 가서 실행됩니다 이런 일이 :

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) 
    'Check if A2 is blank 
    If Cells(2, 1) = "" Then Exit Sub 
    'Find the date and use it 
    Dim x As Long 
    Dim dateToUse As Date 
    x = Weekday(Date, vbSaturday) 
    If x <= 4 Then 
     dateToUse = Date - x 
    Else 
     dateToUse = Date + (7 - x) 
    End If 
    'Change Cells(1, 1) to the actual target you want to have the date, 
    'which could be determined based upon the contents of your workbook/sheet. 
    Cells(1, 1) = dateToUse 
End Sub 
+0

완벽하게 일했다. 하지만 한 가지 더 질문합니다. 이제 지정된 셀 주소 (예 : (2,7)) 만 업데이트합니다. Cell (2, n) = ""(또는 행의 끝)까지 모든 열 7 ((2,7), (3,7), (4,7) 등)에 dateToUse 값 스프레드를 어떻게 만들 수 있습니까? – user1774445

+0

'셀 (1, 1)'을'Range (셀 (2,7), 셀 (n, 7))'로 대체하십시오. 여기서 n은 마지막 행 번호입니다. –

+0

대니얼에게 감사드립니다. 나는이 줄을 추가하여 마지막 rallLRall = Cells.Find (What : = "*", After : = [A1], SearchOrder : = xlByRows, SearchDirection : = xlPrevious)를 보냈다. 다시 한번 감사드립니다. – user1774445

관련 문제