Excel VBA 변수에 저장할 수 있는 가장 큰 값(숫자)은 무엇입니까?

Excel VBA 변수에 저장할 수 있는 가장 큰 값(숫자)은 무엇입니까?

저는 마이크로소프트 오피스 엑셀 2007을 사용하고 있습니다.

숫자가 12500000000000이라고 가정합니다.

Dim value1 as long

value1 = CLng(copyrng2.value)

'where copyrng2 is a range (cell) variable containing 12500000000000

위의 코드는 오버플로로 인해 실패합니다.

해당 숫자를 Excel(VBA) 변수에 저장할 수 있나요? 그렇지 않은 경우 계산을 수행할 수 있는 형식(Integer, Long 등)으로 저장하려면 어떻게 해야 합니까?

답변1

다음을 사용해야 한다는 점에서 기존 답변이 정확합니다.더블데이터 형식. 문제가 해결되었습니다. 이제 몇 가지 기술적인 세부 사항을 설명하겠습니다.

Double 데이터 형식이 저장할 수 있는 가장 큰 숫자(또한 Excel에서 처리할 수 있는 가장 큰 숫자)는 1.79769313486231570 • 10 308 입니다 . 그러나 수식 없이 셀에 넣을 수 있는 가장 큰 숫자는 9.99999999999999 • 10 307 입니다 . 그렇게 큰 숫자로 작업할 때는 정확성이 많이 떨어진다는 점에 유의하세요. 그 정도 크기의 숫자에 비교적 작은 숫자를 추가하면 아무 것도 하지 않을 가능성이 높습니다.부동 소수점은 약간 이상해질 수 있습니다.

Long 데이터 유형의 최대 크기는 Double의 범위에 비해 바다의 한 방울입니다. 부호 있는 64비트 정수는 최대 9,223,372,036,854,775,807까지만 가능합니다. 최소한 정수만 처리하는 한 반올림으로 인해 손실되는 것은 없습니다.

출처:Excel 사양 및 제한 사항,데이터 유형 요약

답변2

엑셀은 15자리만 저장할 수 있습니다. 가장 큰 숫자는 999999999999999 입니다. 16자리 숫자를 입력하려고 하면 마지막 숫자는 16번째부터 0으로 반올림됩니다.

답변3

당신은 사용해야합니다더블오히려. 와 함께지하 2층좋다:

여기에 이미지 설명을 입력하세요

이 코드는 오류를 발생시킵니다:

Sub dural()
    Dim d As Long
    d = Range("B2").Value
End Sub

하지만 이 코드는 다음을 수행하지 않습니다.

Sub BigNumber()
    Dim d As Double
    d = Range("B2").Value
    MsgBox d
End Sub

여기에 이미지 설명을 입력하세요

답변4

변수 유형을 사용하십시오 Decimal. 숫자를 다음과 같이 선언할 수는 없지만 변수 Decimal에 저장할 수는 있습니다 Variant.

Dim value1 as Variant
value1 = CDec(copyrng2.value)

메모: 다루고 있는 큰 숫자(12500000000000)를 사용하여 소수점 이하 자릿수를 저장하려고 하면 Excel에서 해당 숫자를 소수점 이하 1자리로 반올림하는 것 같습니다.

관련 정보