programing

Excel VBA에서 정수를 문자열로 변환하려면 어떻게 해야 합니까?

closeapi 2023. 7. 30. 17:50
반응형

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

enter image description here

    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

반응형