- ベストアンサー
マクロで特定行を含まずコピーする方法を教えてください
- 社内で使っている1ヶ月分の売り上げ表が重くなっており、過去日付の行だけ値で貼りつけたい。
- 売り上げ表には計算式が入っているが、合計欄だけは計算式を残したままコピーする方法を教えてほしい。
- どのようにマクロを使えば、特定行を含まずに売り上げ表をコピーして値で貼りつけることができるか教えてほしい。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> というのを見つけましたが、★の部分が偶数行(?)の指定の為、私が作っている表には当てはまらなく困っています。 私が以前回答した時のコードですね。 コードの内容をちゃんと理解すればちょっとの修正で利用できます。 For i = 2 To Range("A" & CStr(Rows.Count)).End(xlUp).Row Step 2 Range(Cells(i, 2), Cells(i, nTargetCol)).Select ↓ For i = 2 To Range("A" & CStr(Rows.Count)).End(xlUp).Row Step 8 Range(Cells(i, 2), Cells(i+6, nTargetCol)).Select
その他の回答 (1)
- qyukip
- ベストアンサー率40% (13/32)
合計欄に「合計」と付いているのが条件ですが、 まずオートフィルタをかけ、「合計」を含まない行を抽出してコピーします。 貼り付ける際に形式を指定して貼り付け→値 を選択して貼り付けます。 次にオートフィルタで「合計」を含む行を抽出してコピーし、貼り付けます。 参考になれば幸いです。
補足
qvukipさん 早速の回答ありがとうございます。 私の説明不足なのですが、全体をコピーして貼り付けするのではなく、過去日付の部分のみをコピー貼り付けしたいんです。 いろいろ探してみて Sub Sample() Dim nTargetCol As Long Dim i As Long Application.ScreenUpdating = False nTargetCol = Evaluate("MATCH(TODAY()-1,1:1,1)") For i = 2 To Range("A" & CStr(Rows.Count)).End(xlUp).Row Step 2 ★ Range(Cells(i, 2), Cells(i, nTargetCol)).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues Application.CutCopyMode = False Next i Application.ScreenUpdating = True End Sub というのを見つけましたが、★の部分が偶数行(?)の指定の為、私が作っている表には当てはまらなく困っています。 偶数行ではなく8行目ごとを省くといった構文はないでしょうか?
お礼
mt2008さん ありがとうございます。 私の勉強不足でした。もっとコードが理解できるように勉強したいと思います。 本当にたすかりました。ありがとうございます。