• ベストアンサー

エクセルのVBAマクロについて

エクセルのVBAマクロについて、添付のような物を考えているのですが、宜しくお願いします。 B3~E15に関数を入れて、TRUE となったデーターを表示 させるまでは出来たのですが、このデーターをF~I列へ上から順に (空白行は詰めて)順次記録して行きたいのです。 B3~E15に表示させるデーターは、別シートから抽出し、 切り替えますので、結果を表示させたら、ボタンを押して記録し、 再度別データーを入れたらその下に記録して行くような仕組み を考えております。 宜しくお願いします。

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

  • ベストアンサー
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

Sub try() Dim r As Range, rr As Range 'もしF3が空白なら If Range("F3").Value = "" Then '書き出す位置はF3に Set rr = Range("F3") Else '空白でなければ書き出す位置はF列の最終行の1つ下 Set rr = Cells(Rows.Count, 6).End(xlUp).Offset(1) End If 'B3~B15を順次検索して For Each r In Range("B3:B115") 'B列に値があれば If r.Value <> "" Then 'B~E列の値をF~I列に上詰めで代入していく rr.Resize(, 4).Value = r.Resize(, 4).Value '書き出したら、書き出すF列を1行下げる Set rr = rr.Offset(1) End If Next Set rr = Nothing End Sub ご参考程度に。

sato35
質問者

お礼

ありがとうございました。 早速試してみます。

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.2

Sub test() Dim i As Long For i = 3 To Range("b65536").End(xlUp).Row If Cells(i, 2).Value <> "" Then Cells(Range("g65536").End(xlUp).Offset(1).Row, 6).Resize(1, 4).Value = Cells(i, 2).Resize(1, 4).Value Next End Sub