एक्सेल में गैर-संख्यात्मक मान से अग्रणी शून्य को निकालने का सबसे अच्छा तरीका


11

मेरे पास एक्सेल शीट में कई सेल हैं, जिसमें 0-9 और ए-जेड के 9 अक्षरों का उपयोग किया गया है, जिसमें कुछ संख्या में उपसर्ग शून्य हैं:

000000123 
000001DA2 
0000009Q5
0000L210A
0000014A0
0000A5500
00K002200

मैं अग्रणी शून्य को निकालना चाहता हूं ताकि मूल्य बन जाएं:

123 
1DA2 
9Q5
L210A
14A0
A5500
K002200

मैं एक्सेल सूत्र में यह कैसे करूंगा? मैं VBA मैक्रो के उपयोग से बचना पसंद करूंगा।


यदि आपके पास कुछ और बाधाएँ हैं जो डेटा पर हैं, तो मैं एक अधिक विशिष्ट समाधान के साथ आने में सक्षम हो सकता हूं।
Lance Roberts

धन्यवाद। मानों में अग्रणी शून्य हैं ताकि वे कुल 9 वर्ण हों। इसके अलावा, मूल्य कैपिटल अक्षर ए-जेड के साथ मिश्रित 0-9 अंकों के तार हैं। यह संभव है कि एक अनुगामी शून्य मौजूद है और यह वास्तविक मूल्य का हिस्सा है और इसे ट्रिम नहीं किया जाना चाहिए।
Chris Farmer

स्पष्ट होने के लिए, कभी भी एम्बेडेड स्थान नहीं हैं। बस 0-9 और ए-जेड।
Chris Farmer

उन अनुगामी शून्य उदाहरणों को शामिल करने का संपादन किया
Chris Farmer

@ क्रिस, मैं यह कर सकता हूं यदि हम जानते हैं कि अधिकतम संख्या में शून्य जो कभी स्ट्रिंग में एम्बेडेड दिखाई देंगे, या उसके बाद अनुगामी होंगे (हालांकि यह एक लंबा सूत्र होगा)।
Lance Roberts

जवाबों:


14

यहाँ एक समाधान है जो सेल-गहन लेकिन सही है।

अपना डेटा कॉलम A में रखें।

B1 में, सूत्र लगाएं:

=IF(
    LEFT(A1) = "0" ,
    RIGHT(A1, LEN(A1)-1),
    A1)

यह एक प्रमुख शून्य के लिए जाँच करता है और इसे स्ट्रिप्स करता है।

इस फॉर्मूले को दाईं ओर कॉपी करें क्योंकि आपके डेटा में वर्ण हो सकते हैं (9, इस मामले में, इसलिए आप स्तंभ पर जा रहे हैं)। डेटा की प्रत्येक पंक्ति के लिए इसे कॉपी करें।

अंतिम कॉलम में आपका डेटा होता है, जो प्रमुख शून्य से छीन लिया जाता है।


इस पर कई प्रयासों के बाद, यह एकमात्र संस्करण है जो वीबीए का सहारा लिए बिना काम करेगा।
skamradt

@ रिचर्ड द्वारा टिप्पणी: मुझे इसहाक का समाधान पसंद है। यदि एक से अधिक अग्रणी शून्य, केवल मूल कोशिकाओं तक ही उनके सूत्र और मानों को चिपकाने वाली कोशिकाओं से नकल करते रहें: प्रत्येक बार एक और अग्रणी शून्य (यदि कोई हो) को छीन लेंगे।
Ivo Flipse

6

निम्न सूत्र को न तो अतिरिक्त कक्षों की आवश्यकता है और न ही इसे किसी सरणी सूत्र के रूप में दर्ज करना होगा:

=RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(A1&" ","0",""),1),A1&" ")+1)

अगर एक भी शून्य जैसे तार के लिए वापस आ जाएगा 0 या 00निम्नलिखित सूत्र का उपयोग किया जा सकता है:

=IF(A1="","",RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(LEFT(A1,LEN(A1)-1)&" ","0",""),1),LEFT(A1,LEN(A1)-1)&" ")+1))

यह उत्तर कई प्रमुख शून्य के साथ काम करता है और यहां वर्णित उत्तरों में सबसे पूर्ण और सरल लगता है।
Peter

5

यह एक वर्कशीट फ़ंक्शन के साथ करने के लिए एक कठिन समस्या है। निम्नलिखित चाल करेंगे, लेकिन केवल अगर शून्य जो अग्रणी नहीं हैं, एक बार में केवल एक ही आते हैं, और कोई अनुगामी शून्य नहीं हैं, और कोई एम्बेडेड स्थान नहीं हैं।

