
シート名「時間別項目別一覧」のBDFHJL列へ右隣のシート名「時間別項目別20210303」から短日分の個数をコピーし貼り付け、
CEGIKM列へ右端のシート名「累計」から累計の個数をコピーし貼り付けたいと考えています。
右隣のシートは「Next」を使うとありましたが、右端のシートも同じような別の指定方法があるのでしょうか?
私の知識では単純なコピーで切り貼りする記述しかできません。
連日での質問になりますが知識と技術を積み重ねてこられたみなさんのお力をお借りできませんでしょうか。
よろしくお願いいたします。

No.2ベストアンサー
- 回答日時:
こんにちは、
一連のご質問は、片手間に少し拝見していましたが、
回答する時間がなく傍観していました。
先ず、ご質問に関してですが、
>私の知識では単純なコピーで切り貼りする記述しかできません。
この場合、PasteSpecial xlPasteValues(値貼り付け)になっていますので
代入式で出来ます。 範囲.Value=範囲.Value の形です。
範囲は、=の左辺右辺を同じ大きさにします。(Resizeを理解されると判り易いのですが、まずはべたで)
やりたい事2で示すと
Sub a()
With Worksheets("時間別項目別件数一覧 ")
.Range("C3:C11").Value = Worksheets("累計").Range("B3:B11")
.Range("E3:E11").Value = Worksheets("累計").Range("C3:C11")
End With
End Sub
のように書けます。
これを踏まえてWorksheets("時間別項目別件数一覧 ")の右隣のシート
のB~Mを一つ飛びB、D、F、H、J、L場合は
Sub b()
Dim i As Long, n As Integer, shIndex As Integer
Dim sh As Worksheet
Set sh = ActiveSheet
shIndex = Worksheets("時間別項目別件数一覧").Index + 1
Sheets(shIndex).Activate
For i = 0 To 24 Step 2
With Worksheets("時間別項目別件数一覧")
.Range(.Cells(3, 2 + i), .Cells(11, 2 + i)).Value _
= Sheets(shIndex).Range(Cells(3, 2 + n), Cells(11, 2 + n)).Value
End With
n = n + 1
Next
sh.Activate
End Sub
のよな感じです。(不明な点は補足でご質問ください)
(右隣と言う関係性が担保出来ないと思わぬ結果になります)
余談、今更の感じですが、このブックは、31日まで作るのでしょうか?
それを12ブック作って1年分をフォルダに入れるとかになるのでしょうか?
今からでも簡単にできるので、データはすべてデータシートなどのシートに入れた方が良いと思います。
加工はそのシートからデータを抽出する形にした方が良いのではないかと思います。(すでにアドバイスされているかもしれませんが)
データシートの作り方や今あるものを纏める方法などわからなければ、
ご質問ください。 先ずは、参考まで
No.4
- 回答日時:
ベテラン様にお任せでも良いのですがちょっと気になった点で。
結局のところ「時間別項目別件数一覧」シートには『最新日』の個別データと『累計』シートの集計結果データを纏めたいって所でしょうか?
そこで気になったのは『累計』の集計結果に最新日のデータって加算されているのかなぁ~と。
とは言えここは回答者が気にする事もないのですかね。
既出ですけどコピペに拘らず代入を用いた方が、少なくとも今の考えであれ行数は少なくなると思いますよ。
No.1
- 回答日時:
まずコピペについて。
コピー元のセルは飛び飛びに指定は可能ですが、コピー先ではその飛ばされたセルは無視され左に詰められます。
しかも行又は列での選択でどちらもバラバラでは無理だと思いました。
次にやりたい事が今一つ不明です。
特に画像右下の意味が・・・3/1分を示しているのが。
本当は『累計シート』だったとか?
>シート名「時間別項目別一覧」のBDFHJL列へ右隣のシート名「時間別項目別20210303」
ここは画像でなんとなくわかります。しかしその後の『短日分』とは?
社内?でのローカルな表現・語句であるなら、その使用は回答者にはわかりません。
『商品名?』の順序と『時間』の行数はどのシートでも変化はないのでしょうか?
ちなみにですが。
シート名がわかっていてその右なら正の整数、左側なら負の整数を Index に加算すると加算した先のシートが取得できます。
MsgBox Worksheets("時間別項目別一覧").Index & vbCrLf & Worksheets(Worksheets("時間別項目別一覧").Index).Name
MsgBox Worksheets("時間別項目別一覧").Index + 1 & vbCrLf & Worksheets(Worksheets("時間別項目別一覧").Index + 1).Name
こんな感じで。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 集計シートA列のコードと一致する右に並んだシート名(コード)の3行目から10行目をコピーして貼り付け 4 2022/08/18 15:24
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) シートが違う2枚のエクセルシートにある数値を別シートにコピーしたい(VBA?) 8 2022/03/31 12:24
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Excel(エクセル) シート参照を含む数式を連続コピー 3 2022/12/10 11:42
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Codeがわかりません(自作の...
-
VBAで以下の処理をする方法があ...
-
Excel VBA 指定シートの有無確認
-
エクセル Worksheet_Calculate
-
エクセルのマクロについて教え...
-
エクセルのVBAの変更点がわ...
-
作ったマクロに不備があるかど...
-
【エクセル】オプションボタン...
-
【VBA】全ての複数シートから指...
-
ユーザーフォームに入力したデ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
IFステートの中にWithステート...
-
Excel チェックボックスにチェ...
-
VBA 存在しないシートを選...
-
【VBA】色のついたシート名を取得
-
シートの枚数について
-
エクセルVBAのIF文のときのFOR...
-
VBA|楕円のリンクについて
-
Excel VBAについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定の文字を含むシートだけマ...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
ユーザーフォームに入力したデ...
-
実行時エラー'1004': WorkSheet...
-
XL:BeforeDoubleClickが動かない
-
エクセルVBA Ifでシート名が合...
-
実行時エラー1004「Select メソ...
-
エクセルのシート名変更で重複...
-
【ExcelVBA】全シートのセルの...
-
VBA 存在しないシートを選...
-
ブック名、シート名を他のモジ...
-
Excel チェックボックスにチェ...
-
VBA 検索して一致したセル...
-
エクセルで通し番号を入れてチ...
-
シートが保護されている状態で...
-
【VBA】特定の文字で改行(次の...
-
ExcelのVBAのマクロで他のシー...
-
Worksheet_Changeの内容を標準...
-
EXCELVBAを使ってシートを一定...
おすすめ情報
解かりづらく申し訳ございません。
『短日分』とは?
シート名「時間別項目別20210303」、「時間別項目別20210302」、「時間別項目別20210301」と並んでいるなかの1シートになります。
『商品名?』の順序と『時間』の行数はどのシートでも変化はないのでしょうか?
「時間別項目別****」「累計」シートともに同じ配置で並んでいます。
■やりたいこと1
コピー元:「時間別項目別一覧」シート右隣のシート「時間別項目別20210303」B3:B11からコピーし、「時間別項目別一覧」シートのB3:B11へ値貼付する。
「時間別項目別20210303」C3:C11からコピーし、「時間別項目別一覧」シートのD3:D11へ値貼付する。コピー元の列はB~Mまでを繰り返しコピーするが、コピー先の列はB、D、F、H、J、Lと累計を挟んだ位置へ貼り付ける。
■やりたいこと2
「累計」シートB3:B11から「時間別項目別件数一覧」のC3:C11へ値貼付けする記述の簡略化
現在の記述
Worksheets("累計").Range("B3:B11").Copy
Worksheets("時間別項目別件数一覧 ").Range("C3").PasteSpecial xlPasteValues
Application.CutCopyMode = False
Worksheets("累計").Range("C3:C11").Copy
Worksheets("時間別項目別件数一覧 ").Range("E3").PasteSpecial xlPasteValues
Application.CutCopyMode = False
ーコピー元H列まで同じ記述をしていますー
簡略化できるのではと悩んでいます、お手数ですがお知恵を貸していただけませんでしょうか。
bを実行すると
実行時エラー’9’
インデックスが有効範囲にありません
となり「デバック」すると
上から4行目の
shIndex = Worksheets("時間別項目別件数一覧").Index + 1
で止まってしまいます。
試行錯誤してみましたが原因がわかりません?
何処を変更したらよいかご教授いただけませんでしょうか。
よろしくお願いいたします。