2016-04-24 55 views
0

我在Excel中有多個行和列有不同的數據,我希望所有的數據都在一個列上。我嘗試了移調功能,但它並沒有幫助我得到我想要的。多行和列到單列Excel

這就是我現在所擁有的:

enter image description here

而這正是我想:

enter image description here

誰能請你告訴我,我怎麼能做到這一點?任何內置的函數或宏都會有所幫助。謝謝。

回答

2

試試這個代碼:

Sub RangetoColumn() 
    Dim LastRow As Long, LastColumn As Long 
    Dim CurrentSheet As Worksheet, TargetSheet As Worksheet 
    Dim i As Long, j As Long, Count As Long 

    Set CurrentSheet = ThisWorkbook.Worksheets("Sheet1")'-->change Sheet1 to your source sheet 
    Set TargetSheet = ThisWorkbook.Worksheets("Sheet2")'-->change Sheet2 to your target sheet 
    LastRow = CurrentSheet.Cells(Rows.Count, "A").End(xlUp).Row 

    Count = 1 
    For i = 1 To LastRow 
     LastColumn = CurrentSheet.Cells(i, Columns.Count).End(xlToLeft).Column 
     For j = 1 To LastColumn 
      TargetSheet.Range("A" & Count).Value = CurrentSheet.Cells(i, j).Value 
      Count = Count + 1 
     Next j 
    Next i 
End Sub 

代碼將從Sheet1讀取範圍,將在Sheet2創建列。

+0

非常感謝。它符合要求。 –

+0

@TanvirSourov - 很高興我能幫助你。 – Mrig

2

我覺得這個教程應該可以幫到你:tutorial 你可以嘗試一下你的需求解決方案。

+0

由於更快。這工作。 :) –

0

嘗試在兩個單元格中使用&。嘗試像這樣A1&B1合併單元格A1和單元格B1中的數據;複製和粘貼,然後享受。

0

這將有絨其列A中列出的所有當前片的細胞和清除所有其它相鄰列

Option Explicit 

Sub RangeToOneColumn() 
    Dim lastRow As Long, i As Long, j As Long 
    Dim rng As Range 
    Dim myArr As Variant 

    With ThisWorkbook.Worksheets("Sheet1") '<== change it to your needs 
     lastRow = .Cells(.rows.Count, "A").End(xlUp).Row 
     ReDim myArr(0 To lastRow - 1) 
     For i = 1 To lastRow 
      Set rng = .Range(.Cells(i, 1), .Cells(i, .Columns.Count).End(xlToLeft)) 
      myArr(i - 1) = Application.Transpose(Application.Transpose(rng)) 
     Next i 
     .Cells(1, 1).CurrentRegion.ClearContents 

     j = 1 
     For i = LBound(myArr) To UBound(myArr) 
      .Cells(j, 1).Resize(UBound(myArr(i))) = Application.Transpose(myArr(i)) 
      j = j + UBound(myArr(i)) 
     Next i 
    End With 

End Sub 

,因爲它使用陣列,它的運行速度比迭代通過細胞應對&粘貼