2010-06-02 5 views
1

Excel VBA에서 열을 요약하려고합니다. 그러나 공백이 있기 때문에 합계가 0이됩니다.Excel VBA - 열을 요약하십시오.

Dim rExternalTotal As Range , dExternalTotal as Double 
Set rExternalTotal = Range(rReportData.Offset(0, 0), rReportData.Offset(261, 0).End(xlUp)) 
dExternalTotal = Application.WorksheetFunction.Sum(rExternalTotal) 

dExternalTotal은 항상 0입니다. 작업 시트의 공백을 삭제할 수 없습니다. 누구든지 프로그래밍 방식으로 합계를 수행 할 수있는 방법을 제안 할 수 있습니까?

+0

나는 원본 게시물의 형식이 더 좋았습니다. 그냥 수평 스크롤 막대가 싫어 ... – code4life

+0

rReportData 란 무엇입니까? – KevenDenen

+0

rReportData는 또 다른 범위입니다 – Kojof

답변

2

오류의 원인을 잘못 해석했다고 생각합니다. rExternalTotal은 단일 셀과 같습니다. rReportData.offset (0,0)은 rReportData와 같습니다.
rReportData.offset (261,0) .end (xlUp)는 261 행만큼 오프셋 된 다음 rReportData와 같을 가능성이 높으며 .end (xlUp) 연속 데이터 범위의 상단을 선택하는 함수. 그냥 컬럼의 합에 관심이 있다면
, 당신은 단지 전체 열을 참조 할 수 있습니다

dExternalTotal = Application.WorksheetFunction.Sum(columns("A:A")) 

또는

dExternalTotal = Application.WorksheetFunction.Sum(columns((rReportData.column)) 

워크 시트 기능의 합이 제대로 공백을 무시합니다.

도움이 될지 알려주세요.

+0

답장을 보내 주셔서 감사합니다. 그러나 답장을 보내 주셔서 감사합니다. – Kojof

+0

이 한 줄의 코드는 위의 코드 중 아무 것도 사용하지 않고 rReportData를 초기화하는 추가 코드 줄을 사용하여 다양한 열을 테스트했습니다. rReportData를 초기화하고 있습니까? dExternalTotal을 표시하는 위치를 포함하여 전체 코드를 게시 할 수 있습니까? – goggin13

+0

죄송합니다. 코드가 너무 길어서 보낼 수 없습니다. 하지만 rReportData는 정상 범위에 불과합니다.데이터는 다음과 같습니다. COLUMN C
7,000,000.00 7,130,000.00 5,165,000.00 3,360,000.00 2,030,000.00 3,420,000.00 5,170,000.00 1,650,000.00 – Kojof

2

다음은 Excel에서 숫자 열을 추가하려는 경우 수행 할 수있는 작업입니다. (나는 엑셀 2010을 사용하고 있지만, 변화를하지 않아야합니다.)

예 : 은 (당신이 세포 X에서 일하거나 변수 X로 원하는 답을 &을 B100을 열 B 형태의 B10에 셀을 추가하고 싶은 말은하자 X는 임의의 셀이나 정수로 Dim X와 같이 생성 한 변수 일 수 있습니다.

Range("B5") = "=SUM(B10:B100)" 

또는

X = "=SUM(B10:B100) 

괄호 내부에 인용 부호가에 없다 "= SUM (B10 : B100)하지만 범위에서 괄호 안에 인용 부호가 (있다"B5 여기에 코드입니다 "). 또한, 등호 사이의 공간에 서명하고 그것의 오른쪽에 인용이있다.

일부 세포가 비어있는 경우 그것은 중요하지 않습니다, 단순히 포함 제로로 표시됩니다!

이것은 당신을 위해 그것을해야합니다!

0

Form1의 D 열의 숫자를받는 양식의 레이블이 있습니다. 행 2 ~ 50에만 관심이 있습니다. 행 수가 동적 인 경우 행 카운터를 사용할 수 있습니다. 열 D에 빈 항목이 몇 개 있는데 무시됩니다.

Me.lblRangeTotal = Application.WorksheetFunction.Sum(ThisWorkbook.Sheets("Sheet1").Range("D2:D50"))