2016-04-24 45 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 

,因为它使用阵列,它的运行速度比迭代通过细胞应对&粘贴