সুচিপত্র
এই টিউটোরিয়ালটি আপনাকে শেখাবে কিভাবে নেটিভ সূত্র এবং কাস্টম ফাংশন ব্যবহার করে এক্সেলের সংখ্যা থেকে পাঠ্য আলাদা করতে হয়। আপনি কীভাবে পাঠ্য এবং সংখ্যাগুলিকে দুটি পৃথক কলামে বিভক্ত করতে হয় তাও শিখবেন।
এটি কল্পনা করুন: আপনি বিশ্লেষণের জন্য কাঁচা ডেটা পাবেন এবং খুঁজে পাবেন যে সংখ্যাগুলি একটি কলামে পাঠ্যের সাথে মিশ্রিত হয়েছে। বেশিরভাগ পরিস্থিতিতে, নিবিড়ভাবে পরীক্ষা করার জন্য আলাদা কলামে সেগুলি রাখা অবশ্যই আরও সুবিধাজনক হবে৷
যদি আপনি সমজাতীয় ডেটা নিয়ে কাজ করছেন, আপনি সম্ভবত বাম, ডান এবং মধ্য ফাংশনগুলিকে বের করতে ব্যবহার করতে পারেন৷ একই অবস্থান থেকে একই সংখ্যক অক্ষর। কিন্তু এটি ল্যাবরেটরি পরীক্ষার জন্য একটি আদর্শ দৃশ্য। বাস্তব জীবনে, আপনি সম্ভবত ভিন্ন ভিন্ন তথ্যের সাথে মোকাবিলা করতে পারেন যেখানে সংখ্যাগুলি পাঠ্যের আগে, পাঠ্যের পরে বা পাঠ্যের মধ্যে আসে। নীচের উদাহরণগুলি ঠিক এই ক্ষেত্রে সমাধান প্রদান করে৷
কিভাবে পাঠ্য সরিয়ে ফেলবেন এবং এক্সেল কোষে নম্বরগুলি রাখবেন
সমাধানটি Excel 365, Excel 2021-এ কাজ করে , এবং Excel 2019
Microsoft Excel 2019 কয়েকটি নতুন ফাংশন চালু করেছে যেগুলি আগের সংস্করণগুলিতে উপলব্ধ নয়, এবং আমরা একটি ঘর থেকে পাঠ্য অক্ষরগুলি সরাতে এই ধরনের একটি ফাংশন, যথা TEXTJOIN ব্যবহার করতে যাচ্ছি সংখ্যা রয়েছে।
জেনারিক সূত্র হল:
TEXTJOIN("", TRUE, IFERROR(MID( cell, ROW(INDIRECT( "1:"&LEN( সেল))), 1) *1, ""))Excel 365 এবং 2021-এ এটিও কাজ করবে:
TEXTJOIN("", TRUE,IFERROR(MID( cell, SEQUENCE(LEN( cell)), 1) *1, ""))প্রথম দর্শনে, সূত্রগুলি কিছুটা ভয়ঙ্কর মনে হতে পারে, কিন্তু তারা কাজ করে :)
উদাহরণস্বরূপ, A2 সংখ্যা থেকে পাঠ্য অপসারণ করতে, B2-তে নীচের সূত্রগুলির মধ্যে একটি লিখুন এবং তারপরে যতগুলি প্রয়োজন ততগুলি কক্ষে এটি কপি করুন৷
Excel 365 - 2019-এ:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2))), 1) *1, ""))
Excel 2019-এ, এটি অবশ্যই Ctrl + Shift + Enter সহ একটি অ্যারে সূত্র হিসাবে প্রবেশ করাতে হবে। ডাইনামিক অ্যারে এক্সেলে, এটি এন্টার কী দিয়ে সম্পন্ন একটি সাধারণ সূত্র হিসাবে কাজ করে।
এক্সেল 365 এবং 2021-এ:
=TEXTJOIN("", TRUE, IFERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1, ""))
ফলে, সমস্ত পাঠ্য অক্ষর একটি ঘর থেকে সরানো হয় এবং সংখ্যাগুলি রাখা হয়:
এই সূত্রটি কীভাবে কাজ করে:
যুক্তিটি আরও ভালভাবে বোঝার জন্য, আসুন তদন্ত শুরু করা যাক ভেতর থেকে সূত্র:
আপনি হয় ROW(INDIRECT("1:"&LEN(string))) অথবা SEQUENCE(LEN(string)) ব্যবহার করে মোট সংখ্যার সাথে সঙ্গতিপূর্ণ একটি ক্রম তৈরি করতে পারেন উৎস স্ট্রিং-এ অক্ষরগুলির, এবং তারপর সেই অনুক্রমিক সংখ্যাগুলিকে শুরুর সংখ্যা হিসাবে MID ফাংশনে ফিড করুন। B2 তে, সূত্রের এই অংশটি নিম্নরূপ দেখায়:
MID(A2, {1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}, 1)
MID ফাংশনটি A2 থেকে প্রতিটি অক্ষর বের করে প্রথমটি দিয়ে শুরু করে এবং তাদের একটি অ্যারে হিসাবে ফেরত দেয়:
{"2";"1";"0";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
এই অ্যারেটি 1 দ্বারা গুণিত হয়। সংখ্যাসূচক মানগুলি কোনও পরিবর্তন ছাড়াই টিকে থাকে, যখন একটি অ-সংখ্যাসূচক অক্ষরকে গুণ করার ফলে একটি #VALUE হয়! ত্রুটি:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
IFERROR ফাংশন পরিচালনা করেএই ত্রুটিগুলি এবং এগুলিকে খালি স্ট্রিংগুলির সাথে প্রতিস্থাপন করে:
{2;1;0;"";"";"";"";"";"";"";"";"";"";"";""}
এই চূড়ান্ত অ্যারেটি TEXTJOIN ফাংশনে পরিবেশন করা হয়, যা অ্যারেতে অ-খালি মানগুলিকে সংযুক্ত করে ( ignore_empty ডিলিমিটারের জন্য একটি খালি স্ট্রিং ("") ব্যবহার করে আর্গুমেন্ট TRUE এ সেট করা হয়েছে:
TEXTJOIN("", TRUE, {2;1;0;"";"";"";"";"";"";"";"";"";"";"";""})
টিপ। এক্সেল 2016 - 2007 এর জন্য, একটি সমাধানও বিদ্যমান, তবে সূত্রটি অনেক বেশি জটিল। আপনি এই টিউটোরিয়ালে এটি খুঁজে পেতে পারেন: কিভাবে এক্সেলে সংখ্যা বের করতে হয়।
সংখ্যা থেকে পাঠ্য সরাতে কাস্টম ফাংশন
সমাধানটি সমস্ত এক্সেল সংস্করণের জন্য কাজ করে
আপনি যদি এক্সেলের একটি পুরানো সংস্করণ ব্যবহার করেন বা উপরের সূত্রগুলিও খুঁজে পান মনে রাখা কঠিন, সহজ সিনট্যাক্স এবং একটি ব্যবহারকারী-বান্ধব নাম যেমন RemoveText দিয়ে আপনার নিজস্ব ফাংশন তৈরি করতে কিছুই আপনাকে বাধা দেয় না। ব্যবহারকারী-সংজ্ঞায়িত ফাংশন (UDF) দুটি উপায়ে লেখা যেতে পারে:
VBA কোড 1:
এখানে, আমরা সোর্স স্ট্রিং এর প্রতিটি অক্ষর একে একে দেখি একটি এবং এটি সংখ্যাসূচক বা না পরীক্ষা করুন. একটি সংখ্যা হলে, অক্ষরটি ফলস্বরূপ স্ট্রিংটিতে যোগ করা হয়।
ফাংশন RemoveText(string হিসাবে ) স্ট্রিং হিসাবে sRes sRes = "" এর জন্য i = 1 থেকে Len(str) যদি True = IsNumeric(Mid(str, i) , 1)) তারপর sRes = sRes & Mid(str, i, 1) End If Next i RemoveText = sRes End ফাংশনVBA কোড 2:
কোড একটি রেগুলার এক্সপ্রেশন প্রক্রিয়া করার জন্য একটি অবজেক্ট তৈরি করে। RegExp ব্যবহার করে, আমরা সোর্স স্ট্রিং থেকে 0-9 ডিজিট ব্যতীত অন্য সব অক্ষর মুছে ফেলি।
CreateObject ( "VBScript.RegExp" ) এর সাথে স্ট্রিং হিসাবে ফাংশন RemoveText(str হিসাবে ) .গ্লোবাল = True .Pattern = "[^0-9]" RemoveText = .Replace(str, "" ) শেষ ফাংশনদিয়ে শেষ করুন ছোট ওয়ার্কশীটে, উভয় কোডই সমানভাবে ভালো কাজ করবে। বড় ওয়ার্কশীটে যেখানে ফাংশনটিকে কয়েকশ বা হাজার বার বলা হয়, VBScript.RegExp ব্যবহার করে কোড 2 দ্রুত কাজ করবে।
আপনার ওয়ার্কবুকে কোড ঢোকানোর বিস্তারিত ধাপগুলি এখানে পাওয়া যাবে: কীভাবে VBA ঢোকাবেন এক্সেলের কোড।
আপনি যে পদ্ধতিই বেছে নিন, শেষ-ব্যবহারকারীর দৃষ্টিকোণ থেকে, পাঠ্য মুছে ফেলার এবং নম্বর ছেড়ে দেওয়ার ফাংশনটি এইরকম সহজ:
RemoveText(string)উদাহরণস্বরূপ, সেল A2 থেকে অ-সংখ্যাসূচক অক্ষরগুলি সরান, B2 এর সূত্রটি হল:
=RemoveText(A2)
এটি কলামের নিচে অনুলিপি করুন এবং আপনি এই ফলাফলটি পাবেন:
দ্রষ্টব্য। নেটিভ সূত্র এবং কাস্টম ফাংশন উভয়ই একটি সংখ্যাসূচক স্ট্রিং আউটপুট করে। এটিকে একটি সংখ্যায় পরিণত করতে, ফলাফলটিকে 1 দ্বারা গুণ করুন, বা শূন্য যোগ করুন, বা VALUE ফাংশনে সূত্রটি মোড়ানো করুন। উদাহরণস্বরূপ:
=RemoveText(A2) + 0
=VALUE(RemoveText(A2))
এক্সেলের পাঠ্য স্ট্রিং থেকে কীভাবে সংখ্যাগুলি সরাতে হয়
সমাধানটি Excel 365, Excel 2021 এবং Excel এ কাজ করে 2019
অ্যালফানিউমেরিক স্ট্রিং থেকে সংখ্যাগুলি সরানোর সূত্রগুলি পূর্ববর্তী উদাহরণে আলোচনা করাগুলির সাথে প্রায় একই রকম৷
Excel 365 - 2019-এর জন্য:
TEXTJOIN(" ", TRUE, IF(ISERR(MID( cell , ROW(Indirect("1:"&LEN( cell ) )), 1) *1), MID( cell , ROW(Indirect("1:"&LEN( ) সেল ))), 1), ""))এক্সেল 2019-এ, Ctrl + Shift + Enter কী একসাথে টিপে এটিকে একটি অ্যারে সূত্র বানাতে ভুলবেন না।
Excel 365 এবং 2021-এর জন্য:
TEXTJOIN("", TRUE, IF(ISERROR(MID( cell , SEQUENCE(LEN( cell 1) *1), MID ( cell , SEQUENCE(LEN( cell )), 1), ""))উদাহরণস্বরূপ, A2-এ একটি স্ট্রিং থেকে সংখ্যাগুলি ছিন্ন করার জন্য, সূত্রটি হল:
=TEXTJOIN("", TRUE, IF(ISERR(MID(A2, ROW(INDIRECT( "1:"&LEN(A2) )), 1) *1), MID(A2, ROW(INDIRECT("1:"&LEN(A2))), 1), ""))
বা
=TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), ""))
ফলস্বরূপ, একটি ঘর থেকে সমস্ত সংখ্যা মুছে ফেলা হয় এবং পাঠ্য অক্ষর রাখা হয়:
উপরের স্ক্রিনশটে যেমন দেখানো হয়েছে, সূত্রটি একটি স্ট্রিং-এর যেকোনো অবস্থান থেকে সাংখ্যিক অক্ষরগুলিকে স্ট্রিপ করে: শুরুতে, শেষে এবং মাঝখানে। তবে, একটি সতর্কতা রয়েছে: যদি একটি স্ট্রিং একটি সংখ্যা দিয়ে শুরু হয় একটি স্পেস অনুসরণ করে, সেই স্থানটি ধরে রাখা হয়, যা অগ্রণী স্থানগুলির সমস্যা তৈরি করে (যেমন B2)।
টেক্সটের আগে অতিরিক্ত স্পেস থেকে মুক্তি পেতে , এইভাবে TRIM ফাংশনে সূত্রটি মোড়ানো:
=TRIM(TEXTJOIN("", TRUE, IF(ISERROR(MID(A2, SEQUENCE(LEN(A2)), 1) *1), MID(A2, SEQUENCE(LEN(A2)), 1), "")))
এখন, আপনার ফলাফল একেবারে নিখুঁত!
15>
এই সূত্রটি কীভাবে কাজ করে:
সারাংশে, সূত্রটি আগের উদাহরণে যেমন ব্যাখ্যা করা হয়েছে তেমনই কাজ করে। পার্থক্য হল, TEXTJOIN ফাংশনে দেওয়া চূড়ান্ত অ্যারে থেকে, আপনাকে সংখ্যাগুলি সরাতে হবে, পাঠ্য নয়। এটি করার জন্য, আমরা IF এবং ISERROR ফাংশনগুলির সমন্বয় ব্যবহার করি৷
আপনার মনে আছে,MID(…)+0 সংখ্যার একটি অ্যারে তৈরি করে এবং #VALUE! একই অবস্থানে টেক্সট অক্ষর প্রতিনিধিত্বকারী ত্রুটি:
{2;1;0;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}
ISERROR ফাংশন ত্রুটিগুলি ক্যাচ করে এবং বুলিয়ান মানগুলির ফলস্বরূপ অ্যারেকে IF:
{FALSE;FALSE;FALSE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE;TRUE}
{"";"";"";" ";"S";"u";"n";"s";"e";"t";" ";"R";"o";"a";"d"}
এই চূড়ান্ত অ্যারেটি TEXTJOIN-এ চলে যায়, তাই এটি পাঠ্য অক্ষরগুলিকে সংযুক্ত করে এবং আউটপুট দেয় ফলাফল৷
টেক্সট থেকে নম্বরগুলি সরানোর জন্য কাস্টম ফাংশন
সমাধানটি সমস্ত এক্সেল সংস্করণের জন্য কাজ করে
মনে রেখে একটি শক্তিশালী সূত্র রাখা উচিত সহজ, আমি যেকোনো সাংখ্যিক অক্ষর বন্ধ করতে ব্যবহারকারী-সংজ্ঞায়িত ফাংশন (UDF) এর কোড শেয়ার করব।
VBA কোড 1:
ফাংশন RemoveNumbers(str As String) Dim স্ট্রিং হিসাবে sRes sRes = "" এর জন্য i = 1 থেকে Len(str) যদি False = IsNumeric(Mid(str, i, 1)) তাহলে sRes = sRes & Mid(str, i, 1) End If Next i RemoveNumbers = sRes ফাংশন শেষ করুনVBA কোড 2:
CreateObject ( "VBScript.RegExp" এর সাথে স্ট্রিং হিসাবে ফাংশন RemoveNumbers(str হিসাবে স্ট্রিং) ) .Global = True .Pattern = "[0-9]" RemoveNumbers2 = .Replace(str, "" ) End with End Functionযেমনটি RemoveText ফাংশনের ক্ষেত্রে, দ্বিতীয় কোডটি ব্যবহার করা ভালো বড়কর্মক্ষমতা অপ্টিমাইজ করার জন্য ওয়ার্কশীট।
একবার আপনার ওয়ার্কবুকে কোড যোগ করা হলে, আপনি এই কাস্টম ফাংশনটি ব্যবহার করে একটি ঘর থেকে সমস্ত সংখ্যাসূচক অক্ষর মুছে ফেলতে পারেন:
RemoveNumbers(string)আমাদের ক্ষেত্রে, B2-তে সূত্র হল:
=RemoveNumbers(A2)
প্রধান স্পেস ট্রিম করতে, TRIM-এর ভিতরে কাস্টম ফাংশন নেস্ট করুন যেমন আপনি একটি নেটিভ ফর্মুলা করবেন:
=TRIM(RemoveNumbers(A2))
সংখ্যা এবং পাঠ্যকে পৃথক কলামে বিভক্ত করুন
যখন আপনি পাঠ্য এবং সংখ্যাকে দুটি কলামে আলাদা করতে চান, তখন একটি একক সূত্র দিয়ে কাজটি করা ভালো হবে , একমত? এর জন্য, আমরা শুধু RemoveText এবং RemoveNumbers ফাংশনগুলির কোডগুলিকে একটি ফাংশনে একত্রিত করি, যার নাম SplitTextNumbers , অথবা সহজভাবে Split , অথবা আপনি যা পছন্দ করেন :)
VBA কোড 1:
ফাংশন SplitTextNumbers(string হিসাবে , is_remove_text বুলিয়ান হিসাবে) স্ট্রিং হিসাবে Dim sNum, sText, sChar স্ট্রিং হিসাবে sCurChar = sNum = sText = "" এর জন্য i = 1 থেকে Len(str) sCurChar = Mid(str, i, 1) যদি True = IsNumeric(sCurChar) তাহলে sNum = sNum & sCurChar অন্য sText = sText & sCurChar End If Next i If True = is_remove_text তারপর SplitTextNumbers = sNum অন্যথায় SplitTextNumbers = sText End যদি ফাংশন শেষ হয়VBA কোড 2:
ফাংশন SplitTextNumbers(str হিসাবে স্ট্রিং , as_remove_text) as_removean CreateObject সহ ( "VBScript.RegExp" ) .Global = True যদি True = is_remove_text তারপর .Pattern = "[^0-9]" অন্যথায়প্যাটার্ন = "[0-9]" শেষ হলে SplitTextNumbers = .Replace(str, "" ) End ফাংশন দিয়ে শেষ করুনআমাদের নতুন কাস্টম ফাংশনের জন্য দুটি আর্গুমেন্ট প্রয়োজন:
SplitTextNumbers(string, is_remove_text)কোথায় is_remove_text হল একটি বুলিয়ান মান যা নির্দেশ করে যে কোন অক্ষরগুলি বাদ দিতে হবে:
- TRUE বা 1 - পাঠ্য সরান এবং সংখ্যাগুলি রাখুন
- FALSE বা 0 - সংখ্যাগুলি সরান এবং পাঠ্য রাখুন
আমাদের নমুনা ডেটাসেটের জন্য, সূত্রগুলি এই ফর্মটি নেয়:
অ-সংখ্যাসূচক অক্ষরগুলি সরাতে:
=SplitTextNumbers(A2, TRUE)
সাংখ্যিক অক্ষরগুলি মুছতে :
=SplitTextNumbers(A2, FALSE)
টিপ। অগ্রণী স্থানগুলির একটি সম্ভাব্য সমস্যা এড়াতে, আমি সর্বদা সূত্রটি মোড়ানোর পরামর্শ দিই যা TRIM ফাংশনে নম্বরগুলি সরিয়ে দেয়:
=TRIM(SplitTextNumbers(A2, FALSE))
সংখ্যা বা পাঠ্য সরানোর জন্য বিশেষ সরঞ্জাম
যারা করেন তাদের জন্য অপ্রয়োজনীয়ভাবে জিনিসগুলিকে জটিল করা পছন্দ করি না, আমি এক্সেলে পাঠ্য বা নম্বরগুলি সরানোর জন্য আমাদের নিজস্ব উপায় দেখাব৷
আমাদের আলটিমেট স্যুটটি আপনার এক্সেল রিবনে যোগ করা হয়েছে বলে ধরে নিচ্ছি, আপনি যা করবেন:
- Ablebits Data ট্যাবে, Text গ্রুপে, Remove > Remove Characters এ ক্লিক করুন।
টিপ। যদি ফলাফলে কিছু অগ্রগণ্য স্থান থাকে, ট্রিম স্পেসটুল কোন সময় তাদের নিষ্কাশন করা হবে.
এভাবে এক্সেলের একটি স্ট্রিং থেকে পাঠ্য বা সাংখ্যিক অক্ষরগুলি সরিয়ে ফেলা যায়। আমি পড়ার জন্য আপনাকে ধন্যবাদ এবং আগামী সপ্তাহে আমাদের ব্লগে আপনাকে দেখার জন্য অপেক্ষা করছি!
উপলব্ধ ডাউনলোডগুলি
এক্সেলের পাঠ্য বা নম্বরগুলি সরান - উদাহরণ (.xlsm ফাইল)
আলটিমেট স্যুট - ট্রায়াল সংস্করণ (.exe ফাইল)