एक्सेल में एक सेल में एक कॉलम में पंक्तियों को कैसे मर्ज किया जाए?


81

उदाहरण के लिए

A1:I
A2:am
A3:a
A4:boy 

मैं उन सभी को एक एकल सेल "Iamaboy" में विलय करना चाहता हूं।
यह उदाहरण 1 सेल में 4 कोशिकाओं को मर्ज करता है, हालांकि मेरे पास कई सेल (100 से अधिक) हैं, मैं उन्हें एक-एक करके टाइप नहीं कर सकता A1 & A2 & A3 & A4कि मैं क्या कर सकता हूं?


क्या वे सभी 4 के ऊर्ध्वाधर समूहों में हैं? या क्या आप एकल कक्ष में सभी कॉलम A चाहते हैं?
एलेक्स के।

क्या हम VBA में स्वीकृत उत्तर को देखते हुए एक्सेल-वीबीए टैग लगाने के लिए इस प्रश्न को संपादित कर सकते हैं? साथ ही इस तरह के सवाल हैं जो हर समय पूछे जाते हैं और मैं उन लोगों को डुप्लिकेट के रूप में चिह्नित करना चाहूंगा, क्योंकि यहां एक उत्तर है।
bonCodigo

जवाबों:


87

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

इस स्थिति में, आप इसका उपयोग करने के लिए इसे लिखेंगे:

=ConcatenateRange(A1:A4)

Function ConcatenateRange(ByVal cell_range As range, _
                    Optional ByVal separator As String) As String

Dim newString As String
Dim cell As Variant

For Each cell in cell_range
    If Len(cell) <> 0 Then
        newString = newString & (separator & cell)
    End if
Next

If Len(newString) <> 0 Then
    newString = Right$(newString, (Len(newString) - Len(separator)))
End If

ConcatenateRange = newString

End Function

2
यह अनैच्छिक है, जबकि कार्यात्मक रूप से एक = A1 और A2 और A3 & A4 को जोड़ना पर्याप्त होगा और A1 और "" & A2 & "" & A3 & "" और A4 जोड़ना आपको प्रत्येक सेल के मूल्यों के बीच एक स्थान देगा।
माइकल एकिंस

3
+1 लेकिन मैं इसे कॉल करूंगा ConcatenateRange! बेवकूफ एक्सेल CONCATENATEफ़ंक्शन एक सीमा को इनपुट के रूप में स्वीकार नहीं करेगा, केवल अलग-अलग तर्कों के रूप में व्यक्तिगत कोशिकाओं की एक सूची ...
जीन-फ्रांकोइस कॉर्बेट

10
धन्यवाद जीन! मैंने आपके सुझाव को अपना लिया है! माइकल, आप इस बिंदु से चूक गए - ऐसा करना सैकड़ों कोशिकाओं के लिए थकाऊ और व्यर्थ है।
एवान्को नोवो

1
ALL आपको करना है "= CocatenateRange (A1: A10, CHAR (10))" CHAR (10) को पास करके आप नई लाइन कैरेक्टर पास कर रहे हैं। :)
एवैंको

1
उत्तम सामग्री। Else newString = newString & (separator & Space(1))जैसा कि मुझे अपने परिणामी स्ट्रिंग में निश्चित चौड़ाई बनाए रखने की आवश्यकता है, के साथ संशोधित ।
सर क्रिस्पलॉट

149

यदि आप VBA के बिना ऐसा करना पसंद करते हैं, तो आप निम्नलिखित की कोशिश कर सकते हैं:

  1. अपने डेटा को A1 में रखें: A999 (या ऐसा)
  2. सेल B1 को "= A1" पर सेट करें
  3. सेल B2 को "= B1 और A2" पर सेट करें
  4. सेल बी 2 को बी 99 तक कॉपी करें (जैसे बी 2 की नकल करके, सेल बी 3 का चयन करके: बी 99 और पेस्टिंग)

