- ベストアンサー
エクセルVBAで特定文字を検索し、座標を移動する方法
- エクセルVBAで特定文字を検索し、行の座標を別のセルに移動する方法について教えてください。
- 具体的には、H列に「:Q」がある行を検索し、該当する行のI,J,K,L列に座標を移動したいです。
- 移動先の列は必ず「:M」となっており、最終的には「:Q」の行を削除したいです。エクセルは2007を使用しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
>移動先行のH列は必ず「:M」と記入してあります 簡単のため「:Q」の番地に対応する「:M」の番地は「必ず用意されている」とします。 また「:」の文字や、QやMの「全角半角」は「間違いなくご相談に情報提供されているのと一致して統一できている」とします。 マクロ自体は淡々と「無くなるまで繰り返す」だけの、単純な構造でできます。 手順: ALT+F11を押してVBE画面を開く 挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける sub macro1() dim h as range dim Target as range ’Qのデータを探す set h = range("H:H").find(what:=":Q", lookin:=xlvalues, lookat:=xlwhole) do until h is nothing ’Mの行を探す set target = range("E:E").find(what:=cells(h.row, "E").value, lookin:=xlvalues, lookat:=xlwhole) do until cells(target.row, "H") = ":M" set target = range("E:E").findnext(target) loop ’移動する cells(target.row, "IV").end(xltoleft).offset(0, 1).value = cells(h.row, "A").value cells(target.row, "IV").end(xltoleft).offset(0, 1).value = cells(h.row, "C").value h.entirerow.clearcontents ’または ’h.entirerow.delete shift:=xlshiftup set h = range("H:H").find(what:=":Q", lookin:=xlvalues, lookat:=xlwhole) loop end sub ファイルメニューから終了してエクセルに戻る ALF+F8を押してマクロを実行する。
お礼
勉強になりました。 ありがとうございました。