본문 바로가기
엑셀

VBA 셀에 숫자 포맷 적용하기

by 데이터스토리 2023. 2. 24.
반응형

지인 사무실에서 사용하는 엑셀 기반 시스템에 오류가 발생했다.

첫번째 오류는 유지율1 과 유지율2가 같은 값이 나오는 것이고

두번째 오류는 회수율1에 나오는 값에 백분율이 아닌 지수값으로 나오는 것이다.

 

첫번째 오류는 쉽게 해결했다.

유지율1 과 유지율2에 같은 값을 참조하고 있었다.

참조하는 칼럼을 변경했다. ("U" --> "V") 해결되었다.

        For i = 1 To n
            ...
            p = 1 + 52

            arr(i, 4) = .Range("U" & p)             '-- 유지율 1
            arr(i, 5) = .Range("U" & p)             '-- 유지율 2

            ...
        Next i
    End With

 

두번째 오류는 쉽지 않았다.

Template 시트에 있는 양식을 복사해서 새로운 시트에 옮기고

그 위에 값을 넣는 것이다.

이유는 모르지만 1번 row와 4번 Row는 지수 양식으로 나타났다. 나머지는 백분율로 잘 나왔다.

 

Template 문제인가 하여 확인해 봤지만 아니었다. 

VBA에서 데이터 입력의 문장의 문제인가 살폈지만 아니었다.

원인을 찾기보다, 해결책을 바로 넣기로 했다.

".Range("D" & p).NumberFormat = "0.00%" 를 추가햤더니 해결되었다.

 '===== 기존 코드 ========
 For i = 1 To n
    ...
    p = i + 23
    .Range("D" & p) = arr(i, 3)       '-- 유지율 1  
    .Range("E" & p) = arr(i, 3)       '-- 유지율 2

    ...
  Next i
  
  
 '===== 수정 코드 ========
 For i = 1 To n
    ...
    p = i + 23
    .Range("D" & p) = arr(i, 3)               '-- 유지율 1
    .Range("D" & p).NumberFormat = "0.00%"    '-- 백분율 처리
    .Range("E" & p) = arr(i, 3)               '-- 유지율 2

    ...
  Next i

 

셀 관련 NumberFormat 은 셀에 적용할 수 있는 Format이 전부 제공되고 있다.

외울 필요없이, 블로그에 적어 두면 찾기 쉽다. 

찾아서 적용하면 된다.

 

.Range("D" & p).NumberFormat  유형

 
기본 포멧
   Range(셀주소).NumberFormat = "표시 형식"

 

표시형식 예시

 

'-- 통화
Range("A1").NumberFormat = "#,###"

'-- 소수점 자리
Range("A1").NumberFormat = "0.00"

'-- 통화&소수점
Range("A1").NumberFormat = "#,###.00"


'-- 백분율
Range("A1").NumberFormat = "0.00%"

'-- 지수형식
Range("A1").NumberFormat = "##0.0E+0"


'-- 날짜
Range("A1").NumberFormat = "yyyy-mm-dd"
Range("A1").NumberFormat = "yyyy""년"" mm""월"" dd""일"""

'-- 날짜   시간
Range("A1").NumberFormat = "yyyy-mm-dd h:mm"


'-- 텍스트
Range("A1").NumberFormat = "@"

'-- 색상지정
Range("A1").NumberFormat = "#,##0;[Red]-#,##0"
 
 
참조 문서

 

반응형