एक स्तंभ को अल्पविराम से अलग सूची में परिवर्तित करें


129

मेरे पास एक सरल एक्सेल शीट बनाने का कार्य है जो कॉलम A में अनिर्दिष्ट संख्या को इस तरह लेता है:

1234
123461
123151
11321

और उन्हें एक अन्य सेल में एक अल्पविराम से अलग की गई सूची में शामिल करें जिसे उपयोगकर्ता आसानी से कॉपी कर सकता है और किसी अन्य प्रोग्राम में पेस्ट कर सकता है:

1234,123461,123151,11321

ऐसा करने का सबसे आसान तरीका क्या है?


8
समाधान का एक भाग एडिट, पेस्ट स्पेशल हो सकता है, कॉलम को एक पंक्ति में बदलने के लिए स्थानांतरित करें। यदि अन्य प्रोग्राम कॉमा के बजाय टैब्स को स्वीकार करता है, तो आप नई पंक्ति को कॉपी करने के बाद सभी सेट होते हैं।
अर्जन

आप इसके विपरीत कैसे करते हैं? अल्पविराम से अलग की गई सूची लें और उसे सामग्री के कॉलम में परिवर्तित करें?
स्टीव

1
@stevvve डेटा टैब में टेक्स्ट टू कॉलम की सुविधा का उपयोग करें। support.microsoft.com/en-us/kb/214261
ट्रेवर

मैं नोटपैड ++ की तरह, इसके लिए किसी भी नियमित अभिव्यक्ति सक्षम पाठ संपादक का उपयोग करता हूं। कॉलम मान कॉपी करें और इसे संपादक में पेस्ट करें, नियमित अभिव्यक्ति खोजें और बदलें, "\ r \ n" को "," के साथ बदलें। यदि आप CSV को कॉलम में बदलना चाहते हैं, तो "," ढूंढें और "\ r \ n" से
बदलें

जवाबों:


145

आपके डेटा को A1 में शुरू करने पर मैं निम्नलिखित को कॉलम B में रखूँगा:

B1:

=A1

B2:

=B1&","&A2

आप पूरे कॉलम के नीचे कॉलम B2 पेस्ट कर सकते हैं। कॉलम B में अंतिम सेल अब कॉलम A की अल्पविराम से अलग की गई सूची होनी चाहिए।


8
यह सीमित संख्या में पंक्तियों के लिए बहुत अच्छा है, लेकिन (उपलब्ध स्मृति के आधार पर?) यदि आप एक दो हज़ार पंक्तियों से आगे निकल रहे हैं, तो आपका उत्पादन मूल्य अधूरा छोड़कर यह प्रक्रिया कम हो जाएगी। सावधान रहे।
समतेब्रांड

एक शक्तिशाली विंडोज 10 प्रो कंप्यूटर पर एक्सेल 2013 का उपयोग करना, यह केवल 30-35 लाइनों के बाद विफल हो गया। मुझे 200 से अधिक की जरूरत थी। माइकल जोसेफ द्वारा समाधान पूरी तरह से काम किया।
ट्रायलमैन

75
  • एक्सेल में कॉलम कॉपी करें
  • वर्ड खोलें
  • केवल पाठ के रूप में "विशेष पेस्ट करें"
  • Word में डेटा का चयन करें (वह जिसे आपको पाठ से अलग करने की आवश्यकता है ,), दबाएँ Ctrl- H(ढूँढें और बदलें)
  • "क्या खोजें" बॉक्स प्रकार में ^p
  • "बदलें" बॉक्स प्रकार के साथ ,
  • "सभी को बदलें" चुनें

+1 Microsoft द्वारा यहां "आधिकारिक" समाधान के रूप में समान है: support.microsoft.com/kb/819964
नियो

बहुत ही प्यारा उपाय ... :-)
सरवनन

बस शुद्ध जादू :)
सुधीज


23

मैंने वास्तव में सिर्फ VBA में एक मॉड्यूल बनाया है जो सभी काम करता है। यह मेरी रंगी हुई सूची लेता है और एक अल्पविराम-निर्मित स्ट्रिंग बनाता है जो मेरी पसंद के सेल में आउटपुट होता है:

Function csvRange(myRange As Range)
    Dim csvRangeOutput
    Dim entry as variant
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & entry.Value & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function

तो फिर मेरे सेल में, मैं बस डालता हूं =csvRange(A:A)और यह मुझे कॉमा-सीमांकित सूची देता है।


