2016-08-30 6 views
0

私は60を超える列のExcelスプレッドシートを持っています。各列には、SharePoint調査のデータが含まれています。列見出しは、SharePointデータ接続からインポートされた実際の調査質問です。私はここでいくつかのことをしようとしています。新しいワークシートに列データをコピーし、列をループします

まず、各列を新しいワークシートにコピーします。(これを行う必要があるのは、各列のデータをPowerPivotデータモデルに追加できるようにするためです.PowerPivotはワークシート全体を1つのテーブルとして認識するため、「列A」のみを選択することはできませんデータモデルに追加すると、60列すべてのテーブル全体が自動的に追加されます)。

この前に手動で60枚の新しいシートを追加したくないので、コードを新しく作成したワークシートにコピーするようにしてください。 (ワークシートに名前を付ける必要はありませんが、誰かがこれを簡単に行うことができない限り、手動で行うこともできます)

次に、コピーを実行する各列にコードをループさせたい新しく作成したシートに貼り付けます。

ここでいくつかの関連トピックのコードの例をいくつか見てきましたが、私はVBAの初心者です。あなたのためにすべてのことをありがとう!

は、私はそれをコピーし、以下を試してみたが、私はあなたの代わりにこれを行う必要があります

Sub CopyColumnToNewSheet() 

    Dim lastRow As Long 
    lastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row 
    Sheets("Sheet2").Range("A1:A" & lastRow).Value = Sheets("Sheet1").Range("A1:A" & lastRow).Value 

End Sub 
+0

はSOへようこそ!何か試しましたか?もしそうなら、コードを提供して、[ツアー](http://stackoverflow.com/tour)と[質問する](http://stackoverflow.com/help/how-to-ask)を見てください。 )。フレンドリーリマインダー:StackOverflowは "あなたのためのコード"サービスプロバイダーではありません。 [VBA入門(https://blog.udemy.com/excel-macros-tutorial/) – Sgdva

+0

@SgdvaSub CopyColumnToNewSheet() 暗いLASTROW限り LASTROW =シート( "シート1")。レンジ( "A" Range( "A1:A"&lastRow).Value =シート( "Sheet1")。範囲( "A1:A"&lastRow) .Value End Sub –

答えて

0

コラムを通じて新しいシートとループを追加するかどうかはわかりません、そこに、注意してください何のエラー処理がされていない、あなたのニーズに合わせ

Sub CopyColumnToNewSheet() 
    Const MySourcheSheetName = "Sheet1" 
    Dim CounterColumn As Long 
    For CounterColumn = 1 To Sheets(MySourcheSheetName).Cells.SpecialCells(xlCellTypeLastCell).Column 
    Sheets.Add 
    ActiveSheet.Name = Sheets(MySourcheSheetName).Cells(1, CounterColumn).Value 'ideally the title is unique and it's in the first row of each column 
    Sheets(MySourcheSheetName).Columns(CounterColumn).Copy Destination:=ActiveSheet.Columns(1) 
    Next CounterColumn 
End Sub 

enter image description here

+0

ありがとう、私はこれで作業します。私はあなたの時間を感謝@ Sgdva –

関連する問題