2009-06-23 16 views
26

में स्ट्रिंग स्प्लिट फ़ंक्शन अनुकरण करें मैं एक एक्सेल फॉर्मूला में एक स्ट्रिंग को विभाजित करने की कोशिश कर रहा हूं, जैसा कि मैं कई प्रोग्रामिंग भाषाओं में कर सकता हूं, उदा।एक्सेल फॉर्मूला

string words = "some text".split(' '); 

समस्या यह है कि मैं यह सुनिश्चित नहीं कर सकता कि सेल में एक से अधिक शब्द हैं। यदि मैं FIND() या SEARCH() फ़ंक्शंस का उपयोग करने का प्रयास करता हूं, तो यदि स्थान नहीं है तो वे #VALUE लौटते हैं। क्या स्ट्रिंग को विभाजित करने का कोई आसान तरीका है ताकि यह अलग-अलग शब्दों को लौटा सके (या इससे भी बेहतर, ताकि यह पहले शब्द या अन्य सभी शब्द) लौटाए?

+1

आप किस तरह से करते हैं शब्दों को वापस करना चाहते हैं? एक्सेल एक सेल में एक सरणी स्टोर नहीं कर सकता है। तो यह क्या होना चाहिए? – Tomalak

उत्तर

23

एक सूत्र या तो पहला शब्द या सभी दूसरे शब्दों वापस जाने के लिए: आप निम्नलिखित इस्तेमाल कर सकते हैं खाली है।

=IF(ISERROR(FIND(" ",TRIM(A2),1)),TRIM(A2),MID(TRIM(A2),FIND(" ",TRIM(A2),1),LEN(A2))) 

उदाहरण और फॉर्मूला पर परिणाम

Text     Description      Results 

         Blank 
         Space 
some     Text no space    some 
some text    Text with space     text 
some     Text with leading space   some 
some     Text with trailing space   some 
some text some text Text with multiple spaces  text some text 

टिप्पणियाँ:

  • TRIM समारोह सभी प्रमुख और पीछे वाले स्पेस दूर करने के लिए प्रयोग किया जाता है। पाठ के भीतर डुप्लिकेट रिक्ति भी हटा दी गई है।
  • FIND समारोह तो पहला अंतरिक्ष
  • पाता है कोई जगह नहीं तो छंटनी की पाठ
  • अन्यथा दिया जाता है वहाँ है मध्य समारोह पहला अंतरिक्ष के बाद किसी भी पाठ वापस जाने के लिए प्रयोग किया जाता है
+0

धन्यवाद, यह वही है जो मैं –

+2

के बाद था क्यों ओह एक्सेल में कुछ सभ्य स्ट्रिंग पार्सिंग फ़ंक्शन क्यों नहीं जोड़ते हैं?? – Rory

+0

@Rory क्योंकि एक्सेल मुख्य रूप से एकाउंटेंट के लिए बनाया गया है और इस धारणा को ओवरराइड करने का कोई शानदार तरीका नहीं है कि एकाउंटेंट एप्लिकेशन चला रहा है। प्रोग्रामर के लिए एक्सेल होना आवश्यक है। – dreftymac

9

निम्नलिखित रिटर्न सेल A1 में पहला शब्द है जब एक अंतरिक्ष से अलग कर दिया (Excel 2003 में काम करता है):

=LEFT(A1, SEARCH(" ",A1,1)) 
+1

हां, लेकिन अगर सेल में कोई जगह नहीं है, तो यह सिर्फ एक त्रुटि वापस कर देगा! –

+3

= LEFT (ए 1, खोज ("", CONCATENATE (ए 1, ""), 1)) – flash

9
=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3) 

यह सबसे पहले की जाँच करेगा सेल एक अंतरिक्ष शामिल है, अगर यह यह करता है अंतरिक्ष से पहला मूल्य वापस कर देगा, अन्यथा यह सेल मान वापस कर देगा।

संपादित

बस उपरोक्त सूत्र में जोड़ने के लिए, के रूप में यह खड़ा है, अगर वहाँ सेल में कोई मूल्य नहीं यह वापसी होगी 0. आप एक संदेश या कुछ और प्रदर्शित करने के लिए उपयोगकर्ता को बताने के लिए देख रहे हैं है यह

=IF(IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)=0, "Empty", IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)) 
+0

स्पष्ट रूप से आप ए 3 को बदल सकते हैं, जिस पर सेल का मूल्यांकन करने की आपकी कोशिश है, जेम्स। – James

+0

मैंने जो कुछ भी किया उसके बाद काफी कुछ नहीं किया, लेकिन +1 क्योंकि यह कहीं और सहायक था –

3

ये चीजें सरल होती हैं यदि आप उन्हें एक समय में एक सेल लिखते हैं, छोटे सूत्रों को लंबे समय तक तोड़ते हैं, जहां आप उन्हें टी के साथ देख सकते हैं वह रास्ता फिर आप मध्यवर्ती गणनाओं को छुपा सकते हैं, या उन्हें सभी को एक सूत्र में रोल कर सकते हैं।

उदाहरण के लिए

, जेम्स 'सूत्र लेने:

=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3) 

कौन सा Excel 2007 या बाद में ही मान्य है।

यह तोड़

अप इस प्रकार है:

B3: =FIND(" ", A3) 
C3: =IF(ISERROR(B3),A3,LEFT(A3,B3-1)) 

यह सिर्फ पर, एक हिस्सा एक बार में काम करने के लिए थोड़ा आसान है। एक बार यह हो जाने के बाद, आप

=IF(ISERROR(FIND(" ", A3)),A3,LEFT(A3,FIND(" ", A3)-1)) 

यदि आप चाहें तो इसे बदल सकते हैं।

2

यदि आपको एमएस एक्सेल में "कॉलम टू टेक्स्ट" कार्यक्षमता केवल एक बार कॉलम के आवंटन की आवश्यकता है।

एमएस देखें मदद यहाँ लेख: http://support.microsoft.com/kb/214261

HTH

1

हाइलाइट सेल, Dat का उपयोग => कॉलम के लिए पाठ और परिसीमक जगह नहीं है। विभाजन कई जगहों पर दिखाई देगा क्योंकि विभाजित स्थान को ढूंढता है।

0

अन्य उत्तरों में कुछ महान वर्कशीट-फू लेकिन मुझे लगता है कि उन्होंने अनदेखा किया है कि आप उपयोगकर्ता द्वारा परिभाषित फ़ंक्शन (udf) को परिभाषित कर सकते हैं और इसे शीट या फॉर्मूला से कॉल कर सकते हैं।

आपके पास अगली समस्या है या तो पूरी सरणी या तत्व के साथ काम करने का निर्णय लेना है।

उदाहरण के लिए इस यूडीएफ समारोह कोड

Public Function UdfSplit(ByVal sText As String, Optional ByVal sDelimiter As String = " ", Optional ByVal lIndex As Long = -1) As Variant 
    Dim vSplit As Variant 
    vSplit = VBA.Split(sText, sDelimiter) 
    If lIndex > -1 Then 
     UdfSplit = vSplit(lIndex) 
    Else 
     UdfSplit = vSplit 
    End If 
End Function 

एक सेल में निम्नलिखित के साथ एकल तत्वों की अनुमति देता है

=UdfSplit("EUR/USD","/",0)

या एक के साथ कोशिकाओं के एक ब्लॉक का उपयोग कर सकते

=UdfSplit("EUR/USD","/")

संबंधित मुद्दे