John은 사용자가 정보를 입력 할 수있는 데이터 입력 워크 시트를 가지고 있습니다.

그는 사용자가 입력 한 소수점 이하 자릿수를 정확히 표시하도록 셀의 서식을 자동으로 지정하려고합니다. 예를 들어 사용자가 “12.345”를 입력하면 소수점 3 자리를 표시하도록 셀의 서식이 자동으로 지정되기를 원합니다. John은 셀에 일반 형식을 사용할 수 있다는 것을 알고 있지만 (이는 훌륭하게 수행됨) 사용자가 형식화되기를 원하는 “12.34500”과 같이 0으로 끝나는 값을 입력하면 해당 접근 방식이 작동하지 않습니다 (자동으로). 소수점 5 자리를 표시합니다.

요구 사항을 해결하기 위해 사용자 지정 형식을 사용할 수 있다고 생각하는 경우 작동하지 않습니다. 우리가 생각 해낼 수있는 사용자 지정 형식으로 Excel은 표시되는 항목에서 후행 0을 삭제합니다. (또는 반대로 사용자 지정 형식에 자리 표시 자로 “0”이 포함되어 있으면 항목 끝에 0이 추가됩니다.)

이를 처리하는 가장 쉬운 방법은 정보 입력을 시작하기 전에 셀을 텍스트 형식으로 지정하는 것입니다. 이렇게하면 Excel은 뒤에 오는 0을 포함하여 입력 된 내용을 받아들이고 셀에 채 웁니다. 또한 셀 내용을 오른쪽 정렬하여 적어도 숫자 값과 비슷하게 보이도록 할 수 있습니다.

단점은 수식에서 값을 사용할 때주의해야한다는 것입니다. 가장 안전한 방법은 VALUE 함수 내에서 셀에 대한 참조를 다음과 같이 둘러싸는 것입니다.

=VALUE(A1) * 1.375

또 다른 방법은 셀 범위에 입력 된 내용을 확인하는 매크로를 만드는 것입니다. 먼저 셀의 서식을 텍스트로 지정한 다음 해당 셀에서 명명 된 범위 (DataEntry)를 만듭니다. 그런 다음 사용중인 워크 시트의 코드 시트에 다음 코드를 추가 할 수 있습니다.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim c As Range     Dim sEntry As String     Dim dEntryNumber As Double     Dim arr

If Not Intersect(Target, Range("DataEntry")) Is Nothing Then         Application.EnableEvents = False         For Each c In Target.Cells             If IsEmpty(c) Then                 c.NumberFormat = "@"    ' Reset to Text format             Else                 If IsNumeric(c) Then                     If Len(c.Value) = 0 Then                         c.NumberFormat = "@"    ' Reset to Text format                     Else                         sEntry = c.Value                         dEntryNumber = CDbl(sEntry)



arr = Split(sEntry, ".")

If UBound(arr) = 1 Then                             ' Change NumberFormat in accordance with                             ' the number of digits after the decimal point                             c.NumberFormat = "0." & String(Len(arr(1)), "0")

c.Value = dEntryNumber                         End If                     End If                 End If             End If         Next c         Application.EnableEvents = True     End If End Sub

매크로는 워크 시트에서 무언가 변경 될 때마다 트리거됩니다. 그런 다음 DataEntry 범위의 셀 중 하나에서 변경 사항이 발생했는지 확인합니다. 그렇다면 셀에 입력 된 내용을 검사합니다 (셀 서식이 지정된 방식이므로 Excel에서 텍스트로 처리)

그리고 그것이 숫자인지 그리고 소수 자리의 오른쪽에 몇 자리가 있는지 결정합니다. 그런 다음 소수점 이하 자릿수가 표시되도록 셀 서식을 지정하고 숫자 값을 다시 셀에 채 웁니다.

이 방법이 작동하지 않는 유일한 조건은 DataEntry 범위의 셀에 값을 입력 한 다음 (셀을 숫자 형식으로 변환) 동일한 셀에 다른 숫자 값을 입력하는 경우입니다. 이 경우 매크로는 입력되는 후행 0이 있는지 여부를 알 수 없습니다. (셀이 텍스트로 서식이 지정된 경우에만 후행 0이 유지됩니다. 셀이 텍스트가 아니기 때문에 Excel은 후행 0을 잘라 내고 매크로는 입력 된 것처럼 해당 값으로 작동합니다.)

_ 참고 : _

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

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

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

이 팁 (1963)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.