이 게시판은 아별닷컴 회원만 질문을 올릴 수 있습니다. 회원에게 주어지는 특권인셈이지요. 회원이 아닌 분들은 열람만 가능합니다.
댓글 '4'
아우릭님..
VBA로 수식을 입력하고.. 수식을 값으로 만드는 방법을 사용했습니다.
굳이.. 각 행별로 VBA로 평가하고 값을 입력할 필요는 없을 것 같네요..
첨부파일을 다운 받으신 다음..
화면 오른쪽에 있는 "유형 평가하기" 버튼을 클릭하시면 유형을 평가해줍니다. (물론 값으로만 남습니다.)
(이름 정의가 외부 파일로 되어 있어서.. MasterCode란 시트를 만들고 이름 정의를 다시 했습니다.)
다운 받기 : 2012.3.20.VBAcla.01-2.xlsm
도움이 되셨기를..
첨부파일에 사용된 VBA 코드입니다.
=> 기준을 A3로 잡고.. A열에 데이터가 무한대로 증가해도 대응할 수 있도록 코드를 작성하였습니다.
핵심은.. 영역을 설정하는 Range(rngRef, rngRef.End(xlDown)).Offset(0, 73) 코드입니다.
기준셀부터 기준셀의 맨아래셀까지의 범위를 오른쪽으로 73번 이동시킨 영역..
첨부파일로 본다면.. BV3:BV250입니다. A열의 데이터가 늘어나면 BV의 대상 영역도 같이 늘어납니다.
Sub evaluateType() Dim rngRef As Range Set rngRef = Range("A3")
With Range(rngRef, rngRef.End(xlDown)).Offset(0, 73) .FormulaR1C1 = _ "=IF(RC[-35]<0,""가치하락"",IF(AND(RC[-44]<0,RC[-42]<>RC[-41]),향상유형1,IF(RC[-44]>0,향상유형2,IF(AND(RC[-44]=0,RC[-42]<RC[-41]),향상유형3,IF(AND(RC[-44]<0,RC[-42]=RC[-41]),향상유형4,"""")))))" .Value = .Value End With
With Range(rngRef, rngRef.End(xlDown)).Offset(0, 74) .FormulaR1C1 = _ "=IF(RC[-45]>0,""증가"",IF(RC[-45]=0,""동일"",""절감""))" .Value = .Value End With End Sub |
엑셀 파일을 올려주세요..
일단 IF문이 너무 복잡해보이네요.. VLOOKUP등으로 대체할 수 있을지 봐야할 것 같구요..
음.. VBA로 대체하는게 좋은 방법은 아닌 것 같습니다.
데이터 행이 늘어날때마다 드래그해서 자동채우기 하지 마시고.. 범위를 선택하고 Ctrl+D를 눌러서 자동채우기 하세요..
맨 위의 셀을 아래쪽으로 채워줍니다.
엑셀 2007이상 버전이시라면..
표를 사용하시면 데이터가 늘어날때마다 수식이 자동으로 채워집니다.
결국은 엑셀 파일을 올려주셔야 딱 맞는 답변이 가능하겠네요..
감사합니다.