• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:EXCEL VBA条件による行の上下段へのコピー)

Excel VBA条件による行の上下段へのコピー

このQ&Aのポイント
  • Excel VBAを使用して、条件によって行を上下にコピーする方法について質問させていただきます。
  • 表1には各商品のデータが6行ずつ表示されていますが、一部のフィールドにはデータが入っていないため、オートフィルターをかけると空白行が抽出されません。そのため、表1を表2のように全ての行にデータを入れることで、オートフィルターで正しく抽出できるようにしたいです。
  • 具体的な条件としては、品名と区分は必ず入っており、品番は各商品データの2行目に、納品日から問屋名までは同一データの先頭行の2行目に入っています。表1にデータを入れるためのボタンを作成し、そのボタンを押すことで表2の緑色セルを埋めるような動作を実現したいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんにちは! 一例です。 Sub Sample1() Dim i As Long, j As Long Application.ScreenUpdating = False Application.DisplayAlerts = False On Error Resume Next '←おまじない For i = 2 To Cells(Rows.Count, "G").End(xlUp).Row Step 6 For j = 1 To 6 Cells(i, j).Resize(6, 1).Merge If Cells(i, j) = "" Then Cells(i, j) = Cells(i - 1, j) End If Cells(i, j).Resize(6, 1).UnMerge Cells(i + 1, j).Resize(5, 1) = Cells(i, j) Next j Next i Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub こんなんではどうでしょうか?m(_ _)m

yakkun2338
質問者

お礼

tom04さん、早速のご連絡ありがとうございます! いつも本当にありがとうございます!! ご教授いただきました方法で実現できました!! 何度も何度もお時間をさいていただきまして本当にありがとうございました。 これから少しづつでもご教授いtだきました様なロジックが組めるように勉強していきたいと思います。 本当にありがとうございました!m(_ _)m

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • FEX2053
  • ベストアンサー率37% (7995/21384)
回答No.1

たぶんよりかっこいいコードがあると思うんですが、私のポリシー として、「後でメンテがしやすい、可能な限り簡単なコード」って のがありまして・・・。 Sub test() Dim DAT_N(7) As Variant Dim i, j As Integer Range("G3").Select Do For i = 0 To 6 If Selection.Offset(0, -i) <> "" Then DAT_N(i + 1) = Selection.Offset(0, -i).Value End If Next For j = -1 To 4 If Selection.Offset(j, 1).Value = "" Then Exit Sub For i = 0 To 6 Selection.Offset(j, -i).Value = DAT_N(i + 1) Next Next Selection.Offset(6).Select Loop End Sub たぶんこれでできると思います。

yakkun2338
質問者

お礼

FEX2053さん、早速のご連絡ありがとうございます! ご教授いただきました方法で実現できました!! この度は素人同然の私にも分かり易いコードのご提示誠にありがとうございました! 本当にありがとうございました!m(_ _)m

すると、全ての回答が全文表示されます。