1
आह .. मेरे उत्तर के बहुत करीब है, लेकिन मुझे आपका कार्यान्वयन पसंद है।
Mpeterson

10

एक्सेल कॉलम को इन-ब्राउज़र टूल में पेस्ट करने के लिए एक वैकल्पिक तरीका होगा:

convert.town/column-to-comma-separated-list

यह पाठ के एक कॉलम को अल्पविराम से अलग की गई सूची में परिवर्तित करता है।

जैसा कि उपयोगकर्ता किसी अन्य कार्यक्रम में वैसे भी कॉपी और पेस्ट कर रहा है, यह उनके लिए उतना ही आसान हो सकता है।


7

आप ऐसा कुछ कर सकते हैं। यदि आप एक विशाल स्प्रेडशीट के बारे में बात नहीं कर रहे हैं, तो यह 'ठीक' होगा ...

  • Alt-F11, सूची बनाने के लिए एक मैक्रो बनाएँ (नीचे कोड देखें)
  • इसे शॉर्टकट या टूलबार बटन पर असाइन करें
  • उपयोगकर्ता कॉलम A में संख्याओं के अपने कॉलम को चिपकाता है, बटन दबाता है, और उनकी सूची सेल B1 में जाती है।

यहाँ VBA मैक्रो कोड है:

Sub generatecsv() 

Dim i As Integer
Dim s As String

i = 1

Do Until Cells(i, 1).Value = ""
    If (s = "") Then
        s = Cells(i, 1).Value
    Else
        s = s & "," & Cells(i, 1).Value
    End If
    i = i + 1 
Loop

Cells(1, 2).Value = s

End Sub

सेल B1 के प्रारूप को 'टेक्स्ट' पर सेट करना सुनिश्चित करें या आपको एक गड़बड़ नंबर मिलेगा। मुझे यकीन है कि आप VBA में भी ऐसा कर सकते हैं, लेकिन मुझे यकीन नहीं है कि इस समय मैं कैसे काम कर सकता हूं और काम पर वापस आने की जरूरत है। ;)


7

प्रत्येक पंक्ति के अंत में केवल अल्पविराम लगाने के लिए vi या विम का उपयोग करें:

%s/$/,/

इस कमांड को समझाने के लिए:

  • % इसका मतलब है कि सभी लाइनों के लिए क्रिया (यानी, ढूंढें और प्रतिस्थापित करें)
  • s प्रतिस्थापन का संकेत देता है
  • /तर्क अलग करता है (यानी, s/find/replace/options)
  • $ एक पंक्ति के अंत का प्रतिनिधित्व करता है
  • , इस मामले में प्रतिस्थापन पाठ है

माना। आस - पास भी नहीं।
23

संदर्भ के कारण टिप्पणियों से असहमत हैं। सुपरसुअर खाते वाला कोई व्यक्ति जो यहां पोस्ट करता है, अक्सर विम का उपयोग करने का प्रकार होता है।
यूनिकजेक

मैं वीआईएम का उपयोग करता हूं और लगता है कि मूल विचार उपयोगी है। मैंने विचार और एक साधारण पाठ संपादक का उपयोग करके समस्या को हल किया।
निगिनी

2

आप पंक्ति में किसी कॉलम को चालू करने के लिए कैसे-कैसे गीक के गाइड का उपयोग कर सकते हैं और बस इसे उल्टा कर सकते हैं। फिर डेटा को सीएसवी (अल्पविराम-स्वरूपित प्रारूप) के रूप में निर्यात करें, और आपके पास अपना सादा अल्पविराम अल्पविकसित सूची है! आप नोटपैड से कॉपी कर सकते हैं और इसे एक्सेल में वापस डाल सकते हैं यदि आप चाहते हैं। इसके अलावा, यदि आप अल्पविराम के बाद एक स्थान चाहते हैं, तो आप "," के साथ "," के स्थान पर, एक खोज और प्रतिस्थापन सुविधा कर सकते हैं। उम्मीद है की वो मदद करदे!


CSV को निर्यात करना इस उपयोगकर्ता से परे है। मुझे इसे इंगित करने और एक्सेल के भीतर क्लिक करने की आवश्यकता है।
मुंचेरेल्ली

2

muncherelli, मुझे आपका उत्तर पसंद आया, और मैंने इसे ट्विक किया :)। बस एक मामूली बात है, कई बार मैं एक शीट से डेटा खींचता हूं और एक डेटाबेस को क्वेरी करने के लिए इसका उपयोग करता हूं। मैंने एक वैकल्पिक "textQualify" पैरामीटर जोड़ा जो एक क्वेरी में एक अल्पविराम से अलग की गई सूची बनाने में मदद करता है।

