- ベストアンサー
VBAで集約第3期のファイルに4列おきに数値を貼り付ける方法
- VBAを使用して、集約第3期のファイルに4列おきに数値を貼り付ける方法を教えてください。
- 集約第1期・集約第2期・集約第3期の3つのファイルには、それぞれ「結果」というシートがあります。
- 「結果」シートのC4:AU37の数値をコピーし、集約第3期のファイルの「集計用シート」に4列おきに貼り付けたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>集約第1期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-C2の列から4列おきに >集約第2期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-C3の列から4列おきに >集約第3期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-C4の列から4列おきに >といった具合です。 >集約第3期ファイル-集計用シート-C5の列は空白し、C6からまた貼り付けます。 を、 集約第1期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-C2の列から4列おきに 集約第2期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-D2の列から4列おきに 集約第3期ファイル-結果-C4の列→集約第3期ファイル-集計用シート-E2の列から4列おきに 集約第3期ファイル-集計用シート-F2の列は空白し、G2からまた貼り付けます。 と勝手に解釈しました。 Sub データ抽出() Dim i As Long Dim j As Long Dim flg As Boolean Dim myWb As Workbook Dim myWbName As String Dim intColumn As Integer Dim intCopyStartColumn As Integer Application.ScreenUpdating = False ChDrive ThisWorkbook.Path ChDir ThisWorkbook.Path ThisWorkbook.Worksheets("集計用シート").Range("C2:EG35").Clear For i = 1 To 3 flg = False myWbName = "集約第" & i & "期.xls" If myWbName <> ThisWorkbook.Name Then For Each myWb In Workbooks If myWb.Name = myWbName Then flg = True Next myWb If flg = False Then Workbooks.Open Filename:=myWbName Else Workbooks(myWbName).Activate MsgBox myWbName & "を閉じてから再実行してください。" Exit Sub End If End If If i = 1 Then intCopyStartColumn = 3 ElseIf i = 2 Then intCopyStartColumn = 4 Else intCopyStartColumn = 5 End If j = intCopyStartColumn For intColumn = 3 To 47 Workbooks(myWbName).Worksheets("結果").Activate Worksheets("結果").Range(Cells(4, intColumn), Cells(37, intColumn)).Copy ThisWorkbook.Worksheets("集計用シート").Activate ThisWorkbook.Worksheets("集計用シート").Cells(2, j).PasteSpecial Paste:=xlPasteValues j = intCopyStartColumn + 4 * (intColumn - 2) Next intColumn If myWbName <> ThisWorkbook.Name Then Application.DisplayAlerts = False Workbooks(myWbName).Close SaveChanges:=False Application.DisplayAlerts = True End If Next i Application.CutCopyMode = False Application.ScreenUpdating = True End Sub
お礼
早速のご回答ありがとうございました。 私の基本的なミス(列と行を混同していました)を正していただいた上に、 完璧なプログラムまで教えていただき、本当にありがとうございます。 先ほど、実際に使ってみましたが願っていた通りの結果になりました。 本当に、本当にありがとうございました。