저는 마이크로소프트 오피스 엑셀 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까지만 가능합니다. 최소한 정수만 처리하는 한 반올림으로 인해 손실되는 것은 없습니다.
답변2
엑셀은 15자리만 저장할 수 있습니다. 가장 큰 숫자는 999999999999999 입니다. 16자리 숫자를 입력하려고 하면 마지막 숫자는 16번째부터 0으로 반올림됩니다.
답변3
답변4
변수 유형을 사용하십시오 Decimal
. 숫자를 다음과 같이 선언할 수는 없지만 변수 Decimal
에 저장할 수는 있습니다 Variant
.
Dim value1 as Variant
value1 = CDec(copyrng2.value)
메모: 다루고 있는 큰 숫자(12500000000000)를 사용하여 소수점 이하 자릿수를 저장하려고 하면 Excel에서 해당 숫자를 소수점 이하 1자리로 반올림하는 것 같습니다.