सेल B999 में अब वह संक्षिप्त पाठ स्ट्रिंग शामिल होगी जिसे आप खोज रहे हैं।


2
यदि आप मान कॉपी करना चाहते हैं: - अंतिम सेल (B999) को कॉपी करें (ctrl + c), एक खाली सेल पर क्लिक करें और होम टैब पर, क्लिपबोर्ड समूह में, पेस्ट आइकन के तहत, पेस्ट वैल्यू पर क्लिक करें।
कनिष्क

9
यह बेकार है, लेकिन शानदार है!
BH

14
यह एक बार की नौकरी के लिए बिल्कुल भी बेकार नहीं है (जो कि आमतौर पर ऐसे सवाल होते हैं)। यह जाने का रास्ता है क्योंकि यह आपको यह देखने की अनुमति देता है कि क्या चल रहा है, साथ ही आप आगे जुड़ने के संचालन को आसानी से संशोधित कर सकते हैं (विभाजक आदि जोड़ें)। एक बार की नौकरियों के लिए, वीबीए एक स्लेजहेमर का उपयोग करके अखरोट को फोड़ने जैसा है।
पीरबहोर

1
यह बड़े डेटा सेट के साथ काम नहीं कर रहा है। (मेमोरी से बाहर)
डैनियल

1
यह प्रतिभा है।
साधक

42

अंदर CONCATENATEआप इसका उपयोग कर सकते हैं TRANSPOSEयदि आप इसे विस्तारित करते हैं ( F9) तो आसपास के {}ब्रैकेट को हटा दें जैसे कि यह अनुशंसा करता है

=CONCATENATE(TRANSPOSE(B2:B19))

हो जाता है

=CONCATENATE("Oh ","combining ", "a " ...)

संबद्ध (ट्रांसपोसे (बी 2: बी 19))

आपको अंत में अपना स्वयं का विभाजक जोड़ने की आवश्यकता हो सकती है, कहते हैं कि एक कॉलम C बनाएं और उस कॉलम को स्थानांतरित करें।

=B1&" "
=B2&" "
=B3&" "

2
फैंसी .gif चित्रण के लिए
UpVote

24

साधारण मामलों में आप अगली विधि का उपयोग कर सकते हैं, जिसके लिए आपको फ़ंक्शन बनाने या कई कक्षों में कोड कॉपी करने की आवश्यकता नहीं है:

  1. किसी भी सेल में अगला कोड लिखें

    =Transpose(A1:A9) 
    

जहाँ A1: A9 ऐसी कोशिकाएँ हैं जिन्हें आप मर्ज करना चाहेंगे।

  1. सेल प्रेस छोड़ने के बिना F9

उसके बाद, सेल में स्ट्रिंग होगी:

={A1,A2,A3,A4,A5,A6,A7,A8,A9}

स्रोत: http://www.get-digital-help.com/2011/02/09/concatenate-a-cell-range-without-vba-in-excel/

अपडेट: एक हिस्सा अस्पष्ट हो सकता है। सेल छोड़ने के बिना संपादक मोड में अपने सेल होने का मतलब है। वैकल्पिक रूप से आप F9 दबा सकते हैं जबकि सेल एडिटर पैनल में हैं (सामान्य रूप से इसे स्प्रेडशीट के ऊपर पाया जा सकता है)


जो कुछ भी था, यह एक स्वच्छ विचार था, हालांकि यह मेरे लिए काम नहीं करता था। मुझे लगता है क्योंकि मेरे पाठ में बहुत सारे विशेष वर्ण थे, यह उन्हें सही आउटपुट में संयोजित नहीं करता था। मैंने मैन्युअल रूप से a1 & b1 & c1 & ......
क्रिस मैरिसिक

