プロが教えるわが家の防犯対策術!

シート名「時間別項目別一覧」のBDFHJL列へ右隣のシート名「時間別項目別20210303」から短日分の個数をコピーし貼り付け、
CEGIKM列へ右端のシート名「累計」から累計の個数をコピーし貼り付けたいと考えています。

右隣のシートは「Next」を使うとありましたが、右端のシートも同じような別の指定方法があるのでしょうか?
私の知識では単純なコピーで切り貼りする記述しかできません。
連日での質問になりますが知識と技術を積み重ねてこられたみなさんのお力をお借りできませんでしょうか。
よろしくお願いいたします。

「前日の数量と当月の累計を一覧にしたいので」の質問画像

質問者からの補足コメント

  • 解かりづらく申し訳ございません。
    『短日分』とは? 
    シート名「時間別項目別20210303」、「時間別項目別20210302」、「時間別項目別20210301」と並んでいるなかの1シートになります。
    『商品名?』の順序と『時間』の行数はどのシートでも変化はないのでしょうか?
    「時間別項目別****」「累計」シートともに同じ配置で並んでいます。
    ■やりたいこと1
    コピー元:「時間別項目別一覧」シート右隣のシート「時間別項目別20210303」B3:B11からコピーし、「時間別項目別一覧」シートのB3:B11へ値貼付する。
    「時間別項目別20210303」C3:C11からコピーし、「時間別項目別一覧」シートのD3:D11へ値貼付する。コピー元の列はB~Mまでを繰り返しコピーするが、コピー先の列はB、D、F、H、J、Lと累計を挟んだ位置へ貼り付ける。

    No.1の回答に寄せられた補足コメントです。 補足日時:2021/03/10 11:55
  • ■やりたいこと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列まで同じ記述をしていますー
    簡略化できるのではと悩んでいます、お手数ですがお知恵を貸していただけませんでしょうか。

      補足日時:2021/03/10 12:12
  • bを実行すると
    実行時エラー’9’
    インデックスが有効範囲にありません
    となり「デバック」すると
    上から4行目の
    shIndex = Worksheets("時間別項目別件数一覧").Index + 1
    で止まってしまいます。
    試行錯誤してみましたが原因がわかりません?
    何処を変更したらよいかご教授いただけませんでしょうか。
    よろしくお願いいたします。

      補足日時:2021/03/10 17:26

A 回答 (5件)

まずコピペについて。


コピー元のセルは飛び飛びに指定は可能ですが、コピー先ではその飛ばされたセルは無視され左に詰められます。
しかも行又は列での選択でどちらもバラバラでは無理だと思いました。

次にやりたい事が今一つ不明です。
特に画像右下の意味が・・・3/1分を示しているのが。
本当は『累計シート』だったとか?

>シート名「時間別項目別一覧」のBDFHJL列へ右隣のシート名「時間別項目別20210303」

ここは画像でなんとなくわかります。しかしその後の『短日分』とは?
社内?でのローカルな表現・語句であるなら、その使用は回答者にはわかりません。

『商品名?』の順序と『時間』の行数はどのシートでも変化はないのでしょうか?

ちなみにですが。
シート名がわかっていてその右なら正の整数、左側なら負の整数を Index に加算すると加算した先のシートが取得できます。

MsgBox Worksheets("時間別項目別一覧").Index & vbCrLf & Worksheets(Worksheets("時間別項目別一覧").Index).Name

MsgBox Worksheets("時間別項目別一覧").Index + 1 & vbCrLf & Worksheets(Worksheets("時間別項目別一覧").Index + 1).Name

こんな感じで。
この回答への補足あり
    • good
    • 0

こんにちは、


一連のご質問は、片手間に少し拝見していましたが、
回答する時間がなく傍観していました。

先ず、ご質問に関してですが、
>私の知識では単純なコピーで切り貼りする記述しかできません。
この場合、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年分をフォルダに入れるとかになるのでしょうか?

今からでも簡単にできるので、データはすべてデータシートなどのシートに入れた方が良いと思います。
加工はそのシートからデータを抽出する形にした方が良いのではないかと思います。(すでにアドバイスされているかもしれませんが)

データシートの作り方や今あるものを纏める方法などわからなければ、
ご質問ください。 先ずは、参考まで
    • good
    • 0
この回答へのお礼

完璧です、助かりました。
本当にありがとうございました。

お礼日時:2021/03/10 19:41

#2


説明で書いているのでコードに書いていませんでした。
Sub a()の
Worksheets("累計").Range("B3:B11")は
Worksheets("累計").Range("B3:B11").Value ですね。
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2021/03/10 19:40

ベテラン様にお任せでも良いのですがちょっと気になった点で。



結局のところ「時間別項目別件数一覧」シートには『最新日』の個別データと『累計』シートの集計結果データを纏めたいって所でしょうか?
そこで気になったのは『累計』の集計結果に最新日のデータって加算されているのかなぁ~と。

とは言えここは回答者が気にする事もないのですかね。
既出ですけどコピペに拘らず代入を用いた方が、少なくとも今の考えであれ行数は少なくなると思いますよ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速データシートの作成に着手します。

お礼日時:2021/03/10 19:39

#2です


多分ですが、やりたい事2を見ながらタイプしたのですが、今よく見ると
"時間別項目別件数一覧 " 最後に半角スペースが入っているようですね。
私のタイプミスによるものと思います。すみません。
エラー9であるならそのシートが無い(見つからない)のが原因と推察できますので、シート名(半角スペースを足して)を再度ご確認ください。
    • good
    • 0
この回答へのお礼

えっ本当ですね
なぜそのようなことがみつけられるのですか?
凄すぎます!

お礼日時:2021/03/10 19:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!