2016-03-26 6 views
1

このトピックはさまざまな方法でカバーされています。私はただvbaとマクロを今日見始めただけですが、私が見つけた解決策を見つけたり調整したりすることはできませんでした。マクロ内での列の結合

私は4つの異なるエクセルファイルを約500カラムと2~4k行のデータで各ファイルにプルしています。

興味のある列を以下の(優しくない)解決策(下記参照)で1つのExcelファイルにコンパイルする方法を知りました。

誰かが私にこれらの16個のカラムをどのようにして4個のカラムに変更するかを教えてくれることを願っています(あるいは誰でもデータを4列にする方法を説明できればそれも素晴らしいでしょう) 。

ありがとうございました!

あなたのVBAマクロが正常に完了し、タスクの残りの部分は次のSubを使用して行うことができることを提供
Sub Macro2() 

' Macro2 Macro 


    Workbooks.Open Filename:="[path]" 
    Workbooks.Open Filename:="[path]" 
    Workbooks.Open Filename:="[path]" 
    Workbooks.Open Filename:="[path]" 

    Workbooks("Stroop_Distressing_A_out.csv").activate 
     Sheets("Stroop_Distressing_A_out.csv").select 
      Range("GL:GL, HP:HP, IJ:IJ, IS:IS").copy 
    Workbooks("Merge Excel Data Macro1.xlsm").activate 
     Sheets("Sheet1").select 
      Range("A:D").select 
      ActiveSheet.Paste 

    Workbooks("Stroop_Distressing_B_out.csv").Activate 
    Sheets("Stroop_Distressing_B_out.csv").Select 
      Range("GL:GL, HP:HP, IK:IK, IT:IT").Copy 
    Workbooks("Merge Excel Data Macro1.xlsm").Activate 
     Sheets("Sheet1").Select 
       Range("E:H").Select 
    ActiveSheet.Paste 


    Workbooks("Stroop_Distressing_C_out.csv").activate 
     Sheets("Stroop_Distressing_C_out.csv").select 
      Range("DV:DV, EZ:EZ, FU:FU, GD:GD").copy 
    Workbooks("Merge Excel Data Macro1.xlsm").activate 
     Sheets("Sheet1").select  
    Workbooks("Merge Excel Data Macro1.xlsm").Activate 
     Sheets("Sheet1").Select 
       Range("I:L").Select 
    ActiveSheet.Paste 

    Workbooks("Stroop_Distressing_D_out.csv").activate 
     Sheets("Stroop_Distressing_D_out.csv").select 
      Range("GL:GL, HP:HP, IK:IK, IT:IT").copy 
    Workbooks("Merge Excel Data Macro1.xlsm").activate 
     Sheets("Sheet1").select  
     Workbooks("Merge Excel Data Macro1.xlsm").Activate 
     Sheets("Sheet1").Select 
       Range("M:P").Select 
    ActiveSheet.Paste 

End Sub 

答えて

0

Sub AggregateColumns() 
    Dim wsSource As Worksheet 
    Dim wsTarget As Worksheet 
    Dim maxRowSource As Integer 
    Dim maxRowTarget As Integer 

    Set wsSource = Sheets("Sheet1") 
    Set wsTarget = Sheets("Sheet2") 

    maxRowSource = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row 
    maxRowTarget = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row 
    wsSource.Range("A1:D" & maxRowSource).Copy Destination:=wsTarget.Range("A1") 

    maxRowSource = wsSource.Cells(wsSource.Rows.Count, "E").End(xlUp).Row 
    maxRowTarget = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row 
    wsSource.Range("E1:H" & maxRowSource).Copy Destination:=wsTarget.Range("A" & maxRowTarget + 1) 

    maxRowSource = wsSource.Cells(wsSource.Rows.Count, "I").End(xlUp).Row 
    maxRowTarget = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row 
    wsSource.Range("I1:L" & maxRowSource).Copy Destination:=wsTarget.Range("A" & maxRowTarget + 1) 

    maxRowSource = wsSource.Cells(wsSource.Rows.Count, "M").End(xlUp).Row 
    maxRowTarget = wsTarget.Cells(wsTarget.Rows.Count, "A").End(xlUp).Row 
    wsSource.Range("M1:P" & maxRowSource).Copy Destination:=wsTarget.Range("A" & maxRowTarget + 1) 

End Sub 

これが役立つことを願っています。

+1

恐縮です、ありがとうございます! – Mik

+0

あなたは大歓迎です!あなたのプロジェクトに幸運。宜しくお願いします、 –