2012-12-17 4 views
0

사용자가 D1 셀에 연도 (예 : 2013 년)를 입력하고 매크로를 실행하는 버튼을 누르는 기능을 원합니다. 이 매크로는이 셀을 실제 날짜 유형으로 변환하는 셀 D2-O2 (해당 연도의 각 셀에 대해 하나의 셀)에 함수를 자동으로 할당합니다. , F2 값 등, =DATE(2013, 3, 1)하나의 셀 값을 기준으로 날짜 셀 채우기?

는 예를 들어, D2 셀의 값이 셀 마찬가지로, E2 셀의 값이 =DATE(2013, 2, 1) 것이 2013 년 1 월 1 일을 나타내는 의미, =DATE(2013, 1, 1)

다음 내 의사입니다 코드, 실제 VBA로 변환하는 데 도움 주시겠습니까?

var myYear = the value of cell D1 
cell D2 value is =DATE(2013,1,1) 
cell E2 value is =DATE(2013,2,1) 
cell F2 value is =DATE(2013,3,1) 
cell G2 value is =DATE(2013,4,1) 
cell H2 value is =DATE(2013,5,1) 
cell I2 value is =DATE(2013,6,1) 
cell J2 value is =DATE(2013,7,1) 
cell K2 value is =DATE(2013,8,1) 
cell L2 value is =DATE(2013,9,1) 
cell M2 value is =DATE(2013,10,1) 
cell N2 value is =DATE(2013,11,1) 
cell O2 value is =DATE(2013,12,1) 

감사

+2

매크로를 기록한 다음 필요에 맞게 수정 했습니까? –

+1

나는 그런 생각을 한 적이 없다고 생각합니다. 나는 엑셀과 많이 일하지 않는다. 통찰력을 가져 주셔서 감사합니다. – TimeBomb006

+1

날짜 또는 값을 날짜로 사용 하시겠습니까? 따라서 사용자가 매크로를 실행 한 후 D1에서 연도를 변경하면 셀이 변경된 연도를 반영하도록 업데이트해야합니까? 그렇지 않으면 그대로 유지해야합니까? – PaulStock

답변

1

이 시도 :

Sub FillYear() 
    YearNum = Cells(1, 4) ' Cell D1 
    For MonthNum = 1 To 12 
     Cells(2, MonthNum + 3).Value = DateSerial(YearNum, MonthNum, 1) 
    Next 
End Sub 

UPDATE :

당신이 날짜는 사용자가 변경하는 경우 변경 있도록 수식을 수 날짜 값을 원하는 경우 연도는 For Loop 안에있는 줄을 다음과 같이 변경하십시오.

Cells(2, MonthNum + 3).Formula = "=Date(R1C4," & MonthNum & ", 1)" 
+0

이것은 정확히 내가 찾고있는 것입니다. 루핑을 생각하고 있었지만 인덱스를 사용하여 각 셀의 문자를 반복하는 방법을 잘 모르겠습니다. Excel에서 1에서 인덱싱을 시작합니까? 예를 들어, 내 프로그래밍 언어 지식에서 대부분의 인덱스는 0에서 시작하고 '셀 (1,4)'은 실제로 셀 E2가됩니다. 또한, 내가 정렬 해요 구문 오류가 있습니다. – TimeBomb006

+0

구문 오류는 루프 내부의 이중 오른쪽 괄호입니다. 올바르게 작동하고 있습니다. 고마워요! – TimeBomb006

+1

예, 엑셀은 0이 아닌 1에서 인덱싱을 시작합니다. 따라서 셀 A1은 '셀 (1,1)'입니다. 워크 시트에서 행이 1부터 번호가 매겨지며 시트에 한 행으로 번호가 매겨지고 코드에 다른 방법으로 번호가 매겨지면 너무 혼란 스럽기 때문에 아마이 작업을 수행했을 것입니다. 구문 오류에 대해 미안 해요, 내 대답은 그 문제를 해결했습니다. – PaulStock

관련 문제