두 개의 double을 나눌 때 오버플로 오류가 발생하며 그 이유를 알 수 없습니다. 지금두 개의 double을 나눌 때 Excel VBA 오버 플로우가 발생했습니다.
'x will be used to sum the elements
Dim x, ct As Double
x = 0
ct = 0
For Each cell In Range(rng)
If cell.Offset(, offset1).Value = Crit1 And cell.Offset(, offset2).Value = Crit2 Then
x = x + cell.Value
ct = ct + 1
End If
Next
'Divide by count
Avg = x/ct
처음에는 같이
여기 내 코드입니다, ct
는 Long
로 선언,하지만 난 그 문제를 해결할 수 있는지 확인하기 위해 Double
로 변경,하지만하지 않았다되었다.
또한 마지막 줄을 Avg = CDbl(x/ct)
으로 변경하려고했지만 동일한 오류가 발생합니다.
cell.Value
의 값은 항상 실제 숫자이며, 일반적으로 0에서 약 9,000,000 사이이며, 때로는 17,000,000까지 올라갑니다. 약 20,000보다 큰 숫자는 거의 항상 정수입니다.
"Dim x, ct As Double"크기가 변형 된 x입니다. – pnuts
오버플로를 일으키는 값을 트랩해야합니다. 중단 점을 코드에 유지하고 오류가 발생하면 변수가 왜 발생하는지 확인하십시오. 그것은 거기에있는 데이터에 따라 다르지만, 어떤 종류의 에러 트랩을 추가하거나 '분모하기 전에 데이터를 사전 점검'하여 코드를 '더 안전하게'만들 필요가 있습니다. (0 분모 등을 확인하십시오.) – hnk
@hnk 감사합니다! 나는 0의 분모를 확인하는 것을 잊어 버렸고, 그것은 문제를 일으켰다. – sjcglads