본문 바로가기
#4 VBA/#4.2 코딩문법

변수(Variable) 개념과 역할

by 이세계의엑셀 2025. 7. 27.
반응형

변수는 데이터 분석·프로그래밍·엑셀 자동화 등 모든 정보 처리 과정에서 값을 기억·조작·관리하기 위해 반드시 이해해야 하는 기본 개념이다. 본 글은 변수의 정의, 종류, 선언·초기화 방법, 메모리 상의 역할, 실무 활용 팁을 종합적으로 설명하여 독자가 변수 활용 능력을 높이는 것을 목적으로 한다.

1. 변수란 무엇인가?

변수는 “변할 수 있는 수”라는 뜻이다. 프로그램이나 수식이 실행되는 동안 메모리 공간에 할당된 값을 이름으로 참조하게 하는 장치이다. 즉, 변수는 데이터 저장 공간 + 식별자 역할을 수행한다.

1.1 변수의 3요소

  • 이름(Name) : 개발자가 지정하는 식별자이다.
  • 자료형(Type) : 정수, 실수, 문자열 등 저장할 값의 형태이다.
  • 값(Value) : 실제로 메모리에 기록되는 데이터이다.

1.2 변수의 필요성

  1. 가독성 향상 : 의미 있는 이름 부여로 수식·코드 이해가 쉬워진다.
  2. 유지보수 용이 : 값 변경이 필요할 때 변수만 수정하면 전체 로직이 자동 반영된다.
  3. 메모리 효율 : 동일 값 재사용 및 범위 제한으로 낭비를 줄인다.

2. 변수 종류 및 비교

구분 설명 실무 예시
전역 변수 프로그램 전체(모든 모듈)에서 접근 가능하다. 엑셀 VBA에서 Public TotalRows As Long
지역 변수 선언된 블록 안에서만 유효하다. Sub 내부의 Dim i As Integer
상수 선언 후 값 변경이 불가능하다. Const PI = 3.14159
파라미터(매개변수) 함수·프로시저로 값을 전달하기 위해 사용된다. Function Add(a As Double, b As Double)

3. 변수 선언·초기화 Best Practice

VBA에서 Option Explicit를 파일 최상단에 선언하면 모든 변수 사용 전 선언을 강제해 오타·자료형 오류를 예방한다.
' VBA 예시
Option Explicit
Sub CalcProfit()
    Dim revenue As Double: revenue = 15000000   '원화
    Dim cost    As Double: cost    =  8200000
    Dim profit  As Double: profit  = revenue - cost
    MsgBox "당기순이익: " & Format(profit, "#,##0") & "원"
End Sub

3.1 초기화(Initialization)

초기화는 변수 선언과 동시에 예측 가능한 기본값을 할당해 런타임 오류를 방지한다.

' Python 예시
total_sales: float = 0.0  # 명시적 초기화

4. 변수와 메모리

컴퓨터는 변수를 스택(stack)과 힙(heap)영역에 저장한다.

  • 스택 : 지역 변수·함수 호출이 저장된다. 자동으로 push/pop되어 속도가 빠르다.
  • : 동적 할당 객체(리스트, 클래스 등)가 저장된다. 가비지 컬렉터가 메모리 회수한다.

4.1 Excel에서의 메모리 고려

대용량 시트 처리를 위해서는 루프 내부 변수 재사용 및 .ClearContents 호출로 불필요 메모리를 환원해야 성능이 향상된다.

5. 변수 네이밍 규칙

규칙 설명 예시
CamelCase 단어 첫 글자 대문자, 첫 단어는 소문자 saleAmount
PascalCase 모든 단어 첫 글자 대문자 TotalPrice
Snake_case 단어 사이에 밑줄 avg_temp_c
접두어 표기 자료형·역할을 축약어로 표시 strName, lngCount

6. 실무 사례: Excel 변수 활용

6.1 수식 내 변수(명명된 범위)

관리항목을 수식 > 이름 관리자로 정의하면 셀 주소 대신 의미 있는 변수명을 사용하여 가독성이 향상된다.

# 예: 명명된 범위
재료비   =Sheet1!$B$2:$B$100
노무비   =Sheet1!$C$2:$C$100
=SUM(재료비) + SUM(노무비)

6.2 VBA 변수로 반복 계산 자동화

Sub UpdateStock()
    Dim lastRow As Long
    Dim rngQty  As Range
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row
    Set rngQty = Range("D2:D" & lastRow)

    Dim i As Long, reorderCount As Long
    For i = 1 To rngQty.Count
        If rngQty(i).Value < 10 Then reorderCount = reorderCount + 1
    Next i
    MsgBox "재주문 필요 품목: " & reorderCount & "개"
End Sub

7. 변수 사용 시 흔한 오류와 해결책

오류 원인 대응 방법
Type mismatch 자료형 불일치 명시적 변환: CLng(), CStr()
Undefined variable 선언 없이 사용 Option Explicit 활성화
Overflow 자료형 범위 초과 Long → Double 등 큰 자료형 사용

FAQ

Q1. 변수와 상수의 차이점은 무엇인가?

변수는 실행 중 값이 변경될 수 있으나 상수는 선언 이후 값이 고정된다. 유지보수 시 상수는 의도치 않은 값 변경을 방지해 버그를 줄인다.

Q2. Excel 수식에서 변수를 쓰려면 VBA가 필수인가?

아니다. ‘명명된 범위’ 기능으로 셀 범위 자체를 변수처럼 사용할 수 있다. 대규모 모델링 시 가독성과 유지보수가 크게 향상된다.

Q3. 파이썬에서 변수 선언 시 자료형을 지정해야 하나?

파이썬은 동적 타입 언어이므로 자료형을 명시할 필요가 없다. 다만, type hint를 주면 협업·디버깅이 쉬워진다.

반응형

'#4 VBA > #4.2 코딩문법' 카테고리의 다른 글

변수를 선언하는 Dim 키워드  (0) 2025.07.28