• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定文字を検索し、その行の数字を別のセルへ移す)

エクセルVBAで特定文字を検索し、座標を移動する方法

このQ&Aのポイント
  • エクセルVBAで特定文字を検索し、行の座標を別のセルに移動する方法について教えてください。
  • 具体的には、H列に「:Q」がある行を検索し、該当する行のI,J,K,L列に座標を移動したいです。
  • 移動先の列は必ず「:M」となっており、最終的には「:Q」の行を削除したいです。エクセルは2007を使用しています。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.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を押してマクロを実行する。

n151713m
質問者

お礼

勉強になりました。 ありがとうございました。