
4月~3月まで12カ月横に並んだ表へ指定範囲を貼り付けたい。
Sheet2の指定範囲、Range("C3:C17")をコピーしてSheet1へ貼り付けたい。
毎月貼り付ける位置が違うので、Sheet2のセルC2へ貼り付け月を入力し、Sheet1の同一月の列へ貼り付けるにはどのようにしたら良いか教えてください。
Cellsの列を変数にしてコードを書きたいのですがマクロ勉強中で下記より先に進めません。
Sheets(2). Range("C3:C16").Copy Sheets(1).Cells(4, i)

No.2ベストアンサー
- 回答日時:
No1です。
>If c < 15 Then
>この記述の解説をお願いします。
見出し部分と一致するものがなかった場合、ループを全部回って抜けてきますのでcの値は15になっています。
それを判別しています。
例えば、検索をFindメソッドで行うなら、ループで探す代わりに、
Set f = sh.Range("C3:N3").Find(.Range("C2").Value, LookAt:=xlWhole)
If Not f Is Nothing Then 処理
などとなりますが、やはり同様に、
If ~~ の部分で、対象が存在しない場合の分岐を行う必要がでてきます。
「該当列がないような入力はしない」ことを前提になさっているとは思いますが、人間には入力ミス等はつきものですので、その度にエラーが発生したり、おかしな処理をされてしまうようでは困りますよね?
それを避けるための分岐ということです。
No1のコードでは、「見つからない場合は何もしない」としてありますが、「その旨の警告を出す」等にしておいても宜しいかと思います。
If ~~ Then ~~ Else ~~
を用いることで、できますよね。
No.1
- 回答日時:
こんにちは
>4月~3月まで12カ月横に並んだ表へ~
タイトル部分が固定なら、Sheet2のC2セルの値から計算で転記位置を求めることも可能ですが、とりあえず同じ値のセルを探す方法にしてあります。
探す方法もWorksheetFunction.Match()などを使う方法も考えられますが、単純にループで照合して検索する方法にしてあります。
>Range("C3:C17")をコピーして~
C3:C17だとSheet1の合計欄を上書きしてしまうと思いますので、C3:C16としてあります。
(ご提示のコードの方は、C3:C16になっているようですし・・)
以下、ご参考までに。
Sub Sample()
Dim sh As Worksheet, c As Long
Set sh = Worksheets("Sheet1")
With Worksheets("Sheet2")
For c = 3 To 14
If sh.Cells(3, c).Value = .Range("C2").Value Then Exit For
Next c
If c < 15 Then .Range("C3:C16").Copy sh.Cells(4, c)
End With
End Sub
ありがとうございます。思い通りの結果が得られました。1箇所質問させて下さい。If c < 15 Then
この記述の解説をお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 他のシートからコピーする下記マクロで貼付け位置をWorksheets(1).Range("A3")の 8 2023/01/30 18:48
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) 祝日を除いた月曜から土曜までの1週間分の日付行を選択し、別シートへカットアンドペーストしたい 13 2023/07/13 22:46
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける 3 2022/09/10 07:55
- Visual Basic(VBA) エクセルのマクロについて教えてください。 4 2023/07/04 17:58
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- Visual Basic(VBA) 指定月分の顧客データファイルを統合して並べ替え、所定の場所に貼り付ける (再質問) 4 2022/09/14 22:51
- Visual Basic(VBA) ExcelVBAでDo Until loopのネスト、IF文を使って一致する物と一致しない物としたい 11 2022/12/24 17:46
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA 別シートの同じ日付の欄に値を貼付け
Excel(エクセル)
-
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
マクロで貼り付け位置を可変させる方法が知りたいです。
Excel(エクセル)
-
-
4
エクセルのVBAで日付を検索し転機したい
Visual Basic(VBA)
-
5
【VBA】元のシート内の文字列を別シートと比較し、一致したら元のシートの別のセルへ転記する方法。
Excel(エクセル)
-
6
VBAで自動集計(特定セルコピー月ごとに値貼り付け)したい。
Visual Basic(VBA)
-
7
マクロ自動コピペ 貼り付ける場所が変わる場合
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
A列にある値をB列・C列にVBAで...
-
EXCEL VBAで教えてください。
-
【VBA】2つのシートの値を比較...
-
ERROR 型が一致しませんと...
-
複数の列の値を結合して別の列...
-
VBAでのリスト不一致抽出について
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
エクセルのVBAでタブ区切り...
-
マクロでシートからシートへの...
-
Cellsのかっこの中はどっちが行...
-
VBA 2つの条件が一致すれば...
-
VBAによる列削除について教えて...
-
VBでEXCELシートを読み込んだと...
-
excel vba で●を数える
-
VBA初心者です。 並べ替え Sort...
-
VBAを用いて条件付きの平均値、...
-
重複したデーターの転記につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
vba 2つの条件が一致したら...
-
Worksheets メソッドは失敗しま...
-
B列の最終行までA列をオート...
-
Cellsのかっこの中はどっちが行...
-
IIF関数の使い方
-
Changeイベントでの複数セルの...
-
【VBA】2つのシートの値を比較...
-
VBA 何かしら文字が入っていたら
-
URLのリンク切れをマクロを使っ...
-
VBAのFind関数で結合セルを検索...
-
DataGridViewに空白がある場合...
-
VBAを使って検索したセルをコピ...
-
文字列の結合を空白行まで実行
-
データグリッドビューの一番最...
-
VBAでのリスト不一致抽出について
-
エクセル 2つの表の並べ替え
-
rowsとcolsの意味
-
【Excel VBA】 B列に特定の文字...
-
VBA 列が空白なら別のマクロへ...
おすすめ情報