2014-06-05 2 views
1

사용자에게 날짜를 묻는 매크로가 있으며 날짜에 해당하는 파일을 열고 일부 작업을 수행합니다. 그러나 수동으로 날짜를 입력하는 대신 이전 평일을 계산하는 Excel 함수를 작성하려고합니다. 이것은 보통 내가 입력 한 날짜가 이전 요일과 일치하기 때문입니다.이전 주중 Excel 수식

예를 들어, 오늘이 월요일 인 경우 지난 주 금요일 날짜를 원하고 나머지 평일 인 경우 금요일까지는 전날입니다. 주말에 해당하는 파일은 없습니다.

어떻게하면됩니까?

+0

이 날짜 어떤 형식 표시 할 그러나 셀의 서식을? 평일에는 Excel 날짜 형식이나 텍스트 값입니까? – Taosique

+0

@Taosique : mm/dd/yyyy 형식입니다. – pikachuchameleon

+0

매크로/함수에 날짜가 전달되는 방식은 무엇입니까? 실제로 Date 형식의 변수는 Integer입니까? 아니면 텍스트로? – Taosique

답변

0

나중에 엑셀 2010에서 이것을 시도하거나 :

Public Function PreviousWeekDay(InputDate As Date) As Integer 
    Dim Result As Integer 
    Result = Weekday(InputDate, vbMonday) 
    If Result = 6 Or Result = 7 Or Result = 1 Then 
     Result = 5 
    Else 
     Result = Result - 1 
    End If 
    PreviousWeekDay = Result 
End Function 

반환 1 = 월요일 :

=IF (WEEKDAY (A1, 16) > 3 , A1-1 , A1 - WEEKDAY (A1, 16)) 

은 = 1 VBA에서

0

토요일 WEEKDAY 세트의 두 번째 매개 변수로 16 추가 , 2 = 화요일 등

5
=WORKDAY(TODAY(),-1) 

이것은 Excel에서 셀의 형식을 지정할 수있는 요일의 일련 번호를 반환합니다.

기능에 대한 자세한 내용은 here을 참조하십시오.

+0

감사합니다. 작동했습니다 !! .. – pikachuchameleon

0
=IF(WEEKDAY(NOW()-2)>5,NOW()-WEEKDAY(NOW()-6),NOW()-1) 

그럼 그냥 당신이

+0

잘 작동합니다. 고마워요 :) – pikachuchameleon

+0

@MatthewHagemann 그 마법의 숫자 -2,5, -6, -1은 무엇을 의미합니까? 답에 설명을 추가하면 내 표를 얻을 수 있습니다 – xmojmr

+0

죄송합니다. 설명을 더 잘 이해해야합니다. 데이터 직렬화에서 1 = 1 일. 그래서 Now() - 2는 어제 전날이 될 것입니다. 수식은 어제 토요일이나 일요일 (2 일 전의 금요일 또는 토요일)이었던 경우 이전 금요일의 날짜가 반환되기를 원한다고 말하고 있습니다 (오늘부터 다음 평일의 숫자를 뺀 것이므로 지금 주중 (Now)() -6) 또는 Weekday (지금() + 1)). 그렇지 않은 경우 어제의 날짜 만 반환합니다. – MatthewHagemann