1
क्रिस, इस समाधान में एक अजीब हिस्सा यह है कि आपको F9 दबाने से पहले सेल पर ध्यान केंद्रित रखना होगा। और "ध्यान रखें" से मेरा मतलब है कि आप संपादक कर्सर को ब्लिंक कर रहे हैं और पाठ लिखना जारी रखने में सक्षम हैं।
y.selivonchyk

1
F9 को हिट करना एक्सेल के मैक संस्करण पर काम नहीं करता है।
एडम एबर्लिन

15

VBA के पहले से मौजूद Joinफ़ंक्शन का उपयोग करें । VBA फ़ंक्शन एक्सेल में उजागर नहीं होते हैं, इसलिए मैं Joinएक उपयोगकर्ता-परिभाषित फ़ंक्शन में लपेटता हूं जो इसकी कार्यक्षमता को उजागर करता है। सबसे सरल रूप है:

Function JoinXL(arr As Variant, Optional delimiter As String = " ")
    'arr must be a one-dimensional array.
    JoinXL = Join(arr, delimiter)
End Function

उदाहरण का उपयोग:

=JoinXL(TRANSPOSE(A1:A4)," ") 

एक सरणी सूत्र के रूप में दर्ज किया गया (उपयोग Ctrl- Shift- Enter)।

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


अब, JoinXLइनपुट के रूप में केवल एक आयामी सरणियों को स्वीकार करता है। Excel में, श्रेणियाँ दो-आयामी सरणियाँ देती हैं। उपरोक्त उदाहरण में, TRANSPOSE4 × 1 दो-आयामी सरणी को 4-तत्व एक-आयामी सरणी में परिवर्तित करता है (यह TRANSPOSEएकल-स्तंभ दो-आयामी सरणी के साथ खिलाए जाने पर प्रलेखित व्यवहार है )।

एक क्षैतिज श्रेणी के लिए, आपको एक डबल करना होगा TRANSPOSE:

=JoinXL(TRANSPOSE(TRANSPOSE(A1:D1)))

आंतरिक TRANSPOSE1 × 4 दो आयामी सरणी को 4 × 1 दो आयामी सरणी TRANSPOSEमें परिवर्तित करता है , जो बाहरी तब 4-तत्व एक-आयामी सरणी में परिवर्तित होता है।

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

यह उपयोग TRANSPOSEExcel में 1d सरणियों में 2D सरणियों को परिवर्तित करने का एक प्रसिद्ध तरीका है, लेकिन यह भयानक दिखता है। JoinXLवीबीए फ़ंक्शन में इसे दूर करने के लिए एक अधिक सुरुचिपूर्ण समाधान होगा ।


1
बड़ी तालिका में, यह फ़ंक्शन @aevanko के फ़ंक्शन की तुलना में बहुत अधिक तेज़ है।
रिक्लेडिव टोंडाटो

9

एक्सेल 2016 वाले लोगों के लिए (और मुझे लगता है कि अगले संस्करण), अब सीधे CONCAT फ़ंक्शन है, जो CONCATENATE को बदल देगा फ़ंक्शन ।

तो एक्सेल 2016 में इसे करने का सही तरीका है:

=CONCAT(A1:A4)

जो उत्पादन करेगा:

मैं एक लड़का हूँ

एक्सेल के पुराने संस्करणों के उपयोगकर्ताओं के लिए, अन्य उत्तर प्रासंगिक हैं।


1
मेरे पास Windows के लिए Office 2016 ProPlus स्थापित है और CONCAT
बजे

Microsoft कहता है कि CONCAT Excel 365 और 2019 में उपलब्ध है: support.microsoft.com/en-us/office/…
रे वुडकॉक

4

मैक पर एक्सेल 2011 के लिए यह अलग है। मैंने इसे तीन चरणों की प्रक्रिया के रूप में किया।

  1. स्तंभ A में मानों का एक स्तंभ बनाएं।
  2. कॉलम बी में, पहले सेल के दाईं ओर, एक नियम बनाएं जो स्तंभ मान और "," पर समवर्ती फ़ंक्शन का उपयोग करता है। उदाहरण के लिए, मान लेना A1 पहली पंक्ति है, B1 का सूत्र है =B1। अगली पंक्ति के लिए पंक्ति N, सूत्र है =Concatenate(",",A2)। आप के साथ अंत:
