Microsoft Excel VBA에서 텍스트를 숫자로 변환

Bilal Shahid 2024년2월15일
  1. VBA에서 텍스트를 숫자로 변환
  2. 방법 1: .NumberFormat일반으로 변경
  3. 방법 2: CSng() 함수 사용
  4. 방법 3: 셀 값에 1을 곱하기
  5. 결론
Microsoft Excel VBA에서 텍스트를 숫자로 변환

VBA는 사용자에게 다양한 기능과 기능을 제공하는 Microsoft Excel 응용 프로그램용 프로그래밍 언어입니다. 이 기사에서는 텍스트 데이터를 숫자 형식으로 변환하는 다양한 방법에 대해 알아봅니다.

VBA에서 텍스트를 숫자로 변환

Excel 데이터에 산술 공식을 적용하고 싶지만 그렇게 할 수 없는 상황이 있을 수 있습니다.

숫자가 텍스트 형식으로 저장될 수 있기 때문입니다! 이 기사에는 이 문제에 대한 해결책이 있습니다.

우리는 단순히 CStr() 함수를 사용하여 숫자를 텍스트로 변환하는 방법을 알고 있습니다. 그러나 반대로 텍스트를 숫자 형식으로 변환하려는 경우에는 VBA를 사용하여 여러 가지 방법을 사용할 수 있습니다.

이 기사에서는 다양한 변환 방법과 몇 가지 예를 살펴보고 이러한 방법이 어떻게 작동하는지 이해합니다.

방법 1: .NumberFormat일반으로 변경

첫 번째 방법에서는 범위를 지정하여 셀을 선택하고 데이터 형식을 텍스트에서 일반으로 변경한 다음 숫자 값을 설정합니다.

다음은 일반적인 코드입니다.

[X:Y].Select
With Selection
.NumberFormat = "General"
.Value = .Value
End With

여기서 X:Y는 셀 범위를 나타냅니다. 일반, 통화, 회계, 텍스트 등과 같이 MS Excel에서 사용할 수 있는 다양한 숫자 형식이 있습니다.

일반 형식은 입력한 번호를 그대로 유지합니다.

예를 들어 2222로 유지되고 10.0210.02로 유지됩니다. .Value = .Value 문은 현재 숫자 형식인 셀의 값을 가져오고 설정합니다.

결과적으로 선택한 범위의 데이터는 이제 텍스트에서 변환된 숫자 형식이 됩니다. 이 방법의 사용법을 더 명확히 하기 위해 예를 살펴보겠습니다.

처음에 Excel 시트에 다음 샘플 데이터가 있다고 가정합니다.

샘플 데이터

다음은 텍스트의 데이터를 숫자 형식으로 변환하는 코드입니다.

Sub method1()
[A1:A7].Select
With Selection
.NumberFormat = "General"
.Value = .Value
End With
End Sub

출력:

NumberFormat을 일반으로 변경

이 예에서는 텍스트 형식의 숫자 1-7이 있습니다. 위에 주어진 VBA 코드를 실행한 후 데이터가 텍스트 형식에서 숫자 형식으로 변경되었습니다.

방법 2: CSng() 함수 사용

두 번째 방법은 값이 텍스트로 서식이 지정된 경우에도 시트에서 모든 숫자 값을 찾을 수 있습니다. 그런 다음 CSng() 함수를 사용하여 이 데이터를 단일(공통) 데이터 유형으로 변환합니다.

다음은 이 메서드의 일반 코드입니다.

For Each r In Sheets("SheetName").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = CSng(r.Value)
r.NumberFormat = "0.00"
End If
Next

여기서 Sheets("SheetName").UsedRange는 시트에서 사용 중인 모든 셀을 선택합니다. SheetName은 Excel 시트의 이름입니다.

IsNumeric() 함수는 숫자로 평가할 수 있는 모든 데이터를 식별합니다. 부울 유형 함수이며 True 또는 False를 반환합니다.

코드는 각 셀을 하나씩 확인하고 숫자로 평가할 수 있는 데이터가 감지되면 해당 데이터 유형을 먼저 단일(공통) 데이터 유형으로 설정한 다음 0.00 형식으로 설정합니다. 이는 데이터가 있는 모든 셀(및 숫자로 평가될 수 있음)이 이제 0.00 형식의 공통 데이터 유형을 가짐을 의미합니다.

따라서 데이터가 이제 숫자 형식으로 변환되었습니다. 예제를 사용하여 코드가 어떻게 작동하는지 살펴보겠습니다.

이전 예제에서 사용한 것과 동일한 샘플 데이터를 사용합니다.

샘플 데이터

다음은 CSng() 함수를 사용하여 텍스트를 숫자로 변환하는 코드입니다.

Sub method2()
For Each r In Sheets("Sheet1").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = CSng(r.Value)
r.NumberFormat = "0.00"
End If
Next
End Sub

출력:

CSng 기능 사용

이 예제에서 IsNumeric() 함수는 숫자로 평가할 수 있는 모든 셀을 식별하고 이러한 셀들(A1부터 A7까지)에는 이제 공통 형식, 즉 0.00 형식 또는 숫자 형식이 할당됩니다.

방법 3: 셀 값에 1을 곱하기

이 방법은 해결 방법일 뿐이며 텍스트를 숫자 형식으로 변환하는 지름길을 제공합니다. 이 방법에서 수행해야 하는 작업은 간단합니다. 셀의 각 값에 1을 곱합니다.

1을 곱해도 숫자가 변경되지 않고 데이터 형식이 수학 연산으로 인해 암묵적으로 숫자로 변경되므로 데이터의 실제 값을 변경하지 않고 텍스트 데이터를 숫자 형식으로 변환합니다.

다음 샘플 데이터가 있습니다.

샘플 데이터

다음은 1을 곱하여 텍스트를 숫자로 변환하는 코드입니다.

Sub method4()
For Each r In Sheets("Sheet1").UsedRange.SpecialCells(xlCellTypeConstants)
If IsNumeric(r) Then
r.Value = r.Value * 1
End If
Next
End Sub

결론

데이터에 산술 연산을 적용할 수 있도록 숫자를 텍스트 형식에서 숫자 형식으로 변환하는 것과 같이 한 데이터 유형에서 다른 데이터 유형으로 변환하는 것이 편리합니다.

이 기사에서는 텍스트숫자로 변환하는 다양한 방법에 대해 설명했습니다. 또한 개념을 명확히 하고 방법이 작동하는 방식을 이해하기 위해 다양한 예를 논의했습니다.

이 개념을 배울 수 있기를 바랍니다. 계속 공부하다!

작가: Bilal Shahid
Bilal Shahid avatar Bilal Shahid avatar

Hello, I am Bilal, a research enthusiast who tends to break and make code from scratch. I dwell deep into the latest issues faced by the developer community and provide answers and different solutions. Apart from that, I am just another normal developer with a laptop, a mug of coffee, some biscuits and a thick spectacle!

GitHub