2017-09-21 2 views
0

각 listobject 열에 대해 일련의 함수가 있습니다. 파일이 무거워서 부서지기 때문에 각 공식의 결과를 정적 값으로 유지하기 만하면됩니다. 범위에 수식을 할당하고 범위를 값으로 변환하도록 Excel에게 요청할 수 있습니다. 그러나 VBA에 수식 자체 대신 범위의 정적 값만 쓰도록 요청하는 방법이 있는지 궁금합니다. 여기 내가 지금까지 무엇을 가지고 : 내 자신의 질문에 대한 답변으로수식 결과를 VBA 코드로 Excel 범위에 직접 작성하는 방법

Sub calculate2() 
Dim i As Long, t As Long 
t = Timer 
    With Sheet3.ListObjects(1) 
     For i = 3 To 9 
     .ListColumns(i).DataBodyRange.ClearContents 
     .Range.Cells(2, i).Formula = sheets3.range("formula").cells(i,1).formula 
     .ListColumns(i).DataBodyRange = .ListColumns(i).DataBodyRange.Value 
     Next i 
    End With 
Debug.Print Timer - t 
End Sub 
+1

은 (내가, 2) .Value = 당신은'.Range.Cells을 시도했습니다. ListColumns (i). 총합? – UGP

+0

안녕하세요, 사실 저는 수식을 유지하기 위해 전체 행을 사용하고 있습니다. 이 같은 것이 거기에 저장됩니다. = IFERROR (IF (COUNTIFS ('ZZ84'! $ B : $ B, [@ WO], 'ZZ84'! $ E : $ E, '= * V99', 'ZZ84'! $ L : $ L (ZZ84)! $ G : 'ZZ84'! $ B : $ B, [@ WO], 'ZZ84'! $ L : $ L, ")/((SUMIFS ('ZZ84'! $ G : $ G, 'ZZ84'! $ B : $ B, [@ WO]))/10 = 1,0,1-SUMIFS ('ZZ84 '! $ G :'ZZ84 '! $ B : $ B, [@ WO],'ZZ84 '! $ L : $ L, "")/((SUMIFS ('ZZ84 '! $ G : $ G , 'ZZ84'! $ B : $ B, [@ WO]))/10)/10-0.01)), "")'코드를 변경했습니다. 수식은 =로 시작하는 텍스트 문자열입니다. –

답변

0

, 은 내가 찾고 있던 것은 "application.Evaluate"나는 사람이 검색을 찾을 수에 의해 여기 온 그렇다면 것을 게시하고 내가 결국 발견 한 아이디어와 해결책. 이 경우

Sheet3.ListObjects(1).ListColumns(3).DataBodyRange = [IFERROR(IF(COUNTIFS(ZZ84!$B:$B,[WO],ZZ84!$E:$E,"=*V99"‌​,ZZ84!$L:$L,"<>")=1,1,0),"")] 

이 루프 필요가없고 각 범위에 대한 코드의 필요한 라인 (삽입 내가 excatly 찾던 VBA에있는 기능)을 작성하는 예를 들면 다음과 같습니다. 위의 함수에서 excel 셀에 직접 넣는 것만이 [@WO] 대신 [WO]를 사용합니다. 따라서 데이터 배열을 평가하고 지정된 범위 내에서 직접 작성하십시오. (여기에 목록 열 3 본문 범위).

나를 위해 그것은 내 기능으로 voilate 계산의 충돌 beacause 도움이되었습니다.

또 다른 간단한 예는 다음과 같습니다

range("b1:b10")=[if(row(1:10),if(a1:a10>3,"big","Small"))] 

또는

range("b1:b10") = evaluate("if(row(1:10),if(" & range("a1:a10").address&">3,""big"",""small""))") 

종류의 안부 M