मैं एक्सेल VBA में स्ट्रिंग मान "45" को पूर्णांक मान में कैसे परिवर्तित करूं ?
मैं एक्सेल VBA में स्ट्रिंग मान "45" को पूर्णांक मान में कैसे परिवर्तित करूं ?
जवाबों:
CStr(45)
आप सभी की जरूरत है (स्ट्रिंग समारोह परिवर्तित करें)
CStr(CDbl(***))
7
बन जाता है 007
। आप दशमलव की संख्या निर्दिष्ट करना चाहते हैं या हजार विभाजक शामिल कर सकते हैं। यदि ये विवरण आपके लिए महत्वपूर्ण हैं: excelfunctions.net/vba-format-function.html
ज्यादातर बार, आपको "कन्वर्ट" करने की आवश्यकता नहीं होगी; वीबीए कन्वर्टर्स के उपयोग के बिना , आपके लिए सुरक्षित निहित प्रकार रूपांतरण करेगा 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"
Option Base 1
निहित, अंतर्निहित टाइपिंग के साथ निहित नहीं है Def[Type]
(लड़का जो EVIL है!), निहित है ... आप इसे प्राप्त करते हैं - VBA में एकमात्र अच्छी निहित चीज़ निहित कॉल सिंटैक्स है जो स्पष्ट Call
अप्रचलित बनाता है।
मेरे मामले में, फ़ंक्शन CString नहीं मिला। लेकिन मूल्य कार्यों के लिए एक खाली स्ट्रिंग जोड़ना, भी।
Dim Test As Integer, Test2 As Variant
Test = 10
Test2 = Test & ""
//Test2 is now "10" not 10
CString
, जो एक VB.NET फ़ंक्शन है। एक स्ट्रिंग बनाने के लिए एक खाली स्ट्रिंग शाब्दिक को समेटना एक सुंदर लंगड़ा रूपांतरण विधि है। CStr
स्पष्ट प्रकार के रूपांतरणों के लिए उपयोग करें - यह एक अंतर्निहित प्रकार रूपांतरण है और उस कोड को पढ़ने वाले किसी व्यक्ति की भौहें उठाता है। खेद है कि मुझे यह उत्तर पोस्ट करने के बाद इतनी देर से मिला, काश मैं इसे बहुत पहले से डाउनवोट कर सकता।
यदि आप जिस स्ट्रिंग को खींच रहे हैं, वह E01 जैसी एक हेक्स संख्या है, तो Excel इसे 0 के रूप में अनुवादित करेगा भले ही आप CStr फ़ंक्शन का उपयोग करते हों, और यहां तक कि यदि आप पहली बार इसे स्ट्रिंग चर प्रकार में जमा करते हैं। इस मुद्दे के आसपास एक तरीका यह है कि 'मूल्य की शुरुआत के लिए' को जोड़ा जाए।
उदाहरण के लिए, जब वर्ड टेबल से मान खींचते हैं, और उन्हें एक्सेल में लाते हैं:
strWr = "'" & WorksheetFunction.Clean(.cell(iRow, iCol).Range.Text)
चर को घोषित किए बिना सबसे छोटा तरीका टाइप संकेत के साथ है :
s$ = 123 ' s = "123"
i% = "123" ' i = 123
इससे संकलन नहीं होगा Option Explicit
। प्रकार नहीं होंगे Variant
लेकिन String
औरInteger
एक और तरीका यह है कि संख्यात्मक मान के दो पार्स वर्गों को एक साथ विभाजित करें:
Cells(RowNum, ColumnNum).Value = Mid(varNumber,1,1) & Mid(varNumber,2,Len(varNumber))
मुझे इसके साथ बेहतर सफलता मिली है 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
स्वीकृत उत्तर छोटी संख्या के लिए अच्छा है, सबसे महत्वपूर्ण बात जब आप एक्सेल शीट से डेटा ले रहे हैं। चूंकि बड़ी संख्याएँ स्वचालित रूप से वैज्ञानिक संख्याओं में परिवर्तित हो जाएंगी अर्थात e + 10।
इसलिए मुझे लगता है कि यह आपको अधिक सामान्य उत्तर देगा। मैंने यह नहीं देखा कि क्या इसमें कोई कमी है या नहीं।
CStr(CDbl(#yourNumber#))
यह e + रूपांतरित संख्या के लिए काम करेगा! जैसा कि सिर्फ CStr(7.7685099559e+11)
"7.7685099559e + 11" के रूप में दिखाया जाएगा, जैसा कि अपेक्षित नहीं है: "776850995590" इसलिए मैं यह कहना चाहूंगा कि मेरा जवाब अधिक सामान्य परिणाम होगा।
सादर, एम
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
CStr(45)
, सटीक होना।