2010-06-04 18 views
7

मेरे पास एक्सेल में अलग-अलग कॉलम में कई सूचियां हैं। मुझे क्या करना है डेटा के इन कॉलम को एक बड़े कॉलम में जोड़ना है। मुझे कोई परवाह नहीं है कि डुप्लिकेट प्रविष्टियां हैं, हालांकि मैं चाहता हूं कि यह प्रत्येक कॉलम की पंक्ति 1 को छोड़ दें।एक्सेल - एकाधिक स्तंभों को एक कॉलम में मिलाएं

इसके अलावा क्या है कि ROW1 के जनवरी से दिसंबर तक हेडर हैं, और कॉलम की लंबाई अलग हैं और उन्हें एक बड़े कॉलम में गठबंधन करने की आवश्यकता है?

ROW1| 1 2 3  
ROW2| A D G  
ROW3| B E H  
ROW4| C F I 

संयोजित करना चाहिए

A  
B  
C  
D  
E  
F  
G  
H  
I 

प्रत्येक स्तंभ की पहली पंक्ति को छोड़ दिया करने की आवश्यकता है में।

उत्तर

0

सुनिश्चित नहीं है कि यह पूरी तरह से मदद करता है, लेकिन मुझे एक समस्या थी जहां मुझे "स्मार्ट" विलय की आवश्यकता थी। मेरे पास दो कॉलम थे, ए & बी। मैं केवल बी को स्थानांतरित करना चाहता था अगर ए खाली था। निचे देखो। यह एक चयन रेंज पर आधारित है, जिसे आप पहली पंक्ति ऑफ़सेट करने के लिए उपयोग कर सकते हैं।

Private Sub MergeProjectNameColumns() 
    Dim rngRowCount As Integer 
    Dim i As Integer 

    'Loop through column C and simply copy the text over to B if it is not blank 
    rngRowCount = Range(dataRange).Rows.Count 
    ActiveCell.Offset(0, 0).Select 
    ActiveCell.Offset(0, 2).Select 
    For i = 1 To rngRowCount 
     If (Len(RTrim(ActiveCell.Value)) > 0) Then 
      Dim currentValue As String 
      currentValue = ActiveCell.Value 
      ActiveCell.Offset(0, -1) = currentValue 
     End If 
     ActiveCell.Offset(1, 0).Select 
    Next i 

    'Now delete the unused column 
    Columns("C").Select 

    selection.Delete Shift:=xlToLeft 
End Sub 
0
Function Concat(myRange As Range, Optional myDelimiter As String) As String 
    Dim r As Range 
    Application.Volatile 
    For Each r In myRange 
    If Len(r.Text) Then 
     Concat = Concat & IIf(Concat <> "", myDelimiter, "") & r.Text 
    End If 
    Next 
End Function 
12

इस प्रयास करें। डेटा के अपने श्रेणी में कहीं भी क्लिक करें और फिर इस मैक्रो का उपयोग:

Sub CombineColumns() 
Dim rng As Range 
Dim iCol As Integer 
Dim lastCell As Integer 

Set rng = ActiveCell.CurrentRegion 
lastCell = rng.Columns(1).Rows.Count + 1 

For iCol = 2 To rng.Columns.Count 
    Range(Cells(1, iCol), Cells(rng.Columns(iCol).Rows.Count, iCol)).Cut 
    ActiveSheet.Paste Destination:=Cells(lastCell, 1) 
    lastCell = lastCell + rng.Columns(iCol).Rows.Count 
Next iCol 
End Sub 
1

मैं एक उदाहरण स्प्रेडशीट कैसे सरल एक्सेल फार्मूले के साथ ऐसा करने के लिए यहाँ बनाया है, और मैक्रो के उपयोग के बिना (आप अपने खुद के समायोजन करने के लिए की आवश्यकता होगी के लिए पहली पंक्ति से छुटकारा पाने, लेकिन एक बार आप यह पता लगाने की कैसे मेरे उदाहरण स्प्रेडशीट काम करता है इस आसान होना चाहिए):

https://docs.google.com/a/umich.edu/spreadsheet/ccc?key=0AuSyDFZlcRtHdGJOSnFwREotRzFfM28tWElpZ1FaR2c#gid=0

5

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

= IF (आरओडब्ल्यू() < = COUNTA (ए: ए), सूचकांक (ए: एक, पंक्ति()), IF (आरओडब्ल्यू() < = COUNTA (ए : बी), सूचकांक (बी: बी, पंक्ति() - COUNTA (ए: एक)), IF (आरओडब्ल्यू()> COUNTA (ए: सी), "", सूचकांक (सी: सी, पंक्ति() - COUNTA (एक: बी)))))

बयान 3 का उपयोग करता है काम करता है, क्योंकि यह 3 कॉलम गठबंधन करने के लिए की जरूरत है:

  • स्तंभ एक के लिए, समारोह के साथ एक सेल की पंक्ति संख्या की तुलना एक कॉलम में कोशिकाओं की कुल संख्या जो खाली नहीं हैं। यदि परिणाम सत्य है, तो फ़ंक्शन कॉलम ए से सेल का मान देता है जो पंक्ति() पर है। यदि परिणाम गलत है, तो फ़ंक्शन अगले IF कथन पर चलता है।
  • कॉलम बी के लिए, फ़ंक्शन ए: बी श्रेणी में कोशिकाओं की कुल संख्या के साथ सेल की पंक्ति संख्या की तुलना करता है जो खाली नहीं हैं। यदि परिणाम सत्य है, तो फ़ंक्शन कॉलम बी में खाली नहीं होने वाले पहले सेल का मान देता है। यदि गलत है, तो फ़ंक्शन अगले IF कथन पर चलता है।
  • कॉलम सी के लिए, फ़ंक्शन ए: सी श्रेणी में कोशिकाओं की कुल संख्या के साथ सेल की पंक्ति संख्या की तुलना करता है जो खाली नहीं हैं। यदि परिणाम सत्य है, तो फ़ंक्शन एक खाली सेल देता है और कोई और गणना नहीं करता है। यदि गलत है, तो फ़ंक्शन पहले सेल का मान देता है जो कॉलम सी
+0

यह एक अद्भुत जवाब है !! –

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