人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelで指定の列にもしキーワードがあれば、そのキーワードのある行の指定の列に複数範囲のデータを貼り付けたい

4行目のBB列?BE列のデータをコピーします。(?)
そして5行目以下のBF列にもし、空白セルではなく文字列データが入っていた場合。
そのデータが入っている行のBB?BE列に、?をペーストしたいです。

そのような処理をマクロ等で出来たら非常に助かります。
よろしくお願い致します。

※なお、BF列には5行目から55000行ぐらいまでに、空白セルと文字列データが混じって入ってまして、文字列データは「あいうえお」であったり「かきくけこ」であったりと、バラバラです。

●質問者: moon-fondu
●カテゴリ:コンピュータ 学習・教育
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●1500ポイント ベストアンサー

質問の冒頭だと、特定のキーワードを探すような感じですが、

そして5行目以下のBF列にもし、空白セルではなく文字列データが入っていた場合。

というのは、空のセルじゃなければ貼り付け、というふうに読めます。

判定のところ以外は一緒なので、ふたつ用意しました。

こちらは、特定のキーワードを探すイメージ。

Const MAX_ROW = 50000  ' 処理対象の最大行数

Sub copy_bb_be()

 keyword = "あい" ’BF列で探したいキーワード

 look_col = 58  ' BF列
 copy_col = 54  ' BB列
 copy_row = 4
 paste_col = copy_col  ' BB列

  ' BB4:BE4 をコピー
 Range(Cells(copy_row, copy_col), Cells(copy_row, copy_col + 3)).Copy

 last_row = Cells(Rows.Count, look_col).End(xlUp).Row

 For r = 5 To last_row
 If InStr(Cells(r, look_col).Value, keyword) > 0 Then
 Cells(r, paste_col).Select
 ActiveSheet.Paste
 End If
 DoEvents
 If r > MAX_ROW Then  ' 念のため
 Exit For
 End If
 Next

End Sub


こちらは、特定のキーワードを探すのではなく、BF列が空ではないセルだったら貼り付ける場合です。

Const MAX_ROW = 50000  ' 処理対象の最大行数

Function is_blank_cell(c)
 is_blank_cell = IsEmpty(c) Or c.Value = ""
End Function


Sub copy_bb_be()

 look_col = 58  ' BF列
 copy_col = 54  ' BB列
 copy_row = 4
 paste_col = copy_col  ' BB列

  ' BB4:BE4 をコピー
 Range(Cells(copy_row, copy_col), Cells(copy_row, copy_col + 3)).Copy

 last_row = Cells(Rows.Count, look_col).End(xlUp).Row

 For r = 5 To last_row
 If Not is_blank_cell(Cells(r, look_col)) Then
 Cells(r, paste_col).Select
 ActiveSheet.Paste
 End If
 DoEvents
 If r > MAX_ROW Then  ' 念のため
 Exit For
 End If
 Next

End Sub

moon-fonduさんのコメント
うまくできました!ありがとうございました(^^;)
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