
マクロで貼り付け位置を可変させる方法が知りたいです。
計算処理用のブックから、集計用のブックへデータを貼り付ける際、
データの分類ごとに貼り付ける位置を可変させる方法を知りたいです。
・Book1は、計算処理用のブックです。
・このBook1で処理したデータを、Book2に貼り付けます。
・今Book1にあるデータは「東京」となっていますので
集計用のBook2のA列ににデータをコピペします。
・貼り付ける際は、Book2にある既存のデータの最後尾から1行空けて貼り付けます。
・もし、Book1のデータが「大阪」であれば、Book2のC列に貼り付けます。
手動で分類ごとに場所を探して貼り付けていると効率が悪く、
マクロで分類の場所を自動で特定して、データを蓄積したいのです。
ご教授の程、宜しくお願い申し上げます。

No.6ベストアンサー
- 回答日時:
No.5 の追補
※「集計ブック名」は適当に直して下さい。
※ 集計ブックが開いていたらそのまま処理します。開いていない場合は同じフォルダーに有れば自動で開きますが無いとエラーになると思います。事前に開いておくからそんな機能不要というなら以下の数行を削除してください。
--------------------------------------------------------------------------------
For Each ワークブック In Workbooks
If ワークブック.Name = 集計ブック名 Then
有 = True
Exit For
End If
Next
If 有 Then
--------------------------------------------------------------------------------
Else
Workbooks.Open Filename:=集計ブック名
End If
--------------------------------------------------------------------------------
希望通りの処理が出来ました。
多くのデータを蓄積しなければならないので、本当に助かりました。
No.4さんのご回答も同様の結果が得られたのですが、
「未登録の都市だった場合は自動で追加」という点が大変有り難く、
ベストアンサーにさせて頂きます。
本当に有難うございました。
No.5
- 回答日時:
こんなのはいかがですか?
--------------------------------------------------------------------------------
Sub 集計()
Const 集計ブック名 As String = "Book2.xlsx"
Dim ワークブック As Workbook
Dim 有 As Boolean
Dim 終 As Long
Dim 都市名 As String
Dim 列 As Long
ThisWorkbook.Activate
Sheets("計算処理用").Select
終 = Cells(Rows.Count, 1).End(xlUp).Row
If 終 = 1 Then Exit Sub
Range("A2:A" & 終).Copy
都市名 = Range("A1").Value
For Each ワークブック In Workbooks
If ワークブック.Name = 集計ブック名 Then
有 = True
Exit For
End If
Next
If 有 Then
Windows(集計ブック名).Activate
Else
Workbooks.Open Filename:=集計ブック名
End If
Sheets("集計用").Select
For 列 = 1 To Cells(1, Columns.Count).End(xlToLeft).Column Step 2
If Cells(1, 列).Value = 都市名 Then Exit For
Next
終 = Cells(Rows.Count, 列).End(xlUp).Row
If 終 = 1 Then
Cells(1, 列).Value = 都市名
Cells(2, 列).Select
Else
Cells(終 + 2, 列).Select
End If
ActiveSheet.Paste
Application.CutCopyMode = False
ThisWorkbook.Activate
Columns("A:A").ClearContents
End Sub
--------------------------------------------------------------------------------
※ 未登録の都市だった場合は自動で追加します。
No.4
- 回答日時:
失礼しました。
では、こうしてみて下さい。'コピー
ws1.Range(ws1.Range("A2"), ws1.Cells(Rows.Count, "A").End(xlUp)).Copy
できました!!
ありがとうございました。
No.4さんとNo.5さんのどちらも、希望通りの処理が出来たのですが、
No.5さんの多機能性が有り難く、心苦しいですがNo.5さんをベストアンサーにさせて頂きます。
No.4さんもベストアンサーにさせて頂きたかったのですが…
申し訳ありません。
本当に有難うございました。
No.3
- 回答日時:
ペースト先を特定する方法のご質問のようですが、それよりもコピー元を特定する方が難しそうですね~。
計算処理用シートとのことなので、数式なども含まれている前提で考えてみました。
Sub sample()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim c As Range
Set ws1 = Workbooks("Book1").Sheets("計算処理用")
Set ws2 = Workbooks("Book2").Sheets("集計用")
'コピー先のセルを取得する
On Error Resume Next
Set c = ws2.Cells(Rows.Count, WorksheetFunction.Match(ws1.Range("A1").Value, ws2.Rows(1), 0)).End(xlUp).Offset(2)
On Error GoTo 0
If c Is Nothing Then
MsgBox "該当なし"
Exit Sub
End If
'コピー
Union(ws1.Range("A2:A" & Rows.Count).SpecialCells(xlCellTypeFormulas, 1), _
ws1.Range("A2:A" & Rows.Count).SpecialCells(xlCellTypeConstants, 23)).Copy
'ペースト(値張り付け)
c.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Excel(エクセル) エクセルシートのデータを1列飛ばしで別ブックのシートに貼り付けるマクロが知りたい 2 2023/06/05 22:37
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) Excel vbaについて知恵もしくは、コード教えて下さいm(__)m ① 表にあるデータをコピー、 2 2022/09/01 23:57
このQ&Aを見た人はこんなQ&Aも見ています
-
マクロ自動コピペ 貼り付ける場所が変わる場合
その他(Microsoft Office)
-
エクセルVBA 画像を貼り付けるセル位置を指定する方法
Excel(エクセル)
-
毎回変わる範囲を検索し、コピペするマクロについてご教示ください。
Excel(エクセル)
-
-
4
【Excel VBA】データ貼り付けの開始位置について
Excel(エクセル)
-
5
VBAで繰り返しコピーしながら下へ移動させる方法
Excel(エクセル)
-
6
エクセルVBAで画像を貼り付ける座標設定方法は?
PowerPoint(パワーポイント)
-
7
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
8
【Excel マクロ】貼り付け先のセルを指定しないでコピー
Excel(エクセル)
-
9
マクロ 貼り付け先のセルを変更するには?
その他(Microsoft Office)
-
10
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
11
エクセル マクロ 貼り付け先が空白でない場合 1行下に貼りつける
Excel(エクセル)
-
12
エクセルVBAでコピーして順番に張り付けをしたい!
Visual Basic(VBA)
-
13
エクセルvbaで、別シートの最下行にデータを取り込むコードを教えてください。
Visual Basic(VBA)
-
14
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
15
エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい
Excel(エクセル)
-
16
VBAでの結合セルのコピー&ペースト
Excel(エクセル)
-
17
エクセルVBAでセルに入力したパスでブックを開く
Excel(エクセル)
-
18
【EXCEL】【VBA】空欄は飛ばして処理する方法を教えて下さい。
Excel(エクセル)
-
19
EXCEL VBAで全選択範囲の解除
Excel(エクセル)
-
20
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
IF関数を使用した数字に、カン...
-
Microsoft Formsによるアンケー...
-
エクセルのピボットテーブル
-
エクセルのピポットテーブルで...
-
マクロで貼り付け位置を可変さ...
-
エクセルの集計を数字以外です...
-
集計中とは何ですか
-
EXCELで大文字と小文字を...
-
勤務表の中抜け集計の関数を教...
-
accessのdateserialがうまくい...
-
ピボットテーブルのことです
-
ピボットテーブルへの集計フィ...
-
アクセスのFormat関数に...
-
エクセルの表で集計するには
-
ピボットテーブルの項目間の計算
-
ピボット 集計アイテム
-
エクセルで○や×の図形の集計は...
-
Excel ピボットテーブルで日付...
-
Excel 2003 ピボットテーブルの...
-
列を増やさずに、月だけの件数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
IF関数を使用した数字に、カン...
-
Microsoft Formsによるアンケー...
-
ピボットテーブルのことです
-
エクセルのピポットテーブルで...
-
ピボットテーブルの項目間の計算
-
エクセルの集計を数字以外です...
-
マクロで貼り付け位置を可変さ...
-
勤務表の中抜け集計の関数を教...
-
エクセルで○や×の図形の集計は...
-
オートシェイプを色別に個数を...
-
エクセルの集計機能を横方向(...
-
エクセル ピボットテーブルを更...
-
エクセルで数値のプラス毎とマ...
-
パワーポイントで資料を作る時 ...
-
Excel週ごとの集計を関数で
-
エクセルのフッターについて
-
ピボットテーブルの集計値をVBA...
-
ピボットテーブルへの集計フィ...
-
保存ブックを開かずコピーペー...
-
ある審査の結果を迅速にエクセ...
おすすめ情報
質問の不備でした。
マクロは、Book1に記述したいです。
また、「東京・大阪」等の分類は多数あります。
はい、ぜひお願い致します。
すみません。
「該当するセルが見つかりません」というエラーになりました。
>'コピー
>Union(ws1.Range("A2:A" & Rows.Count).SpecialCells(xlCellTypeFormulas, 1), _
>ws1.Range("A2:A" & Rows.Count).SpecialCells(xlCellTypeConstants, 23)).Copy
上記の部分が、黄色でハイライトされています。
質問の添付画像ではA列にのみデータがありますが、
実際には複数列にデータがあります。
そこで、Book1の都市名はA1のままで、その下のデータがA2からK列まであった場合、
コードのどの部分を変更すれば宜しいでしょうか。
データの列数は常に一定です。
すみません、
>For 列 = 1 To Cells(1, Columns.Count).End(xlToLeft).Column Step 2
の最後の数字を変更する事で、自己解決しました。