2011-03-18 5 views
8

내 프로그램 중 하나에서 숫자 범위의 평균을 계산해야합니다. 문제는 때로는 해답이 거대한 십진수로 나옵니다. 그리고이를 최대 소수점 두 자리까지 가져와야합니다.VBA 라운드 기능

나는 Excel.WorksheetFunction.Round(...)이라고 불리는 것을 보았지만, 내가 아는 한 특정 번호 나 특정 세포에서만 작동합니다. 누군가가 이것을 구현하여 셀 범위의 모든 소수를 반올림하는 방법을 알고 있는지 궁금합니다.

Excel.WorksheetFunction.Round(ActiveSheet.Range(g_first_Function_Col & "2:" & g_first_Function & g_totalRow).Select, 2) 

위의 코드는 셀 범위에서 라운드 함수를 사용하려고합니다. g_first_Function_Col은 일부 열 (예 : "H"열)이며 g_totalRow는 값이있는 마지막 행입니다. 이 코드를 실행하려고하면 "="예상됩니다. 기본적으로 전체 열을 선택하고 반올림하려합니다.

제시 Smothermon 감사

당신이 할 수있는 두 가지 방법이 있습니다
+0

흥미로운 접근 방식을, 내가 요청할 수 있습니다 각 셀을 반올림해야하는 이유? 그것은 당신의 질문에서 내게 소리를 합계하고 다음 둥근 그 소리 것인가? –

+0

기본적으로이 프로그램은 합계, 평균, 중앙값, 최대 값 등과 같이 원하는 범위의 셀 (셀 범위에 적용 할 수 있음)에 대해 최대 4 개의 사용자 입력을 허용합니다. 단지 Excel 기능을 사용하기 때문에 출력에있을 때까지 출력 할 때까지 실제로 아무 것도 저장하지 않습니다. 답변을 모르기 때문에 소수의 셀이 많은 경우 즉시 모든 셀에서이 작업을 수행하고 싶습니다. –

답변

8

.

당신의 범위 -를 선택하여

및 숫자 형식 변경 : 당신의 범위에있는 모든 세포를 통해

Range("myrange").Select 
Selection.NumberFormat = "0.00" 

-Loop을하고 각 라운드 기능을 적용 할 수 있습니다. VBA에서는 한 번에 전체 범위에서 라운드 기능을 사용할 수 없습니다.

For Each currentcell In myRange 
    currentcell.Value = Math.Round(currentcell.Value, 2) 
Next 

(위 의사는, 당신은 당신의 범위에있는 모든 셀을 통해 루프 더 나은 For..Next 루프가 필요합니다.)

+0

대단히 고맙습니다. 첫 번째 제안을 시도하고 원하는 방식으로 작업했습니다. 한 번에 전체 범위를 수행하여 시간을 절약하고 싶었습니다. –