Ken은 Excel에 입력 한 값의 유효 자릿수를 유지할 수 있는지 물었습니다. 예 : “12.345600”및 “1.230”.

짧은 대답 켄은 할 수 없다는 것입니다. 왜? Excel은 항상 내부적으로 모든 것을 15 개의 유효 숫자로 변환하기 때문입니다. 즉, 12 또는 12.0 또는 12.00000을 입력하면 Excel은 가장 정확한 수학적 의미에서 기술적으로 정확하지 않을 수 있지만 항상 12.0000000000000과 동일한 것으로 간주합니다. 또한 Excel은 모든 것을 15 개의 유효 자릿수로 변환하므로 일반 숫자 형식을 사용하여 표시되는 모든 숫자에서 후행 0을 자릅니다.

(위의 설명에서 “유효 자릿수”, “정밀도”및 “소수 자릿수”라는 용어는 완전히 다른 것을 의미한다는 것이 분명합니다. 예를 들어 숫자 12.000은 소수점 세 자리를 갖지만 유효 자릿수는 5입니다. (내가 틀렸다면 청중의 수학 이론가들이 나를 고쳐주기에 너무 기뻐할 것이라고 확신합니다.)

개별 셀에 대해 사용자 지정 숫자 형식을 사용할 수 있습니다. 올바른 숫자의 유효 자릿수를 사용하여 정보를 제공하지만 Excel이 내부적으로 작동하는 방식에는 영향을주지 않습니다. 예를 들어 12 또는 12.0 또는 12.00000을 표시하도록 셀 서식을 지정할 수 있지만 Excel에서 여전히 모든 숫자를 이 문제를 해결하는 한 가지 방법은 숫자 앞에 아포스트로피를 넣어 숫자를 텍스트로 입력하는 것입니다. 즉, 12.0을 입력하는 대신 ’12 .0을 입력합니다. Excel 그런 다음 항목을 텍스트로 구문 분석합니다 (Apos trophe) 셀에 12.0을 표시합니다. 이 방법의 유일한 단점은 모든 수학 함수에서 셀을 직접 참조 할 수 없다는 것입니다. Excel에서 텍스트로 간주하는 내용을 함수에 포함시키기 때문에 일부는 오류를 반환합니다. 이를 처리하는 가장 쉬운 방법은 전체 수식의 일부로 = VALUE 함수를 포함하는 것입니다. 예를 들어 B7 셀에 텍스트로 숫자를 입력 한 다음 수식에서 참조해야하는 경우 다음과 같이 할 수 있습니다.

이것은 단일 셀 참조가있는 수식에 적합합니다. 그러나 범위 참조에는 잘 작동하지 않습니다. 텍스트로 입력 된 값 범위에 대해 합계 또는 평균을 계산해야하는 경우 Excel은 매번 질식하여 함수가 수행하려는 작업에 따라 오류를 반환합니다.

=VALUE(B7) * 100

이것은 우리에게 두 번째 잠재적 인 해결책을 제시합니다 : 유효 자릿수 또는 실제 값과 분리 된 소수 자릿수를 유지하는 것입니다. 많은 기술적 수학적 목적을 위해 이것은 상황을 처리하는 가장 좋은 방법입니다. 예를 들어 C 열에 숫자를 숫자로 입력 할 수 있습니다. 물론 Excel은이를 내부적으로 15 개의 유효 숫자로 변환합니다. D 열에는 C 열의 값에 적용 할 소수 자릿수를 나타내는 다양한 숫자를 입력 할 수 있습니다. 그런 다음 D 열의 값을 사용하여 C 열의 값을 참조하는 수식을 작성할 수 있습니다.

최종 가능한 해결책은 표시하려는 소수 자릿수 만 표시하도록 각 개별 셀의 서식을 지정하는 것입니다.

위에서 언급 한주의 사항 (이러한 서식이 Excel에서 숫자의 내부 표현에 영향을주지 않음)을 고려하면 이것이 최상의 솔루션 일 수 있습니다. 물론 두 개의 셀의 표시 형식을 개별적으로 조정하는 것은 쉽지만 100 개 또는 500 개 셀에 대해 조정하는 것은 다른 이야기입니다. 이것은 매크로가 유용 할 수있는 곳입니다. 다음 매크로를 고려하십시오.

숫자를 텍스트로 입력하면 (위에 언급 한 아포스트로피 포함) 셀을 선택하고이 매크로를 실행할 수 있습니다. 텍스트 항목이 숫자로 변환되고 해당 셀에 적용된 서식이 변경되어 텍스트 항목에 입력 한 것과 동일한 소수 자릿수가 표시됩니다.

Sub SigPlaces()

Dim c As Range Dim strcell As String, NumFormat As String, DecSep As String Dim DecPtLoc As Integer, stringLen As Integer Dim numDecPlaces As Long

DecSep = "."



For Each c In Selection.Cells     strcell = c.Value     If IsNumeric(strcell) Then         NumFormat = "#0"

DecPtLoc = InStr(strcell, DecSep)

If DecPtLoc > 0 Then             NumFormat = NumFormat & DecSep             stringLen = Len(strcell)

numDecPlaces = stringLen - DecPtLoc             NumFormat = NumFormat & String(numDecPlaces, "0")

End If         c.Value = Val(strcell)

c.NumberFormat = NumFormat     End If Next c End Sub

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (2045)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.