मैं एक्सेल VBA में स्ट्रिंग को इंटर्जर कैसे परिवर्तित करूं?


जवाबों:


262

CStr(45) आप सभी की जरूरत है (स्ट्रिंग समारोह परिवर्तित करें)


1
CStr(45), सटीक होना।
कोइची सी। नाकामुरा

यह e + रूपांतरित संख्या के लिए काम नहीं करेगा! यानी 7.7685099559e + 11 को "7.7685099559e + 11" के रूप में दिखाया जाएगा, जैसा कि अपेक्षित नहीं है: "776850995590" इसलिए मैं यह कहना चाहता हूं कि यह अधिक सामान्य होगा:CStr(CDbl(***))
Mahhdy

यह प्रश्न की आवश्यकताओं का उत्तर दे सकता है, लेकिन यह कुछ परिस्थितियों में अपूर्ण और अपर्याप्त भी है। अक्सर (उदाहरण के लिए फ़ाइल नामकरण के उद्देश्य से) आप शून्य-पूर्वनिर्मित संख्याएँ बनाना चाहते हैं, जैसे कि 7बन जाता है 007। आप दशमलव की संख्या निर्दिष्ट करना चाहते हैं या हजार विभाजक शामिल कर सकते हैं। यदि ये विवरण आपके लिए महत्वपूर्ण हैं: excelfunctions.net/vba-format-function.html
cartbeforehorse

97

CStr () फ़ंक्शन आज़माएं

Dim myVal as String;
Dim myNum as Integer;

myVal = "My number is:"
myVal = myVal & CStr(myNum);

51

ज्यादातर बार, आपको "कन्वर्ट" करने की आवश्यकता नहीं होगी; वीबीए कन्वर्टर्स के उपयोग के बिना , आपके लिए सुरक्षित निहित प्रकार रूपांतरण करेगा CStr

नीचे दिया गया कोड बिना किसी समस्या के काम करता है, क्योंकि चर प्रकार स्ट्रिंग का है, और अंतर्निहित प्रकार रूपांतरण आपके लिए स्वचालित रूप से किया जाता है!

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"


2
मुझे समझ नहीं आता कि इस जवाब में अधिक वोट क्यों नहीं हैं, यह सच है। यह ध्यान देने योग्य है कि टाइप रूपांतरण हमेशा नहीं किया जाता है, यह उपयोग में ऑपरेटर पर निर्भर करता है। उदाहरण के लिए + ऑपरेशन हमेशा एक पूर्णांक को एक स्ट्रिंग में चौड़ा नहीं करेगा।
मार्क Ch

1
@MarkCh मुझे पता है कि यह पुराना है, लेकिन ... शायद इसलिए कि VBA के अप्रिय निहितार्थ रूपांतरण और डिफ़ॉल्ट सदस्य कॉल क्या हैं जो इतना VBA कोड को विफल, आश्चर्यजनक और बग-प्रवण बनाता है? एसओ पर कई VBA प्रश्न आधे नहीं होंगे यदि यह निहितार्थ रूपांतरण, अंतर्निहित अभिगम्यता, अंतर्निहित डिफ़ॉल्ट सदस्य अभिगम, 1-आधारित सरणियों के साथ Option Base 1निहित, अंतर्निहित टाइपिंग के साथ निहित नहीं है Def[Type](लड़का जो EVIL है!), निहित है ... आप इसे प्राप्त करते हैं - VBA में एकमात्र अच्छी निहित चीज़ निहित कॉल सिंटैक्स है जो स्पष्ट Callअप्रचलित बनाता है।
मैथ्यू गुइंडन

7

मेरे मामले में, फ़ंक्शन CString नहीं मिला। लेकिन मूल्य कार्यों के लिए एक खाली स्ट्रिंग जोड़ना, भी।

Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10

2
किसी ने भी बात नहीं की CString, जो एक VB.NET फ़ंक्शन है। एक स्ट्रिंग बनाने के लिए एक खाली स्ट्रिंग शाब्दिक को समेटना एक सुंदर लंगड़ा रूपांतरण विधि है। CStrस्पष्ट प्रकार के रूपांतरणों के लिए उपयोग करें - यह एक अंतर्निहित प्रकार रूपांतरण है और उस कोड को पढ़ने वाले किसी व्यक्ति की भौहें उठाता है। खेद है कि मुझे यह उत्तर पोस्ट करने के बाद इतनी देर से मिला, काश मैं इसे बहुत पहले से डाउनवोट कर सकता।
मैथ्यू गुइंडन

2

यदि आप जिस स्ट्रिंग को खींच रहे हैं, वह E01 जैसी एक हेक्स संख्या है, तो Excel इसे 0 के रूप में अनुवादित करेगा भले ही आप CStr फ़ंक्शन का उपयोग करते हों, और यहां तक ​​कि यदि आप पहली बार इसे स्ट्रिंग चर प्रकार में जमा करते हैं। इस मुद्दे के आसपास एक तरीका यह है कि 'मूल्य की शुरुआत के लिए' को जोड़ा जाए।

उदाहरण के लिए, जब वर्ड टेबल से मान खींचते हैं, और उन्हें एक्सेल में लाते हैं:

strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)

2

चर को घोषित किए बिना सबसे छोटा तरीका टाइप संकेत के साथ है :

s$ =  123   ' s = "123"
i% = "123"  ' i =  123

इससे संकलन नहीं होगा Option Explicit। प्रकार नहीं होंगे Variantलेकिन StringऔरInteger


0

एक और तरीका यह है कि संख्यात्मक मान के दो पार्स वर्गों को एक साथ विभाजित करें:

Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))

मुझे इसके साथ बेहतर सफलता मिली है CStr()क्योंकि CStr()मेरे अनुभव में वेरिएंट से आए दशमलव संख्या को परिवर्तित नहीं किया गया है।


0

यदि आपके पास एक पूर्णांक मान है और आपकी आवश्यकता मानों की तुलना करने के लिए है, तो आप बस नीचे दी गई तुलना के साथ आगे बढ़ सकते हैं।

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

0

स्वीकृत उत्तर छोटी संख्या के लिए अच्छा है, सबसे महत्वपूर्ण बात जब आप एक्सेल शीट से डेटा ले रहे हैं। चूंकि बड़ी संख्याएँ स्वचालित रूप से वैज्ञानिक संख्याओं में परिवर्तित हो जाएंगी अर्थात e + 10।
इसलिए मुझे लगता है कि यह आपको अधिक सामान्य उत्तर देगा। मैंने यह नहीं देखा कि क्या इसमें कोई कमी है या नहीं।

CStr(CDbl(#yourNumber#))

यह e + रूपांतरित संख्या के लिए काम करेगा! जैसा कि सिर्फ CStr(7.7685099559e+11)"7.7685099559e + 11" के रूप में दिखाया जाएगा, जैसा कि अपेक्षित नहीं है: "776850995590" इसलिए मैं यह कहना चाहूंगा कि मेरा जवाब अधिक सामान्य परिणाम होगा।

सादर, एम


0

यहां छवि विवरण दर्ज करें

    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

रेफर: MrExcel.com - VBA के साथ संख्याओं को पाठ में बदलें

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.