プロが教える店舗&オフィスのセキュリティ対策術

「作業1」シートより
M~N列の11行以降が、コピー元。「L10」は、コピー回数。貼付け先が「作業2」シートになります。
例で画像を載せました。
関数で処理できますか。関数で処理できるのであれば、関数でやりたいです。
VBAの方が簡単であれば、どのように記述すればいいのか、教えてほしいです。
大変困っております。どうぞよろしくお願い致します。

「VBA 指定した回数分、別シートにコピー」の質問画像

A 回答 (2件)

こんばんは



>関数で処理できるのであれば、関数でやりたいです。
以下、関数での例です。

作業1シートのデータは11行目以降上詰めで入力してあると仮定しています。
作業2シートのAU2セルに
=IFERROR(IF(ROW(A1)>COUNTA(作業1!$M$11:$M$100)*作業1!$L$10,"",INDEX(作業1!M:M,MOD(ROW(A1)-1,COUNTA(作業1!$M$11:$M$100))+11)),"")
の数式を入力し、AU2:AJ2にフィルコピー。
さらに、AU2:AJ2を十分に下方迄フィルコピーしておくことで実現できると思います。

※ 上式では、M、N列のデータは11~100行(最大100行目迄)に納まっているものと想定しています。
※ 作業1L10セルの値が、空白や 0、数値以外の場合には何も表示されません。
※ 上詰めではない場合でも計算可能ですが、式が面倒になるので省略。
 (その場合の計算の要領は、上記とほぼ同様です。)
    • good
    • 1
この回答へのお礼

すごい!すごすぎる!こんな関数が作れるなんて!めっちゃ助かりました。ありがとうございました。

お礼日時:2024/02/06 09:11

VBA とありましたので VBAで



Sub example1()
Dim ws1 As Worksheet, ws2 As Worksheet
Set ws1 = Sheets("作業1")
Set ws2 = Sheets("作業2")

Dim n As Long
n = ws1.Range("L10")

Dim rng As Range
'M列基準
Set rng = ws1.Range(ws1.Cells(11, "M"), ws1.Cells(Rows.Count, "M").End(xlUp)).Resize(, 2)
'AU列基準
ws2.Range(ws2.Cells(2, "AU"), ws2.Cells(Rows.Count, "AU").End(xlUp)).Resize(, 2).Clear

rng.Copy ws2.Range("AU2").Resize(rng.Rows.Count * n, rng.Columns.Count)

End Sub
    • good
    • 1
この回答へのお礼

できました。こんなの、すぐにスラスラ書けるなんて、うらやましいです。すぐに教えて頂けたので、電車が動いている間に帰れました。助かりました。ありがとうございました。

お礼日時:2024/02/06 09:06

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A