거의 모든 UDF를 사용하는 Excel 모델이 있습니다. 120 열, 400 행 이상이 있습니다. 계산은 수직적으로 그리고 나서 수평 적으로 행해진 다 - 먼저 컬럼 1에 대한 모든 계산이 끝난 다음 컬럼 1의 최종 출력은 컬럼 2의 입력이다. 각 컬럼에서 나는 약 6 또는 7 개의 UDF를 호출한다. 다른 UDF를 호출하십시오. UDF는 종종 h 열을 출력합니다.Excel 및 속도 문제 사용자 정의 함수
각 UDF에 대한 입력은 여러 변수, 일부 범위 변수 및 일부 복식입니다. 범위 변수는 내용에 액세스하기 전에 내부적으로 배열로 변환됩니다.
내 문제는 다음과 같습니다. UDF없이 Excel 모델을 만들 수 있으며 시뮬레이션을 실행하면 X 시간으로 모든 계산을 마칠 수 있습니다. UDF를 사용할 때 시뮬레이션 시간은 3X 시간 이상입니다. 명백한 질문에 답하기 위해 모델에 작은 변경 (예 : 다른 자산 유형 추가 (재무 모델))을하려는 경우 모델 재 작성 작업이 거의 하루가 걸리기 때문에 UDF를 사용해야합니다. 새로운 법적/재무 구조에 맞는 UDF가없는 경우 UDF를 사용하면 다른 재무 구조를 수용하는 데 약 20 분이 소요됩니다.)
어쨌든 화면 업데이트를 해제 했으므로 기능에 복사 및 붙여 넣기가 없습니다 , Variant 타입의 사용은 최소이고, 모든 데이터는 하나의 시트에 포함되어 있습니다. 나는 내용을 얻기 전에 모든 범위 타입 변수를 배열로 변환합니다.
VBA 코드/Excel 파일이 더 빨리 실행되도록하기 위해 더 빠른 컴퓨터 나 그와 비슷한 제품을 얻는 것 이외에 할 수있는 다른 방법은 무엇입니까? 더 많은 설명이 필요한 경우 알려 주시기 바랍니다.
감사합니다.
wks.EnableCalculation = False
또는 또한
Application.Calculation = xlCalculationManual
와
여기에 기능을 게시 할 수 있습니까? 또는 단순화 된 버전으로 볼 수 있습니다. –
와우, 나는 그렇게 빨리 반응을 얻을 것이라고 생각하지 않았다. 일주일 동안 어떤 일이 일어 났는지에 대한 간단한 버전을 게시 할 수 있는지 알 수 있습니다. 메시지 주셔서 감사합니다! –
C에서 UDF를 코딩하고 XLL로 패키징하는 프로그래머 오버 헤드가 VBA UDF를 많이 호출하지 않아도 실행 오버 헤드를 절약 할 수있는 것처럼 보입니다. – jtolle