2016-04-24 13 views
0

Excelの複数の行と列に異なるデータがあり、すべてのデータを1つの列にまとめたい。 トランスポーズ機能を試しましたが、私が欲しいものを手に入れようとしていません。複数の行と列を1列にする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 

他のすべての隣接する列をクリアしますが、アレイを使用するため、それはより速く細胞