जवाबों:
=REPLACE(RIGHT(A1,5),1,SEARCH(".",RIGHT(A1,5)),"")
यदि फ़ाइल नाम में एक से अधिक बिंदु हैं, तो यह सूत्र wil उपयोगी होगा
एक अन्य उत्तर से लिया गया (डॉट्स और रिक्त स्थान की तलाश में बदल गया):
=RIGHT(A1,LEN(A1)-FIND("|",SUBSTITUTE(A1,".","|",LEN(A1)-LEN(SUBSTITUTE(A1,".","")))))
Cyril उत्तर केवल तभी काम करता है जब एक्सटेंशन 3 या 4 वर्ण का हो और user273281 उत्तर तब काम नहीं करता जब .
फ़ाइल नाम में (पीरियड्स) थे ।
इसलिए मैंने इसे हासिल करने का एक नया तरीका निकाला,
=TRIM(RIGHT(SUBSTITUTE(TRIM(A1), ".", REPT(" ", LEN(TRIM(A1)))), LEN(TRIM(A1))))
नोट: user273281 का aswer उस मामले के लिए काम नहीं करता था जहाँ फ़ाइल का नाम था 1. Macro based file.zip
। यह लौट आता है. Macro based file.zip
मान लें कि आपके पास अच्छी तरह से स्वरूपित एक्सटेंशन हैं, तो आप इसे जल्दी से कर सकते हैं =RIGHT(A1,3)
। एक अधिक मजबूत समाधान सही के सूचकांक को ढूंढता है .
और फिर शेष पात्रों को निकालता है ।
मैं इस पार आया, जो मैंने देखा सबसे सरल उपाय है ...
=SUBSTITUTE(RIGHT(SUBSTITUTE(A5,".",REPT(".",50)),50),".","")
यह काम करता है क्योंकि यह किसी भी वर्ण को अंतिम अवधि के बाद अन्य सभी वर्णों से 50 अवधियों, या जो भी संख्या आप चुनते हैं, से अलग करता है। फिर आप यह जानकर सही 50 पात्रों का चयन कर सकते हैं कि आप अपने विस्तार वर्णों और अवधियों के एक समूह के अलावा कुछ नहीं चुन रहे हैं। अवधियों को प्रतिस्थापित करें और आप जाने के लिए तैयार हैं।
वैकल्पिक: XML पार्सिंग
एक साफ-सुथरी चाल जिसे मैं कभी-कभी सामान्य रूप से स्ट्रिंग पार्सिंग के लिए उपयोग करता हूं, FilterXML()
फ़ंक्शन (एक्सेल 2013 और बाद में) का लाभ उठाने के लिए है । मूल रणनीति Substitute()
अपने स्ट्रिंग को इस तरह से प्रारूपित करने के लिए उपयोग करना है कि यह xml स्ट्रिंग में तत्वों के पार पार्स किया गया है, और फिर आप आसानी से अपने पार्स तत्वों को नेविगेट करने के लिए xpath सिंटैक्स का उपयोग कर सकते हैं । इस रणनीति का उपयोग करते हुए, एक एक्सटेंशन प्राप्त करना इस तरह दिखेगा ...
=FILTERXML("<A><p>" & SUBSTITUTE(A1,".","</p><p>.")&"</p></A>","//p[last()]")
यदि आप xml से परिचित नहीं हैं, तो यह आपको डराने वाला लग सकता है, लेकिन यदि आप समझ सकते हैं कि क्या चल रहा है, तो मुझे यह पता चलता है कि लेन (), विकल्प () का उपयोग करके वैकल्पिक तरीकों की तुलना में याद रखना आसान है, और अधिक लचीला और आसान है। आदि यह एक अच्छा कारण है क्योंकि इसका एक कारण केवल एक सेल संदर्भ है।
अवैध वर्ण
दो वर्ण हैं जो पथों में अनुमत हैं लेकिन xml में नहीं: &
और'
उपरोक्त समीकरण काम करेगा यदि ये वर्ण मौजूद नहीं हैं, अन्यथा, उन्हें कुछ इस तरह से संभालने की आवश्यकता होगी ...
=FILTERXML("<A><p>" & SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(J8,"'",""),"&",""),".","</p><p>.")&"</p></A>","//p[last()]")
उदाहरण
मान लें कि हमारे पास इस तरह एक गंदा फ़ाइल पथ है:
C: \ Folder1 \ Folder2 \ (बदसूरत अक्षर! @ # $% ^ () _ + = {} ;;, `) \ two.dots.LongExt
1.) Substitution()
हिस्सा इसे इस तरह एक xml स्ट्रिंग में बदल देगा ...
<A>
<p>
C:\Folder1\Folder2\(ugly characters !@#$%^()_+={};;,`)\two
</p>
<p>
.dots
</p>
<p>
.txt
</p>
</A>
2.) एक बार इस तरह से स्वरूपित करने के बाद, यह अंतिम p
तत्व xpath सिंटैक्स का उपयोग करने के लिए तुच्छ है //p[last()]
।
REGEXEXTRACT(A1, "\.([^.]*)$")