আমার কাছে একটি কলাম রয়েছে যেখানে ফাইল পাথ রয়েছে। আমি অন্য কলাম তৈরি করতে চাই যাতে কেবলমাত্র পথগুলির এক্সটেনশান থাকে। মাইক্রোসফ্ট এক্সেলে আমি কীভাবে এটি করতে পারি?
আমার কাছে একটি কলাম রয়েছে যেখানে ফাইল পাথ রয়েছে। আমি অন্য কলাম তৈরি করতে চাই যাতে কেবলমাত্র পথগুলির এক্সটেনশান থাকে। মাইক্রোসফ্ট এক্সেলে আমি কীভাবে এটি করতে পারি?
উত্তর:
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")
আপনার যদি ফাইলনামে একাধিক বিন্দু থাকে তবে এই সূত্রটি কার্যকর হবে
অন্য উত্তর থেকে নেওয়া (স্থানগুলির জন্য বিন্দুর সন্ধানে পরিবর্তন করা হয়েছে):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
সিরিল উত্তর কেবল তখনই কাজ করবে যখন এক্সটেনশানটি 3 বা 4 টি অক্ষর হয় এবং যখন .
ফাইলের নামে (পিরিয়ড) থাকে তখন ব্যবহারকারী 273281 উত্তর কাজ করে না ।
সুতরাং আমি এটি অর্জনের একটি নতুন উপায় খুঁজে বের করেছি,
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
দ্রষ্টব্য: ফাইলের নাম যেখানে ছিল সে ক্ষেত্রে ব্যবহারকারী 273281 এর আস্ভার কাজ করে না 1. Macro based file.zip
। এটি ফিরে আসে. Macro based file.zip
ধরে নিই আপনার সুন্দর ফর্ম্যাট এক্সটেনশন রয়েছে, আপনি এটি হিসাবে দ্রুত করতে পারেন =RIGHT(A1,3)
। আরও শক্তিশালী সমাধান ডানদিকের সূচকটি খুঁজে .
বের করবে এবং তারপরে বাকী অক্ষরগুলি বের করবে।
আমি এটি পেরিয়ে এসেছি, যা আমি দেখেছি সবচেয়ে সহজ সমাধান ...
=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")
এটি কাজ করে কারণ এটি শেষ সময়কালের পরে কোনও অক্ষর 50 টি পিরিয়ড বা আপনার চয়ন করা সংখ্যার দ্বারা অন্য সমস্ত অক্ষর থেকে আলাদা করে। তারপরে আপনি আপনার এক্সটেনশন অক্ষর এবং পিরিয়ডের গুচ্ছ ব্যতীত আর কিছুই নির্বাচন করছেন না তা জেনে আপনি সঠিকতম 50 টি অক্ষর নির্বাচন করতে পারেন। পিরিয়ডগুলি প্রতিস্থাপন করুন এবং আপনি যেতে প্রস্তুত।
বিকল্প: এক্সএমএল পার্সিং
আমি মাঝে মাঝে স্ট্রিং পার্সিংয়ের জন্য একটি ঝরঝরে কৌশল ব্যবহার করি যা FilterXML()
ফাংশনটি উপার্জন করতে পারে (এক্সেল 2013 এবং তার পরে)। Substitute()
আপনার স্ট্রিংটি কোনও xML স্ট্রিংয়ের উপাদানগুলিতে পার্স করা এমনভাবে ফর্ম্যাট করার জন্য মৌলিক কৌশলটি ব্যবহার করা হয় এবং তারপরে আপনি আপনার পার্স করা উপাদানগুলিকে সুবিধামত নেভিগেট করতে এক্সপাথ সিনট্যাক্স ব্যবহার করতে পারেন । এই কৌশলটি ব্যবহার করে, একটি এক্সটেনশন পাওয়া এইরকম দেখাচ্ছে ...
=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")
আপনি যদি এক্সএমএল এর সাথে পরিচিত না হন তবে এটি ভীতিজনক বলে মনে হতে পারে তবে আপনি কী বুঝতে পারছেন তা লেন (), বিকল্প (), বিকল্প () ব্যবহার করে বিকল্প পদ্ধতির চেয়ে মনে হয় পরিষ্কার, আরও নমনীয় এবং সহজ মনে করি, ইত্যাদি। এটির সুন্দর কারণগুলির একটি কারণ হ'ল কেবলমাত্র একটি সেল রেফারেন্স।
অবৈধ চরিত্র
দুটি অক্ষর আছে যা পাথ কিন্তু না XML- এর অনুমতি দেওয়া হয় আছেন: &
এবং'
এই অক্ষরগুলি উপস্থিত না থাকলে উপরের সমীকরণটি কাজ করবে, অন্যথায় তাদের এ জাতীয় কিছু পরিচালনা করা দরকার ...
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
উদাহরণ
ধরুন আমাদের কাছে এর মতো নোংরা ফাইলের পথ রয়েছে:
সি: \ ফোল্ডার 1 \ ফোল্ডার 2 \ (কুরুচিপূর্ণ অক্ষর! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt
1.) Substitution()
অংশটি এটিকে এই জাতীয় xML স্ট্রিংয়ে রূপান্তর করবে ...
<A>
<p>
C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
</p>
<p>
.dots
</p>
<p>
.txt
</p>
</A>
২) একবার এর মতো ফর্ম্যাট হয়ে গেলে p
এক্সপথ সিনট্যাক্স ব্যবহার করে শেষ উপাদানটি বেছে নেওয়া তুচ্ছ //p[last()]
।
REGEXEXTRACT(A1, "\.([^.]*)$")