Function csvRange(myRange As Range, Optional textQualify As String)
    'e.g. csvRange(A:A)  or csvRange(A1:A2,"'") etc in a cell to hold the string
    Dim csvRangeOutput
    For Each entry In myRange
        If Not IsEmpty(entry.Value) Then
            csvRangeOutput = csvRangeOutput & textQualify & entry.Value & textQualify & ","
        End If
    Next
    csvRange = Left(csvRangeOutput, Len(csvRangeOutput) - 1)
End Function

1

मैंने एक्सेल शीट को संभालने के लिए जेनेरिक () उप को बेहतर बनाया है जिसमें प्रत्येक सूची के शीर्षकों और उनके शीर्षकों से सूचियों को अलग करने वाली रिक्त लाइनों वाली कई सूचियाँ हैं। उदाहरण

list title 1

item 1
item 2

list title 2

item 1
item 2

और उन्हें कई पंक्तियों में सूची में जोड़ देता है, 1 प्रति सूची।

कारण, मेरे पास एक ग्राहक था जो मुझे विषयवस्तु के आधार पर अपनी वेबसाइट के लिए सूची प्रारूप में कई कीवर्ड भेजता था, इन खोजशब्दों को वेबपेजों में आसानी से लाने का एक तरीका चाहिए था। इसलिए दिनचर्या को संशोधित किया और निम्नलिखित के साथ आया, मैंने चर नामों को भी बदलकर अर्थपूर्ण नामों में बदल दिया:

    Sub generatecsv()

      Dim dataRow As Integer
      Dim listRow As Integer
      Dim data As String

      dataRow = 1: Rem the row that it is being read from column A otherwise known as 1 in vb script
      listRow = 1: Rem the row in column B that is getting written

      Do Until Cells(dataRow, 1).Value = "" And Cells(dataRow + 1, 1).Value = ""
        If (data = "") Then
          data = Cells(dataRow, 1).Value
        Else
          If Cells(dataRow, 1).Value <> "" Then
            data = data & "," & Cells(dataRow, 1).Value
          Else
            Cells(listRow, 2).Value = data
            data = ""
            listRow = listRow + 1
          End If
        End If
        dataRow = dataRow + 1
      Loop

      Cells(listRow, 2).Value = data

    End Sub

1

Sux2Lose का उत्तर मेरी पसंदीदा विधि है, लेकिन यह काम नहीं करता है यदि आप एक दो हज़ार से अधिक पंक्तियों के साथ काम कर रहे हैं, और यदि आपके कंप्यूटर में बहुत अधिक उपलब्ध मेमोरी नहीं है, तो भी कम पंक्तियों के लिए टूट सकता है।

इस मामले में सबसे अच्छा अभ्यास शायद कॉलम की नकल करना है, नई कार्यपुस्तिका बनाना, नई कार्यपुस्तिका के पिछले विशेष A1और Transposeइसलिए कि स्तंभ अब एक पंक्ति है। फिर कार्यपुस्तिका को एक के रूप में सहेजें .csv। आपका सीएसवी अब मूल रूप से एक सादा-पाठ अल्पविराम से अलग की गई सूची है जिसे आप पाठ संपादक में खोल सकते हैं।

नोट: याद रखें कि csv के रूप में सहेजने से पहले कॉलम को एक पंक्ति में स्थानांतरित करें। अन्यथा एक्सेल को मानों के बीच अल्पविराम छड़ी करने का पता नहीं चलेगा।


-1

इस तरह के अल्पविराम से अलग करने वाले कार्यों के लिए zamazin.co वेब ऐप का उपयोग करना सबसे आसान तरीका है। कॉलम डेटा भरें और कॉमा से अलग सूची बनाने के लिए कन्वर्ट बटन दबाएं। तुम भी वांछित उत्पादन में सुधार करने के लिए कुछ अन्य सेटिंग्स का उपयोग कर सकते हैं।

http://zamazin.co/comma-separator-tool

यहाँ छवि विवरण दर्ज करें


यह अब
Phil

-2

=CONCATENATE(A1;",";A2;",";A3;",";A4;",";A5)उस सेल पर उपयोग करें जिसे आप परिणाम प्रदर्शित करना चाहते हैं।


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