यह रिक्त स्थान के साथ सभी शून्य को प्रतिस्थापित करता है, उन्हें (सभी लेकिन एम्बेडेड एकल रिक्त स्थान) ट्रिम करता है, फिर शून्य को वापस प्रतिस्थापित करता है।

=SUBSTITUTE(TRIM(SUBSTITUTE(A1,"0"," "))," ","0")

क्यूं कर केवल अगर शून्य जो आगे नहीं बढ़ रहा है वह केवल एक बार ही आता है ? और क्या इस बारे में =CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0")) (उम्मीद CLEAN टैब निकाल देंगे; अगर नहीं; में कुछ अन्य मूल्य का उपयोग करें CHAR )
Arjan

@ अर्जन, मैंने TRIM का परीक्षण किया और यह एक ही स्थान के साथ एम्बेडेड कई स्थानों को प्रतिस्थापित करता है, लेकिन मैं अब आपकी जानकारी पर शोध करने जा रहा हूं और देखूंगा कि मुझे क्या मिल सकता है। (मैं 2003 का उपयोग कर रहा हूं)।
Lance Roberts

CLEAN फ़ंक्शन एम्बेडेड स्पेस को बचाता है, लेकिन यह सभी को भी बचाता है लेकिन पहला प्रमुख स्थान है।
Lance Roberts

मैंने जोड़े गए CHAR (9) को हटाने के लिए CLEAN जोड़ा; TRIMmed मूल्य पर CLEAN का उपयोग करने के लिए अग्रणी स्थान नहीं होना चाहिए ...?
Arjan

हां, लेकिन जब CHAR (9) जोड़ा गया था (प्रत्येक शून्य पर), तो इसने खुद को अग्रणी शून्य में भी जोड़ा। मैं देख रहा हूं कि आपने केवल इसका उपयोग ट्रेलिंग जीरो को बचाने के लिए किया था और मैं इसे उत्तर में शामिल करूंगा।
Lance Roberts

5

यह समाधान इनपुट मानों के लिए काम करता है जो सभी बिल्कुल नौ वर्ण हैं।

पहले एक निश्चित दस पंक्ति तालिका सेट करें जिसमें पाठ के रूप में प्रारूपित निम्नलिखित संख्याएँ हों।

000000000

000000001

000000010

000000100

000001000

000010000

000100000

001000000

010000000

100000000

मान लें कि तालिका A A1 'A10 के कक्षों में है

मान लें कि आपका इनपुट मान सेल B1 में है और आपका परिणाम सेल C1 है

सेल C1 में निम्न सूत्र का उपयोग करें

= अधिकार (बी 1, मैच (बी 1, $ A $ 1: $ A $ 10,1) -1)


होशियार! तीसरे पैरामीटर के लिए के रूप में MATCH समारोह: 1 = सबसे बड़ा मान जो लुकअप_वल्यू से कम या उसके बराबर है
Arjan

4

A1 में डेटा के लिए, निम्न सूत्र का उपयोग करें:

= सही (A1, LEN (A1) -MAX ((FINDB (REPT ("0"), ROW (A $ 1: A $ 100)), A1 & amp; "-" & amp; REPT ("0", 100)) = 1 ) * पंक्ति (एक $ 1: एक $ 100)))

Ctrl + Shift + Enter द्वारा इनपुट। यह 100 अक्षरों तक के तार के लिए काम करता है।


वाह! कुछ छोटे नोट: Ctrl-Shift-Enter (मैक पर Cmd-Shift-Return) एक सरणी सूत्र बनाता है। सूत्र को हमेशा की तरह चिपकाएँ, लेकिन इसे बचाने के लिए एंटर हिट Ctrl-Shift-Enter की बजाय। यह फिर घुंघराले ब्रेसिज़ के बीच दिखाई देगा। OpenOffice.org एक मैक पर, मैं अगली पंक्तियों के लिए सूत्र को नीचे नहीं खींच सकता (क्योंकि यह तब कुछ सुपर सरणी सूत्र प्राप्त करेगा)। लेकिन कॉपी & amp; पेस्ट काम करता है, इसलिए मुझे यकीन है कि कुछ शॉर्टकट भी हैं। और OpenOffice.org FINDB को नहीं जानता; FIND का उपयोग करने के साथ ही काम करने लगता है।
Arjan

सुरुचिपूर्ण समाधान!
wilson
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.