আমি এক্সেল ভিবিএতে কোনও স্ট্রিংয়ের সাথে কোনও পূর্ণসংখ্যা কীভাবে রূপান্তর করব?


172

এক্সেল ভিবিএতে আমি পূর্ণসংখ্যা মান "45" কে স্ট্রিং মান "45" তে কীভাবে রূপান্তর করব ?

উত্তর:


262

CStr(45) আপনার যা দরকার তা হ'ল (কনভার্ট স্ট্রিং ফাংশন)


1
CStr(45), সম্পর্ন নিভূল হতে পারে.
কাউচি সি নাকামুরা

এটি ই + রূপান্তরিত সংখ্যার জন্য কাজ করবে না! অর্থাত্ 7.7685099559e + 11 প্রত্যাশিত হিসাবে "7.7685099559e + 11" হিসাবে দেখানো হবে: "776850995590" সুতরাং আমি বরং এটি আরও জেনেরিক বলে বলব:CStr(CDbl(***))
মাহহেদি

এটি প্রশ্নের প্রয়োজনের উত্তর দিতে পারে তবে এটি কিছুটা ক্ষেত্রেও অসম্পূর্ণ এবং অপর্যাপ্ত। প্রায়শই (ফাইল নামকরণ করার উদ্দেশ্যে উদাঃ) আপনি শূন্য পূর্বে সমাধান সংখ্যা, যেমন যে তৈরি করতে চাইতে পারেন 7হয়ে 007। আপনি দশমিকের সংখ্যা নির্দিষ্ট করতে বা হাজার বিভাজককেও অন্তর্ভুক্ত করতে চাইতে পারেন। যদি এই বিবরণগুলি আপনার কাছে গুরুত্বপূর্ণ: excelfunitions.net/vba-format-function.html
কার্টবফরহর্স

97

সিএসটিআর () ফাংশনটি ব্যবহার করে দেখুন

Dim myVal as String;
Dim myNum as Integer;

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

51

বেশিরভাগ সময়, আপনার "রূপান্তর" করার প্রয়োজন হবে না; VBA, আপনার জন্য নিরাপদ অন্তর্নিহিত টাইপ রূপান্তর করতে হবে ছাড়া মত কনভার্টার ব্যবহার 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
এই উত্তরটি কেন বেশি ভোট দেয় তা আমি বুঝতে পারছি না, এটি সত্য given এটি লক্ষণীয় যে ধরণের রূপান্তরটি সর্বদা সঞ্চালিত হয় না , এটি ব্যবহৃত অপারেটরের উপর নির্ভর করে। উদাহরণস্বরূপ + অপারেশন সর্বদা একটি স্ট্রিংয়ের সাথে পূর্ণসংখ্যার প্রশস্ত করে না।
CH

1
@ মার্কসিএইচ আমি জানি এটি পুরানো, তবে ... সম্ভবত ভিবিএর অশোভিত অন্তর্নিহিত রূপান্তর এবং ডিফল্ট সদস্যদের কলগুলি কি এত বেশি ভিবিএ কোডকে বিস্মিত, আশ্চর্যজনক এবং বাগ-প্রবণ করে তোলে? এসও-তে অর্ধেক ভিবিএর প্রশ্ন থাকবে না যদি তা অন্তর্নিহিত রূপান্তর, অন্তর্নিহিত অ্যাক্সেসযোগ্যতা, অন্তর্নিহিত ডিফল্ট সদস্য অ্যাক্সেস, অন্তর্নিহিত 1-ভিত্তিক অ্যারে Option Base 1, অন্তর্নিহিত টাইপিং Def[Type](ছেলে যেটি খুব খারাপ!), অন্তর্নিহিত ... আপনি এটি পেয়েছেন - ভিবিএতে একমাত্র ভাল অন্তর্নিহিত জিনিস হ'ল অন্তর্নিহিত কল বাক্য গঠন যা সুস্পষ্টভাবে Callঅচল করে দেয়।
ম্যাথিউ গুইন্ডন

7

আমার ক্ষেত্রে, ফাংশন CString পাওয়া যায় নি। তবে মানটিতে একটি খালি স্ট্রিং যুক্ত করাও কাজ করে।

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

2
কেউ কথা CStringবলেনি, এটি একটি ভিবি.এনইটি ফাংশন। একটি খালি স্ট্রিংকে আক্ষরিক স্ট্রিং তৈরি করা একটি লম্পট রূপান্তর পদ্ধতি। CStrসুস্পষ্ট ধরণের রূপান্তরগুলির জন্য ব্যবহার করুন - এটি একটি অন্তর্নিহিত ধরণের রূপান্তর এবং কোডটি পড়ে যে কেউ ভ্রু উত্থাপন করে। দুঃখিত, আমি এই উত্তরটি পোস্ট হওয়ার পরে এত দেরিতে পেয়েছি, আমি আশা করি আমি এটির আগে অনেকটা নীচু করতে পারতাম।
ম্যাথিউ গুইনডন

2

আপনি যে স্ট্রিংটি টানছেন সেটি যদি E01 এর মতো কোনও হেক্স নম্বর হিসাবে দেখা যায় তবে এক্সেল এটিকে 0 হিসাবে অনুবাদ করবে এমনকি আপনি সিএসআরটি ফাংশনটি ব্যবহার করলেও এবং আপনি প্রথমে স্ট্রিং ভেরিয়েবল টাইপে জমা দিলেও। সমস্যাটির চারপাশের একটি উপায় হ'ল মানের শুরুতে 'যুক্ত করা।

উদাহরণস্বরূপ, যখন কোনও ওয়ার্ড টেবিলের বাইরে মানগুলি টানতে এবং সেগুলিকে এক্সেলে আনার সময়:

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

স্বীকৃত উত্তরটি ছোট সংখ্যার পক্ষে ভাল, সবচেয়ে গুরুত্বপূর্ণ আপনি যখন এক্সেল শিট থেকে ডেটা নিচ্ছেন। যেহেতু বড় সংখ্যাগুলি স্বয়ংক্রিয়ভাবে বৈজ্ঞানিক সংখ্যায় অর্থাৎ ই + 10 এ রূপান্তরিত হয়।
সুতরাং আমি মনে করি এটি আপনাকে আরও সাধারণ উত্তর দেবে। আমি এর কোন পতন আছে কিনা তা পরীক্ষা করে দেখিনি।

CStr(CDbl(#yourNumber#))

এটি ই + রূপান্তরিত সংখ্যার জন্য কাজ করবে! ন্যায়সঙ্গত হিসাবে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

রেফার: মিস্টার এক্সেল ডটকম - ভিবিএর সাহায্যে পাঠ্যগুলিতে নম্বর রূপান্তর করুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.