सवाल कॉलम को अल्पविराम से अलग सूची में कनवर्ट करें


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

1234
123461
123151
11321

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

1234,123461,123151,11321

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


108
2018-02-02 16:01


मूल


समाधान का एक हिस्सा संपादित किया जा सकता है, विशेष चिपकाएं, कॉलम को एक पंक्ति में रूपांतरित करने के लिए स्थानांतरित करें। यदि अन्य प्रोग्राम अल्पविरामों के बजाए टैब स्वीकार करता है, तो आप नई पंक्ति की प्रतिलिपि बनाने के बाद सेट हो जाते हैं। - Arjan
आप इसके विपरीत कैसे करते हैं? अल्पविराम से अलग सूची लें और इसे सामग्री के कॉलम में परिवर्तित करें? - stevvve
@stevvve डेटा टैब में टेक्स्ट टू कॉलम सुविधा का उपयोग करें। support.microsoft.com/en-us/kb/214261 - Trevor
मैं इसके लिए किसी भी नियमित अभिव्यक्ति सक्षम पाठ संपादक का उपयोग करता हूं, जैसे नोटपैड ++। कॉलम मानों की प्रतिलिपि बनाएँ और इसे संपादक में पेस्ट करें, नियमित अभिव्यक्ति को खोजें और बदलें, "\ r \ n" को "," से प्रतिस्थापित करें। यदि आप सीएसवी को कॉलम में कनवर्ट करना चाहते हैं, तो "\ r" n " - junaling


जवाब:


मान लें कि आपका डेटा ए 1 में शुरू होता है, मैं निम्नलिखित कॉलम बी में डालूंगा:

B1:

=A1

B2:

=B1&","&A2

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


132
2018-02-02 16:37



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


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

64
2018-06-05 05:24



यह शानदार ढंग से काम करता है। धन्यवाद! - Michael
+1 माइक्रोसॉफ्ट द्वारा यहां "आधिकारिक" समाधान के समान: support.microsoft.com/kb/819964 - Neo
बहुत प्यारा समाधान ... :-) - Saravanan


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

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) और यह मुझे अल्पविराम-सीमित सूची देता है।


21
2018-02-03 14:10



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


यदि आपके पास Office 365 Excel है तो आप टेक्स्टटाइन () का उपयोग कर सकते हैं:

=TEXTJOIN(",",TRUE,A:A)

enter image description here


16
2018-01-25 18:05



उत्तम! सरल! धन्यवाद। - Amy Patterson


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

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

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

चूंकि उपयोगकर्ता किसी अन्य प्रोग्राम की प्रतिलिपि बना रहा है और पेस्ट कर रहा है, यह उनके लिए उतना ही आसान हो सकता है।


10
2018-04-22 20:46





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

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

यहां वीबीए मैक्रो कोड है:

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

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


7
2018-02-02 19:12





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

%s/$/,/

इस आदेश को समझाने के लिए:

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

6
2018-02-06 22:53



माना। आस - पास भी नहीं। - muncherelli
संदर्भ के कारण टिप्पणियों से असहमत। एक सुपरसुर खाता वाला कोई व्यक्ति जो यहां पोस्ट करता है वह अक्सर विम का उपयोग करने का प्रकार होता है। - uniquegeek
मैं वीआईएम का उपयोग करता हूं और सोचता हूं कि मूल विचार उपयोगी है। मैंने विचार और एक साधारण पाठ संपादक का उपयोग करके समस्या को हल किया। - Nigini


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


2
2018-02-02 16:12



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


Muncherelli, मुझे आपका जवाब पसंद आया, और मैंने इसे tweaked :)। बस एक मामूली बात है, कई बार मैं एक चादर से डेटा खींचता हूं और डेटाबेस का क्वेरी करने के लिए इसका उपयोग करता हूं। मैंने एक वैकल्पिक "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

2
2018-04-08 15:54