Excel VBA에서 정수를 문자열로 변환하려면 어떻게 해야 합니까?
Excel VBA에서 정수 값 "45"를 문자열 값 "45"로 변환하려면 어떻게 해야 합니까?
CStr(45)
필요한 것만 있으면 됩니다(문자열 변환 기능).
CStr() 기능을 사용해 봅니다.
Dim myVal as String
Dim myNum as Integer
myVal = "My number is:"
myVal = myVal & CStr(myNum)
대부분의 경우 "변환"할 필요가 없습니다. VBA는 다음과 같은 변환기를 사용하지 않고 안전한 암시적 유형 변환을 수행합니다.CStr
.
변수가 Type String이므로 아래 코드는 문제없이 작동하며, 암시적인 Type 변환이 자동으로 수행됩니다!
Dim myVal As String
Dim myNum As Integer
myVal = "My number is: "
myVal = myVal & myNum
결과:
"내 번호: 0"
당신은 심지어 그렇게 화려할 필요도 없습니다. 이것도 효과가 있습니다.
Dim myString as String
myString = 77
"77"
변환해야 하는 유일한 시간은 변수 유형이 모호할 때입니다(예: 유형 변형 또는 셀).Value
(즉, 변형).
그럼에도, 당신은 사용할 필요가 없습니다.CStr
함수는 다른 문자열 변수 또는 상수와 복합하는 경우에 사용됩니다.다음과 같이:
Sheet1.Range("A1").Value = "My favorite number is " & 7
"제가 가장 좋아하는 숫자는 7입니다."
따라서 유일하게 드문 경우는 정수 값을 변수 또는 셀 값으로 저장하려는 경우입니다. 다른 문자열과 결합하지 않을 때도 마찬가지입니다(매우 드문 경우이지만 추가할 수 있습니다).
Dim i as Integer
i = 7
Sheet1.Range("A1").Value = i
7
Dim i as Integer
i = 7
Sheet1.Range("A1").Value = CStr(i)
"7"
저의 경우, Cstring 함수를 찾을 수 없었습니다.그러나 값에 빈 문자열을 추가하는 것도 효과가 있습니다.
Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
만약 당신이 끌어들이는 문자열이 E01과 같은 16진수라면, CStr 함수를 사용해도 Excel은 0으로 변환하고 String 변수 유형으로 처음 입금해도 0으로 변환합니다.이 문제를 해결하는 한 가지 방법은 값의 시작 부분에 '를 추가하는 것입니다.
예를 들어 Word 테이블에서 값을 꺼내 Excel로 가져오는 경우:
strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
변수를 선언하지 않고 가장 짧은 방법은 유형 힌트:
s$ = 123 ' s = "123"
i% = "123" ' i = 123
다음으로 컴파일할 수 없습니다.Option Explicit
유형은 다음과 같습니다.Variant
그렇지만String
그리고.Integer
Sub NumToText(ByRef sRng As String, Optional ByVal WS As Worksheet)
'---Converting visible range form Numbers to Text
Dim Temp As Double
Dim vRng As Range
Dim Cel As Object
If WS Is Nothing Then Set WS = ActiveSheet
Set vRng = WS.Range(sRng).SpecialCells(xlCellTypeVisible)
For Each Cel In vRng
If Not IsEmpty(Cel.Value) And IsNumeric(Cel.Value) Then
Temp = Cel.Value
Cel.ClearContents
Cel.NumberFormat = "@"
Cel.Value = CStr(Temp)
End If
Next Cel
End Sub
Sub Macro1()
Call NumToText("A2:A100", ActiveSheet)
End Sub
Refer: MrExcel.com – VBA를 사용하여 숫자를 텍스트로 변환
허용된 답은 더 작은 숫자에 좋습니다. 가장 중요한 것은 엑셀 시트에서 데이터를 가져오는 동안입니다. 더 큰 숫자는 자동으로 과학적 숫자로 변환됩니다. 예를 들어 e+10.
그래서 저는 이것이 여러분에게 더 일반적인 대답을 줄 것이라고 생각합니다.저는 그것이 추락하는지 아닌지 확인하지 않았습니다.
CStr(CDbl(#yourNumber#))
이것은 e+ 변환된 숫자에 대해 작동할 것입니다! 정의로서.CStr(7.7685099559e+11)
예상과 달리 "7.7685099559e+11"로 표시되므로 "776850995590"이 더 일반적인 결과가 될 것이라고 말하고 싶습니다.
M님, 잘 부탁드립니다.
또 다른 방법은 숫자 값의 구문 분석된 두 섹션을 함께 연결하는 것입니다.
Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
으로 는나이더로나찾성다았니습공을은으것▁▁success▁than다니▁i▁better▁this보다 더 좋은 성공을 얻었습니다.CStr()
CStr()
제 경험으로는 변종에서 온 십진법 숫자를 변환하지 않는 것 같습니다.
유효한 정수 값이 있고 값을 비교해야 하는 경우 아래와 같이 비교를 계속할 수 있습니다.
Sub t()
Dim i As Integer
Dim s As String
' pass
i = 65
s = "65"
If i = s Then
MsgBox i
End If
' fail - Type Mismatch
i = 65
s = "A"
If i = s Then
MsgBox i
End If
End Sub
정수가 추론(양의 부호) 및 적용(음의 부호) 값에 대한 선행 공백으로 변환되므로 변환에 트림을 추가할 수도 있습니다.
비교를 위해:
1/
lsDogsAge = "Barker is " & Cstr(liAgeInteger) & "years old"
2/
lsDogsAge = "Barker is " & Trim(Cstr(liAgeInteger)) & "years old"
1/ 바커는__7
2/ 바커리스_7
아이러니하게도 이 포럼의 소프트웨어는 자동으로 이중 공간을 잘라내기 때문에 밑줄을 사용했습니다.
언급URL : https://stackoverflow.com/questions/11595226/how-do-i-convert-an-integer-to-a-string-in-excel-vba
'programing' 카테고리의 다른 글
데이터베이스 1:1 관계를 사용하는 것이 타당한 시기가 있습니까? (0) | 2023.08.04 |
---|---|
Angular2 *ngIf 템플릿에서 객체 배열 길이 확인 (0) | 2023.08.04 |
그렇지 않으면 mysql에 INSERT 업데이트 (0) | 2023.07.30 |
OpenAL을 사용하여 iPhone에서 재생하기 위해 오디오를 CAF 형식으로 변환 (0) | 2023.07.30 |
ASP.NET MVC - 로그인 페이지에서 무단 오류를 표시하는 방법은 무엇입니까? (0) | 2023.07.30 |