2012-10-04 5 views
1

한 시트에서 값을 가져와 Excel에서 매크로를 사용하여 다른 시트에 값을 배치하고 있습니다. 현재 잘 작동하는이 있습니다 :Excel 및 VBA에서 수식이 아닌 수식 결과로 셀 값을 설정하는 방법

sheet.range("B2:B35").Value = "=IF(SUMPRODUCT(--(Raw!$B$11:$B$322=$A2),--(Raw!$D$11:$D$322=All!$B$2),Raw!$H$11:$H$322)<>0,SUMPRODUCT(--(Raw!$B$11:$B$322=$A2),--(Raw!$D$11:$D$322=All!$B$2),Raw!$H$11:$H$322),""-"")" 

분명히 전체 수식을 셀 값으로 지정합니다. 내가 원하는 것은 수식의 결과를 셀에 넣는 것입니다. 나는 "IF ..."부분 주위에 Evaluate()를 추가하려고 시도했지만 IF가 올바르게 평가되지 않습니다 (각 셀의 "-"로 끝납니다). 이 작업을 수행 할 수 있습니까? 또는 루프를 통해 셀의 값으로 값을 변경하는 별도의 코드가 있어야합니까?

답변

3

사용 : 그건 당신이 서식을 변경해야 할 수도 있습니다 작동하지 않는 경우

sheet.range("B2:B35").Formula = "Your formula here" 

(이 처음 수행) :

sheet.range("B2:B35").NumberFormat = "General" 

편집 : 해결책이 켜져

OP 코드 뒤에 다음 행을 추가하십시오.

sheet.range("B2:B35").value = sheet.range("B2:B35").value 
+0

원본 코드는 이미 .Value 대신 .Formula를 사용하고 있습니다 (평가판을 사용할 때 두 가지를 모두 시도 함). 그것은 세포에 들어간 것을 변화시키지 않았습니다. 셀에 서식을 지정하는 것은 이미 일반적이지만 자동으로 수행 된 것으로 보입니다. 코드를 통해 구체적으로 설정하지 않았습니다. – Kurt

+0

이상한. 당신이 그것을 실행한다면, 그것을 선택하고 (즉각적인 창에서) 다음을하십시오 : Selection.NumberFormat = "General", 그리고 Selection.Value = Selection.Value, 당신은 무엇을 얻습니까? – mkingston

+1

약간 말한 내용 수정 : sheet.range ("B2 : B35"). 값 = sheet.range ("B2 : B35"). 그때 작동합니다. 나는 OP에서 약 5 번 반복되는 코드를 가지고 있기 때문에 이것을하지 않아도되기를 바랬다. 오 잘. 1 줄의 코드를 추가하기 만하면됩니다. – Kurt