क्यूए
, सेकुली
,परिक्षण
, एप्लायटूल
, दृश्य परीक्षण
, टेस्ट स्वचालन
, सेलेनियम
  1. स्तंभ C में एक ऐसा सूत्र बनाते हैं जो पिछले सभी मूल्यों को समाप्‍त करता है। क्योंकि यह additive है आप सभी को अंत में मिलेगा। सेल C1 का सूत्र है =B1। एन के लिए अन्य सभी पंक्तियों के लिए, सूत्र है =Concatenate(C1,B2)। और आपको मिलता है:
क्यूए, सेकुली
क्यूए, सेकुली, परीक्षण
क्यूए, सेकुली, परीक्षण, एप्लाइट्स
क्यूए, सेकुली, परीक्षण, Applitools, विज़ुअल परीक्षण
क्यूए, सेकुली, टेस्टिंग, एप्लायटूल, विजुअल टेस्टिंग, टेस्ट ऑटोमेशन
क्यूए, सेकुली, टेस्टिंग, एप्लायटूल, विजुअल टेस्टिंग, टेस्ट ऑटोमेशन, सेलेनियम

सूची का अंतिम सेल वही होगा जो आप चाहते हैं। यह विंडोज या मैक पर एक्सेल के साथ संगत है।


एक सूत्र में तीन मान सम्‍मिलित करना संभव है। मेरे पास A कॉलम में मान हैं, B1 फॉर्मूला जैसे A1 और B2 की एक प्रति है =CONCATENATE(B1;",";A2)। फिर आपको सभी पंक्तियों के लिए सेल में राइट डाउन डॉट को ड्रैग करना होगा और अंतिम मूल्य परिणाम होगा
oleksa

2

मैं CONCATENATEएक कॉलम के मूल्यों को लेने के लिए और बीच में कॉलम के साथ कोट को लपेटने के लिए विधि का उपयोग करता हूं ताकि जल्दी WHERE IN ()से एक एसक्यूएल स्टेटमेंट के क्लॉज को पॉप्युलेट किया जा सके ।

मैं हमेशा केवल टाइप करता हूं =CONCATENATE("'",B2,"'",",")और फिर उसे चुनता हूं और उसे नीचे खींचता हूं , जो बनाता है =CONCATENATE("'",B3,"'",","), =CONCATENATE("'",B4,"'",",")आदि। फिर उस पूरे कॉलम को हाइलाइट करें, एक सादे टेक्स्ट एडिटर पर कॉपी पेस्ट करें और यदि आवश्यक हो तो वापस पेस्ट करें, इस प्रकार पंक्ति पृथक्करण को हटा दें। यह काम करता है, लेकिन फिर से, सिर्फ एक समय के सौदे के रूप में, यह किसी ऐसे व्यक्ति के लिए एक अच्छा समाधान नहीं है जिसे हर समय इसकी आवश्यकता है।


0

मुझे पता है कि यह वास्तव में एक पुराना सवाल है, लेकिन मैं एक ही काम करना चाह रहा था और मैंने "TEXTJOIN" नामक एक्सेल में एक नए सूत्र पर ठोकर खाई।

प्रश्न के लिए, निम्न सूत्र समस्या को हल करता है

=TEXTJOIN("",TRUE,(a1:a4))

"TEXTJOIN" के हस्ताक्षर TEXTJOIN (सीमांकक, ign_empty, text1, [text2], [text3], ...) के रूप में समझाया गया है


Microsoft का कहना है कि TEXTJOIN Excel 365 और 2019 के लिए उपलब्ध है: support.microsoft.com/en-us/office/…
Ray Woodcock
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.